)]}'
{"glanceclient/common/utils.py":[{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"a80f6ac3f6432b673cdeeda8550f8f17810450e9","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    latest customized max column width."},{"line_number":134,"context_line":"    \"\"\""},{"line_number":135,"context_line":"    max_width \u003d 80"},{"line_number":136,"context_line":"    env_max_width \u003d os.environ.get(\u0027PT_MAX_WIDTH\u0027)"},{"line_number":137,"context_line":"    if env_max_width:"},{"line_number":138,"context_line":"        try:"},{"line_number":139,"context_line":"            max_width \u003d int(env_max_width)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BNDk%3D","line":136,"updated":"2013-11-29 07:54:27.000000000","message":"adding a \"GLANCE\" or \"OPENSTACK\" prefix?","commit_id":"ea371baac4f2ac3a32894e49c64b8e0f1c3c10eb"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"ea0e2395483cd672cd901b8486fc8733e0f74d29","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    latest customized max column width."},{"line_number":134,"context_line":"    \"\"\""},{"line_number":135,"context_line":"    max_width \u003d 80"},{"line_number":136,"context_line":"    env_max_width \u003d os.environ.get(\u0027PT_MAX_WIDTH\u0027)"},{"line_number":137,"context_line":"    if env_max_width:"},{"line_number":138,"context_line":"        try:"},{"line_number":139,"context_line":"            max_width \u003d int(env_max_width)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BM48%3D","line":136,"in_reply_to":"AAAATn%2F%2BNDk%3D","updated":"2013-11-29 08:59:21.000000000","message":"Make sense. Will fix in next PS.","commit_id":"ea371baac4f2ac3a32894e49c64b8e0f1c3c10eb"},{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"1dc1e44907c2236590b87f5408b8871decc61c8b","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    latest customized max column width."},{"line_number":134,"context_line":"    \"\"\""},{"line_number":135,"context_line":"    max_width \u003d 80"},{"line_number":136,"context_line":"    env_max_width \u003d os.environ.get(\u0027GLANCE_PT_MAX_WIDTH\u0027)"},{"line_number":137,"context_line":"    if env_max_width:"},{"line_number":138,"context_line":"        try:"},{"line_number":139,"context_line":"            max_width \u003d int(env_max_width)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F8%2FWw%3D","line":136,"updated":"2013-12-18 00:30:22.000000000","message":"I just wonder if this is something that should be made more OS-consistent from the start? OS_PT_MAX_WIDTH? we may need to coordinate with some general client folks to answer that question.","commit_id":"f8ac098fa4badb2cb8aed267acc4a28906a0ae0c"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"6eb02fac22e8da0349e36ece094e0245c8103cdc","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    latest customized max column width."},{"line_number":134,"context_line":"    \"\"\""},{"line_number":135,"context_line":"    max_width \u003d 80"},{"line_number":136,"context_line":"    env_max_width \u003d os.environ.get(\u0027GLANCE_PT_MAX_WIDTH\u0027)"},{"line_number":137,"context_line":"    if env_max_width:"},{"line_number":138,"context_line":"        try:"},{"line_number":139,"context_line":"            max_width \u003d int(env_max_width)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F82KM%3D","line":136,"updated":"2013-12-19 16:12:33.000000000","message":"keystoneclient implemented something similar in the token-get command as --wrap \u003cint\u003e.  The wrapping works against individual string lengths, specifically for long tokens.  I like passing it off to prettytable better though.\n\nFor a name, we should use something a bit more generic such as the OpenGroup standard COLUMNS.  Personally I prefer WIDTH or LINE_WIDTH after doing a survey of commands and tools, there is no consensus...\n\nAlso, the setting of the value from the environment or command line shouldn\u0027t be here, since this is a global value it should be in the top-level shell.py.","commit_id":"f8ac098fa4badb2cb8aed267acc4a28906a0ae0c"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"ac116f5ff6038e6e1c5d15019ccb0b5d7c1a2599","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    latest customized max column width."},{"line_number":134,"context_line":"    \"\"\""},{"line_number":135,"context_line":"    max_width \u003d 80"},{"line_number":136,"context_line":"    env_max_width \u003d os.environ.get(\u0027GLANCE_PT_MAX_WIDTH\u0027)"},{"line_number":137,"context_line":"    if env_max_width:"},{"line_number":138,"context_line":"        try:"},{"line_number":139,"context_line":"            max_width \u003d int(env_max_width)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F813w%3D","line":136,"in_reply_to":"AAAATn%2F82KM%3D","updated":"2013-12-19 16:54:05.000000000","message":"I agree with Dean\u0027s comments here. I think we should:\n\n1) Have a common name\n2) Move this to shell.py and make it LINE_WIDTH. it looks like it could be used somewhere else.","commit_id":"f8ac098fa4badb2cb8aed267acc4a28906a0ae0c"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"1c3373b6477dc03156ca4f099fc92450d226de50","unresolved":false,"context_lines":[{"line_number":122,"context_line":"def print_dict(d, max_column_width\u003d80):"},{"line_number":123,"context_line":"    pt \u003d prettytable.PrettyTable([\u0027Property\u0027, \u0027Value\u0027], caching\u003dFalse)"},{"line_number":124,"context_line":"    pt.align \u003d \u0027l\u0027"},{"line_number":125,"context_line":"    pt.max_width \u003d max_column_width"},{"line_number":126,"context_line":"    [pt.add_row(list(r)) for r in d.iteritems()]"},{"line_number":127,"context_line":"    print(strutils.safe_encode(pt.get_string(sortby\u003d\u0027Property\u0027)))"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2F%2FX4%3D","line":125,"updated":"2014-01-04 17:03:26.000000000","message":"Can PrettyTable be able to handle an illegal max_width option? Do we need to check it in upper shell interface code? Or do an ignoring at here when we get an illegal option?","commit_id":"682026a22d442504d5c69d1b859827cc93c4a20f"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"a5eb12ce4fe65c754ea669d858f428730e880ef7","unresolved":false,"context_lines":[{"line_number":122,"context_line":"def print_dict(d, max_column_width\u003d80):"},{"line_number":123,"context_line":"    pt \u003d prettytable.PrettyTable([\u0027Property\u0027, \u0027Value\u0027], caching\u003dFalse)"},{"line_number":124,"context_line":"    pt.align \u003d \u0027l\u0027"},{"line_number":125,"context_line":"    pt.max_width \u003d max_column_width"},{"line_number":126,"context_line":"    [pt.add_row(list(r)) for r in d.iteritems()]"},{"line_number":127,"context_line":"    print(strutils.safe_encode(pt.get_string(sortby\u003d\u0027Property\u0027)))"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2F8dU%3D","line":125,"in_reply_to":"AAAAUH%2F%2F%2FX4%3D","updated":"2014-01-06 13:18:33.000000000","message":"Yes, PrettyTable will take care the invalid value, such negative value. So I don\u0027t think it\u0027s necessary to check it.","commit_id":"682026a22d442504d5c69d1b859827cc93c4a20f"}],"glanceclient/v1/shell.py":[{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"73d6c50d2045905caa758b69482e797b8487bf8c","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    columns \u003d [\u0027ID\u0027, \u0027Name\u0027, \u0027Disk Format\u0027, \u0027Container Format\u0027,"},{"line_number":107,"context_line":"               \u0027Size\u0027, \u0027Status\u0027]"},{"line_number":108,"context_line":"    utils.print_list(images, columns)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def _image_show(image, human_readable\u003dFalse, max_column_width\u003d80):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAT3%2F%2Fzvw%3D","line":108,"updated":"2013-12-31 04:12:18.000000000","message":"I think we need add a same argument \"--max-column-width\" to this shell interface like what you did for \"image-show\" if you think print_list() change in common/utils.py is related and essential for this patch.\n\nthere also have some shall interfaces involved print_list() in v1 and v2, I think we need adding \"--max-column-width\" to them all if you think the change on print_list() is necessary.\n\nOr revert it since no functional code need that change.","commit_id":"6cc146ec655d45cf6b79e78378797019544aad6b"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"57af7ba19e1c659f2a78bb8aae04c7f7a9851e42","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    columns \u003d [\u0027ID\u0027, \u0027Name\u0027, \u0027Disk Format\u0027, \u0027Container Format\u0027,"},{"line_number":107,"context_line":"               \u0027Size\u0027, \u0027Status\u0027]"},{"line_number":108,"context_line":"    utils.print_list(images, columns)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def _image_show(image, human_readable\u003dFalse, max_column_width\u003d80):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F%2FzM%3D","line":108,"in_reply_to":"AAAAT3%2F%2FwUU%3D","updated":"2014-01-04 07:55:05.000000000","message":"@zhiyan, I\u0027m OK to revert the change of print_list. Submitted in next PS. Thanks.","commit_id":"6cc146ec655d45cf6b79e78378797019544aad6b"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"832b26a7692e55a4e70d4b41fc199d1977de3d6d","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    columns \u003d [\u0027ID\u0027, \u0027Name\u0027, \u0027Disk Format\u0027, \u0027Container Format\u0027,"},{"line_number":107,"context_line":"               \u0027Size\u0027, \u0027Status\u0027]"},{"line_number":108,"context_line":"    utils.print_list(images, columns)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def _image_show(image, human_readable\u003dFalse, max_column_width\u003d80):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAT3%2F%2FwUU%3D","line":108,"in_reply_to":"AAAAT3%2F%2Fzts%3D","updated":"2014-01-02 10:07:06.000000000","message":"@flwang, firstly I have not checked other api calls whether they have possible to print long line. Second, from your feedback, I believe the change you did in print_list() is unrelated with this bug fix/patch, and you know we should just do the related things in a self-containing patch only, and do the future code change in the future change when we really need that. (but I\u0027m little confused since base on your feedback, if only image-show involve max-column-width, why we need do the change in print_list()? anyway maybe we really need that in future, so again, I\u0027d say let\u0027s do/add that be requirement-driven.","commit_id":"6cc146ec655d45cf6b79e78378797019544aad6b"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"2aec4c64e81d0be8ae64fb8640c280890f8e77b8","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    columns \u003d [\u0027ID\u0027, \u0027Name\u0027, \u0027Disk Format\u0027, \u0027Container Format\u0027,"},{"line_number":107,"context_line":"               \u0027Size\u0027, \u0027Status\u0027]"},{"line_number":108,"context_line":"    utils.print_list(images, columns)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def _image_show(image, human_readable\u003dFalse, max_column_width\u003d80):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAT3%2F%2Fzts%3D","line":108,"in_reply_to":"AAAAT3%2F%2Fzvw%3D","updated":"2013-12-31 05:07:56.000000000","message":"zhiyan: thanks for the comments. Actually, I have considered that. I only updated the image_show since it\u0027s the only possible method printing long line. Meanwhile, I add the max_column_width to print_list so as to support some potential/coming changes.","commit_id":"6cc146ec655d45cf6b79e78378797019544aad6b"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"1c3373b6477dc03156ca4f099fc92450d226de50","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    for (k, v) in info.pop(\u0027properties\u0027).iteritems():"},{"line_number":117,"context_line":"        info[\u0027Property \\\u0027%s\\\u0027\u0027 % k] \u003d v"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    utils.print_dict(info, max_column_width)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"def _set_data_field(fields, args):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2F%2FYI%3D","line":119,"updated":"2014-01-04 17:03:26.000000000","message":"nit: I prefer use this way to pass new named argument into the function: \"max_column_width\u003dmax_column_width\"","commit_id":"682026a22d442504d5c69d1b859827cc93c4a20f"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"a5eb12ce4fe65c754ea669d858f428730e880ef7","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    for (k, v) in info.pop(\u0027properties\u0027).iteritems():"},{"line_number":117,"context_line":"        info[\u0027Property \\\u0027%s\\\u0027\u0027 % k] \u003d v"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    utils.print_dict(info, max_column_width)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"def _set_data_field(fields, args):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2F8dQ%3D","line":119,"in_reply_to":"AAAAUH%2F%2F%2FYI%3D","updated":"2014-01-06 13:18:33.000000000","message":"Done.","commit_id":"682026a22d442504d5c69d1b859827cc93c4a20f"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"1c3373b6477dc03156ca4f099fc92450d226de50","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    \"\"\"Describe a specific image.\"\"\""},{"line_number":134,"context_line":"    image_id \u003d utils.find_resource(gc.images, args.image).id"},{"line_number":135,"context_line":"    image \u003d gc.images.get(image_id)"},{"line_number":136,"context_line":"    _image_show(image, args.human_readable, int(args.max_column_width))"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"@utils.arg(\u0027--file\u0027, metavar\u003d\u0027\u003cFILE\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2F%2FX8%3D","line":136,"updated":"2014-01-04 17:03:26.000000000","message":"nit: I prefer use this way to pass new named argument into the function: \"max_column_width\u003dint(args.max_column_width)\".\n\nAnd what about also do this on \"human_readable\" argument?","commit_id":"682026a22d442504d5c69d1b859827cc93c4a20f"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"a5eb12ce4fe65c754ea669d858f428730e880ef7","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    \"\"\"Describe a specific image.\"\"\""},{"line_number":134,"context_line":"    image_id \u003d utils.find_resource(gc.images, args.image).id"},{"line_number":135,"context_line":"    image \u003d gc.images.get(image_id)"},{"line_number":136,"context_line":"    _image_show(image, args.human_readable, int(args.max_column_width))"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"@utils.arg(\u0027--file\u0027, metavar\u003d\u0027\u003cFILE\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2F8bs%3D","line":136,"in_reply_to":"AAAAUH%2F%2F%2FX8%3D","updated":"2014-01-06 13:18:33.000000000","message":"I would say the change of human_readable is unrelated to this issue :)","commit_id":"682026a22d442504d5c69d1b859827cc93c4a20f"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"unresolved":false,"context_lines":[{"line_number":133,"context_line":"    \"\"\"Describe a specific image.\"\"\""},{"line_number":134,"context_line":"    image_id \u003d utils.find_resource(gc.images, args.image).id"},{"line_number":135,"context_line":"    image \u003d gc.images.get(image_id)"},{"line_number":136,"context_line":"    _image_show(image, args.human_readable, int(args.max_column_width))"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"@utils.arg(\u0027--file\u0027, metavar\u003d\u0027\u003cFILE\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2F7aA%3D","line":136,"in_reply_to":"AAAAUH%2F%2F8bs%3D","updated":"2014-01-06 17:09:41.000000000","message":";) fair enough.","commit_id":"682026a22d442504d5c69d1b859827cc93c4a20f"}],"glanceclient/v2/shell.py":[{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"1c3373b6477dc03156ca4f099fc92450d226de50","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    image \u003d gc.images.get(args.id)"},{"line_number":126,"context_line":"    ignore \u003d [\u0027self\u0027, \u0027access\u0027, \u0027file\u0027, \u0027schema\u0027]"},{"line_number":127,"context_line":"    image \u003d dict([item for item in image.iteritems() if item[0] not in ignore])"},{"line_number":128,"context_line":"    utils.print_dict(image, int(args.max_column_width))"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"@utils.arg(\u0027--image-id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027, required\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2F%2FYA%3D","line":128,"updated":"2014-01-04 17:03:26.000000000","message":"nit: I prefer use this way to pass new named argument into the function: \"max_column_width\u003dint(args.max_column_width)\"","commit_id":"682026a22d442504d5c69d1b859827cc93c4a20f"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"a5eb12ce4fe65c754ea669d858f428730e880ef7","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    image \u003d gc.images.get(args.id)"},{"line_number":126,"context_line":"    ignore \u003d [\u0027self\u0027, \u0027access\u0027, \u0027file\u0027, \u0027schema\u0027]"},{"line_number":127,"context_line":"    image \u003d dict([item for item in image.iteritems() if item[0] not in ignore])"},{"line_number":128,"context_line":"    utils.print_dict(image, int(args.max_column_width))"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"@utils.arg(\u0027--image-id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027, required\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2F8bk%3D","line":128,"in_reply_to":"AAAAUH%2F%2F%2FYA%3D","updated":"2014-01-06 13:18:33.000000000","message":"Done","commit_id":"682026a22d442504d5c69d1b859827cc93c4a20f"}]}
