)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"bb96d35cc876e7c56e71a9322fb427f97b81f35b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mike Fedosin \u003cmfedosin@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-10-12 22:52:21 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add helper method to obtain image client version"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds a new method in nova/image/glance.py called"},{"line_number":10,"context_line":"_determine_current_version. This helper method shall add the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7a2fa921_46ec538f","line":7,"updated":"2015-10-13 00:34:31.000000000","message":"i suggest prefixing this with glance: it will help reviewers focus attention and get some scope","commit_id":"d902abb7cc207aa70c8cf77eb3c82dd79f0dc48b"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"9f6ca9f1243300c366edff8cff7a0dc0e0b4737d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mike Fedosin \u003cmfedosin@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-10-12 22:52:21 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add helper method to obtain image client version"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds a new method in nova/image/glance.py called"},{"line_number":10,"context_line":"_determine_current_version. This helper method shall add the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7a2fa921_f24af354","line":7,"in_reply_to":"7a2fa921_46ec538f","updated":"2015-10-13 06:38:07.000000000","message":"done","commit_id":"d902abb7cc207aa70c8cf77eb3c82dd79f0dc48b"}],"nova/image/glance.py":[{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"667ec6b751bfab6bcf60b070d3264f735bbd239d","unresolved":false,"context_lines":[{"line_number":156,"context_line":"def _determine_current_version(endpoint):"},{"line_number":157,"context_line":"    \"\"\"Determines the current version of the glance API in use\"\"\""},{"line_number":158,"context_line":"    http_client \u003d  http.HTTPClient(endpoint)"},{"line_number":159,"context_line":"    result \u003d http_client.get(\u0027/versions\u0027)"},{"line_number":160,"context_line":"    if len(result) \u003e 1:"},{"line_number":161,"context_line":"        curr_ver \u003d [x[\u0027id\u0027] for x in result[1]["},{"line_number":162,"context_line":"                       \u0027versions\u0027] if x[\u0027status\u0027] \u003d\u003d \u0027CURRENT\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_7dee6f23","line":159,"updated":"2015-09-10 23:46:45.000000000","message":"what if response would be 300 not 200?","commit_id":"ef1b88b738b8a88c499cdd2228f40a7340b95a3c"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"87f2bf58fe276b8c75a2f4f69412ad4f5a993113","unresolved":false,"context_lines":[{"line_number":156,"context_line":"def _determine_current_version(endpoint):"},{"line_number":157,"context_line":"    \"\"\"Determines the current version of the glance API in use\"\"\""},{"line_number":158,"context_line":"    http_client \u003d  http.HTTPClient(endpoint)"},{"line_number":159,"context_line":"    result \u003d http_client.get(\u0027/versions\u0027)"},{"line_number":160,"context_line":"    if len(result) \u003e 1:"},{"line_number":161,"context_line":"        curr_ver \u003d [x[\u0027id\u0027] for x in result[1]["},{"line_number":162,"context_line":"                       \u0027versions\u0027] if x[\u0027status\u0027] \u003d\u003d \u0027CURRENT\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_a64f0f91","line":159,"in_reply_to":"da20952f_7dee6f23","updated":"2015-09-11 06:12:50.000000000","message":"The response will be 300 and not 200. But currently, the glance client code throws an exception for it that Flapper\u0027s patch addresses. That patch is a per-requisite for this to work as marked in the review comment.","commit_id":"ef1b88b738b8a88c499cdd2228f40a7340b95a3c"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"667ec6b751bfab6bcf60b070d3264f735bbd239d","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    http_client \u003d  http.HTTPClient(endpoint)"},{"line_number":159,"context_line":"    result \u003d http_client.get(\u0027/versions\u0027)"},{"line_number":160,"context_line":"    if len(result) \u003e 1:"},{"line_number":161,"context_line":"        curr_ver \u003d [x[\u0027id\u0027] for x in result[1]["},{"line_number":162,"context_line":"                       \u0027versions\u0027] if x[\u0027status\u0027] \u003d\u003d \u0027CURRENT\u0027]"},{"line_number":163,"context_line":"        if len(curr_ver) \u003e 0:"},{"line_number":164,"context_line":"            return curr_ver[0].split(\u0027.\u0027)[0].strip(\u0027v\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_1d78937d","line":161,"updated":"2015-09-10 23:46:45.000000000","message":"what is result[1]?","commit_id":"ef1b88b738b8a88c499cdd2228f40a7340b95a3c"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"87f2bf58fe276b8c75a2f4f69412ad4f5a993113","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    http_client \u003d  http.HTTPClient(endpoint)"},{"line_number":159,"context_line":"    result \u003d http_client.get(\u0027/versions\u0027)"},{"line_number":160,"context_line":"    if len(result) \u003e 1:"},{"line_number":161,"context_line":"        curr_ver \u003d [x[\u0027id\u0027] for x in result[1]["},{"line_number":162,"context_line":"                       \u0027versions\u0027] if x[\u0027status\u0027] \u003d\u003d \u0027CURRENT\u0027]"},{"line_number":163,"context_line":"        if len(curr_ver) \u003e 0:"},{"line_number":164,"context_line":"            return curr_ver[0].split(\u0027.\u0027)[0].strip(\u0027v\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_864a0b82","line":161,"in_reply_to":"da20952f_1d78937d","updated":"2015-09-11 06:12:50.000000000","message":"result[1] should have the actual response. result[0] should have the response return code.","commit_id":"ef1b88b738b8a88c499cdd2228f40a7340b95a3c"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"231a355be95f6251851d47caec26f5bc8ebe5d7b","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        curr_ver \u003d [x[\u0027id\u0027] for x in result[1]["},{"line_number":162,"context_line":"                       \u0027versions\u0027] if x[\u0027status\u0027] \u003d\u003d \u0027CURRENT\u0027]"},{"line_number":163,"context_line":"        if len(curr_ver) \u003e 0:"},{"line_number":164,"context_line":"            return curr_ver[0].split(\u0027.\u0027)[0].strip(\u0027v\u0027)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"def get_api_servers():"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a2fa921_4488d3e7","line":164,"updated":"2015-10-06 11:01:32.000000000","message":"Maybe it could be more cleaner implementation:\n\ndef _determine_current_version(endpoint):\n\n    \"\"\"Determines the current version of the glance API in use\"\"\"\n\n    http_client \u003d http.HTTPClient(endpoint)\n\n    response, content \u003d http_client.get(\u0027/versions\u0027)\n\n    versions \u003d content[\u0027versions\u0027]\n\n    for version in versions:\n\n        if version[\u0027status\u0027] \u003d\u003d \u0027CURRENT\u0027:\n\n            res \u003d version[\u0027id\u0027]\n\n            return res[1:res.find(\".\")]","commit_id":"f8cc4d6b284734ff312b897d1d9a0d00e0fcd54e"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"f1cd6e8ca06c8d34c7e5b81f7a55d9bd910ee5b9","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        curr_ver \u003d [x[\u0027id\u0027] for x in result[1]["},{"line_number":162,"context_line":"                       \u0027versions\u0027] if x[\u0027status\u0027] \u003d\u003d \u0027CURRENT\u0027]"},{"line_number":163,"context_line":"        if len(curr_ver) \u003e 0:"},{"line_number":164,"context_line":"            return curr_ver[0].split(\u0027.\u0027)[0].strip(\u0027v\u0027)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"def get_api_servers():"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a2fa921_d7957740","line":164,"in_reply_to":"7a2fa921_4488d3e7","updated":"2015-10-06 12:11:42.000000000","message":"done. Got rid of list comprehensions.","commit_id":"f8cc4d6b284734ff312b897d1d9a0d00e0fcd54e"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"065fb1cada3aae9328b9e8c74c3d1d08d9c3f1b7","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    return glanceclient.Client(str(version), endpoint, **params)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"def _determine_current_version(endpoint):"},{"line_number":157,"context_line":"    \"\"\"Determines the current version of the glance API in use\"\"\""},{"line_number":158,"context_line":"    http_client \u003d http.HTTPClient(endpoint)"},{"line_number":159,"context_line":"    response, content \u003d http_client.get(\u0027/versions\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a2fa921_62ceea5b","line":156,"updated":"2015-10-07 11:56:32.000000000","message":"nit, this gets the *major* version, you may want to state that clearly in the function name and/or docstring.","commit_id":"09d66ebb82d9dee362e6f60e7ebe172e06decbbd"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"bb96d35cc876e7c56e71a9322fb427f97b81f35b","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    return glanceclient.Client(str(version), endpoint, **params)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"def _determine_curr_major_version(endpoint):"},{"line_number":157,"context_line":"    \"\"\"Determines the current major version of the glance API in use\"\"\""},{"line_number":158,"context_line":"    http_client \u003d http.HTTPClient(endpoint)"},{"line_number":159,"context_line":"    response, content \u003d http_client.get(\u0027/versions\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a2fa921_463f73d6","line":156,"updated":"2015-10-13 00:34:31.000000000","message":"consider _get_current_version(endpoint)\nthen from that the called can get the major version.\nmaybe this is too picky","commit_id":"d902abb7cc207aa70c8cf77eb3c82dd79f0dc48b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"bb96d35cc876e7c56e71a9322fb427f97b81f35b","unresolved":false,"context_lines":[{"line_number":160,"context_line":"    for version in content[\u0027versions\u0027]:"},{"line_number":161,"context_line":"        if version[\u0027status\u0027] \u003d\u003d \u0027CURRENT\u0027:"},{"line_number":162,"context_line":"            res \u003d version[\u0027id\u0027]"},{"line_number":163,"context_line":"            return res[1:res.find(\".\")]"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"def get_api_servers():"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a2fa921_864eeb94","line":163,"updated":"2015-10-13 00:34:31.000000000","message":"is there any case where CURRENT would not appear?","commit_id":"d902abb7cc207aa70c8cf77eb3c82dd79f0dc48b"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"9f6ca9f1243300c366edff8cff7a0dc0e0b4737d","unresolved":false,"context_lines":[{"line_number":160,"context_line":"    for version in content[\u0027versions\u0027]:"},{"line_number":161,"context_line":"        if version[\u0027status\u0027] \u003d\u003d \u0027CURRENT\u0027:"},{"line_number":162,"context_line":"            res \u003d version[\u0027id\u0027]"},{"line_number":163,"context_line":"            return res[1:res.find(\".\")]"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"def get_api_servers():"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a2fa921_ef2e8ca4","line":163,"in_reply_to":"7a2fa921_864eeb94","updated":"2015-10-13 06:38:07.000000000","message":"If CURRENT doesn\u0027t appear then I guess we would have a bigger issue to deal with. Mostly the glance client might be hosed/not working, which I feel is a different problem all together. \n\nmfedosin/flapper87: your thoughts?","commit_id":"d902abb7cc207aa70c8cf77eb3c82dd79f0dc48b"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"05ac59831fc82069e57cf5337a3dcb4c4930bdcf","unresolved":false,"context_lines":[{"line_number":160,"context_line":"    for version in content[\u0027versions\u0027]:"},{"line_number":161,"context_line":"        if version[\u0027status\u0027] \u003d\u003d \u0027CURRENT\u0027:"},{"line_number":162,"context_line":"            res \u003d version[\u0027id\u0027]"},{"line_number":163,"context_line":"            return res[1:res.find(\".\")]"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"def get_api_servers():"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a2fa921_afedf48f","line":163,"in_reply_to":"7a2fa921_864eeb94","updated":"2015-10-13 06:26:00.000000000","message":"Nope, it is always there.","commit_id":"d902abb7cc207aa70c8cf77eb3c82dd79f0dc48b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d79435516a1598f191f00be8e0848bf4dff7c62d","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"def _determine_curr_major_version(endpoint):"},{"line_number":159,"context_line":"    \"\"\"Determines the current major version of the glance API in use\"\"\""},{"line_number":160,"context_line":"    http_client \u003d http.HTTPClient(endpoint)"},{"line_number":161,"context_line":"    try:"},{"line_number":162,"context_line":"        response, content \u003d http_client.get(\u0027/versions\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a26ad4f_eb4bde57","line":159,"updated":"2015-10-28 21:30:37.000000000","message":"How about a quick docstring describing the returned value including the fact that it\u0027s returning a string, not an integer -- and the fact that it can be None.","commit_id":"6c62f187c6fe384a36dd75cd9ee74ce8168702e8"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d79435516a1598f191f00be8e0848bf4dff7c62d","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                res \u003d version[\u0027id\u0027]"},{"line_number":166,"context_line":"                res \u003d res[1:res.find(\".\")]"},{"line_number":167,"context_line":"                return res if res in supported_glance_versions else None"},{"line_number":168,"context_line":"    except Exception:"},{"line_number":169,"context_line":"        return None"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1a26ad4f_2b42363f","line":168,"updated":"2015-10-28 21:30:37.000000000","message":"We generally like to do a LOG.error() in a generic except Exception: block. Please do add one here.","commit_id":"6c62f187c6fe384a36dd75cd9ee74ce8168702e8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d6c9a02a219223c6de6ef3e53f8b75998baeb252","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                res \u003d res[1:res.find(\".\")]"},{"line_number":167,"context_line":"                return res if res in supported_glance_versions else None"},{"line_number":168,"context_line":"    except Exception:"},{"line_number":169,"context_line":"        return None"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"def get_api_servers():"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a29b11f_ef5eba75","line":169,"updated":"2015-10-18 10:57:18.000000000","message":"by default None is returned. You do not need to do this explicitly","commit_id":"6c62f187c6fe384a36dd75cd9ee74ce8168702e8"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"67d47efcc08fcb0902f4da42b4b380ee6532d9d1","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                res \u003d res[1:res.find(\".\")]"},{"line_number":167,"context_line":"                return res if res in supported_glance_versions else None"},{"line_number":168,"context_line":"    except Exception:"},{"line_number":169,"context_line":"        return None"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"def get_api_servers():"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a26ad4f_bd3a28cc","line":169,"in_reply_to":"1a26ad4f_87b91f31","updated":"2015-10-28 02:15:39.000000000","message":"While I agree with you, I believe we should let this in \"for now\" whilst it\u0027s added to glanceclient. One of the things that blocked the previous work during the Kilo cycle were things being added to glanceclient and the fact that they weren\u0027t available right away.\n\nCan we agree on removing this code as soon as there\u0027s a glanceclient release with it? Happy to have a bug filed against glanceclient. The glance team will take care of this.","commit_id":"6c62f187c6fe384a36dd75cd9ee74ce8168702e8"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ed2937d392725fcc3862ed46e3265977fcfea990","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                res \u003d res[1:res.find(\".\")]"},{"line_number":167,"context_line":"                return res if res in supported_glance_versions else None"},{"line_number":168,"context_line":"    except Exception:"},{"line_number":169,"context_line":"        return None"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"def get_api_servers():"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a26ad4f_87b91f31","line":169,"in_reply_to":"3a29b11f_af9b2d17","updated":"2015-10-28 01:00:59.000000000","message":"Most of the above code should actually be in the python-glanceclient package, not here. The Nova code should be able to call glanceclient with a URI and get the latest supported Glance API version.","commit_id":"6c62f187c6fe384a36dd75cd9ee74ce8168702e8"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"b31af9c7a3ad74c1bd67e50309c23e2881933479","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                res \u003d res[1:res.find(\".\")]"},{"line_number":167,"context_line":"                return res if res in supported_glance_versions else None"},{"line_number":168,"context_line":"    except Exception:"},{"line_number":169,"context_line":"        return None"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"def get_api_servers():"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a29b11f_af9b2d17","line":169,"in_reply_to":"3a29b11f_ef5eba75","updated":"2015-10-22 05:37:51.000000000","message":"FWIW, I find this semantically correct. L167 may return None if the parsed version is not among the ones supported, which means consumers of this function have to handle this case. Being explicit here means that on exceptions, None is returned on purpose and it has to be handled.\n\nMy point is, it\u0027s just semantics. That said, you\u0027re right. None is returned anyway and I\u0027m happy either way.","commit_id":"6c62f187c6fe384a36dd75cd9ee74ce8168702e8"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c2c27c4294b8e3787653bac1e57c96a974d72f45","unresolved":false,"context_lines":[{"line_number":81,"context_line":"CONF.import_opt(\u0027auth_strategy\u0027, \u0027nova.api.auth\u0027)"},{"line_number":82,"context_line":"CONF.import_opt(\u0027my_ip\u0027, \u0027nova.netconf\u0027)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"supported_glance_versions \u003d (\u00271\u0027, \u00272\u0027)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def generate_glance_url():"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa80f949_f07b678a","line":84,"updated":"2015-11-06 13:30:57.000000000","message":"How about using integers instead of strings?","commit_id":"32ea9160f3bebd75830737091b67e75e49327170"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"12715f9a24753944d3317e722f8da131468030b5","unresolved":false,"context_lines":[{"line_number":81,"context_line":"CONF.import_opt(\u0027auth_strategy\u0027, \u0027nova.api.auth\u0027)"},{"line_number":82,"context_line":"CONF.import_opt(\u0027my_ip\u0027, \u0027nova.netconf\u0027)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"supported_glance_versions \u003d (\u00271\u0027, \u00272\u0027)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def generate_glance_url():"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa80f949_679a5470","line":84,"in_reply_to":"fa80f949_f07b678a","updated":"2015-11-06 16:43:40.000000000","message":"Done","commit_id":"32ea9160f3bebd75830737091b67e75e49327170"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c2c27c4294b8e3787653bac1e57c96a974d72f45","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"       :returns:"},{"line_number":162,"context_line":"        - version: Discovered glance API version"},{"line_number":163,"context_line":"        - None: If there was a failure in determining the version"},{"line_number":164,"context_line":"    \"\"\""},{"line_number":165,"context_line":"    http_client \u003d http.HTTPClient(endpoint)"},{"line_number":166,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa80f949_108f0b76","line":163,"updated":"2015-11-06 13:30:57.000000000","message":"How about this instead?\n\n :returns Integer version number or None if not able to determine version","commit_id":"32ea9160f3bebd75830737091b67e75e49327170"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"12715f9a24753944d3317e722f8da131468030b5","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"       :returns:"},{"line_number":162,"context_line":"        - version: Discovered glance API version"},{"line_number":163,"context_line":"        - None: If there was a failure in determining the version"},{"line_number":164,"context_line":"    \"\"\""},{"line_number":165,"context_line":"    http_client \u003d http.HTTPClient(endpoint)"},{"line_number":166,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa80f949_479dd064","line":163,"in_reply_to":"fa80f949_108f0b76","updated":"2015-11-06 16:43:40.000000000","message":"Done","commit_id":"32ea9160f3bebd75830737091b67e75e49327170"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c2c27c4294b8e3787653bac1e57c96a974d72f45","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        for version in content[\u0027versions\u0027]:"},{"line_number":169,"context_line":"            if version[\u0027status\u0027] \u003d\u003d \u0027CURRENT\u0027:"},{"line_number":170,"context_line":"                res \u003d version[\u0027id\u0027]"},{"line_number":171,"context_line":"                res \u003d res[1:res.find(\".\")]"},{"line_number":172,"context_line":"                return res if res in supported_glance_versions else None"},{"line_number":173,"context_line":"    except Exception:"},{"line_number":174,"context_line":"        LOG.error(_LE(\"Unable to determine the glance API version\"))"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa80f949_b012bf07","line":171,"updated":"2015-11-06 13:30:57.000000000","message":"A comment indicating what the string being processed looks like would be useful.\n\nFor instance:\n\n # The \u0027id\u0027 value looks like \"v2.2\", so grab the major version number","commit_id":"32ea9160f3bebd75830737091b67e75e49327170"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"12715f9a24753944d3317e722f8da131468030b5","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        for version in content[\u0027versions\u0027]:"},{"line_number":169,"context_line":"            if version[\u0027status\u0027] \u003d\u003d \u0027CURRENT\u0027:"},{"line_number":170,"context_line":"                res \u003d version[\u0027id\u0027]"},{"line_number":171,"context_line":"                res \u003d res[1:res.find(\".\")]"},{"line_number":172,"context_line":"                return res if res in supported_glance_versions else None"},{"line_number":173,"context_line":"    except Exception:"},{"line_number":174,"context_line":"        LOG.error(_LE(\"Unable to determine the glance API version\"))"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa80f949_278f6c2b","line":171,"in_reply_to":"fa80f949_b012bf07","updated":"2015-11-06 16:43:40.000000000","message":"Done","commit_id":"32ea9160f3bebd75830737091b67e75e49327170"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c2c27c4294b8e3787653bac1e57c96a974d72f45","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            if version[\u0027status\u0027] \u003d\u003d \u0027CURRENT\u0027:"},{"line_number":170,"context_line":"                res \u003d version[\u0027id\u0027]"},{"line_number":171,"context_line":"                res \u003d res[1:res.find(\".\")]"},{"line_number":172,"context_line":"                return res if res in supported_glance_versions else None"},{"line_number":173,"context_line":"    except Exception:"},{"line_number":174,"context_line":"        LOG.error(_LE(\"Unable to determine the glance API version\"))"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa80f949_10b86b29","line":172,"updated":"2015-11-06 13:30:57.000000000","message":"Apply int(res) to return an integer, not a string...","commit_id":"32ea9160f3bebd75830737091b67e75e49327170"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"12715f9a24753944d3317e722f8da131468030b5","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            if version[\u0027status\u0027] \u003d\u003d \u0027CURRENT\u0027:"},{"line_number":170,"context_line":"                res \u003d version[\u0027id\u0027]"},{"line_number":171,"context_line":"                res \u003d res[1:res.find(\".\")]"},{"line_number":172,"context_line":"                return res if res in supported_glance_versions else None"},{"line_number":173,"context_line":"    except Exception:"},{"line_number":174,"context_line":"        LOG.error(_LE(\"Unable to determine the glance API version\"))"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa80f949_078a681b","line":172,"in_reply_to":"fa80f949_10b86b29","updated":"2015-11-06 16:43:40.000000000","message":"Done","commit_id":"32ea9160f3bebd75830737091b67e75e49327170"}],"nova/tests/unit/image/test_glance.py":[{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"4b8cae3210d58439c0d2f80cda66ec14c7b39b05","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from six.moves import StringIO"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import glanceclient.exc"},{"line_number":21,"context_line":"from glanceclient.common import http"},{"line_number":22,"context_line":"import mock"},{"line_number":23,"context_line":"from oslo_config import cfg"},{"line_number":24,"context_line":"from oslo_utils import netutils"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_8863fab0","line":21,"updated":"2015-09-11 03:34:04.000000000","message":"line 21 should be put before line 20 to avoid pep8 failure.","commit_id":"ef1b88b738b8a88c499cdd2228f40a7340b95a3c"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"4b8cae3210d58439c0d2f80cda66ec14c7b39b05","unresolved":false,"context_lines":[{"line_number":435,"context_line":"            {u\u0027status\u0027: u\u0027SUPPORTED\u0027, u\u0027id\u0027: u\u0027v1.0\u0027}]})"},{"line_number":436,"context_line":"        http_client_mock.return_value \u003d result"},{"line_number":437,"context_line":"        supported_ver \u003d glance._determine_current_version(\u0027abc\u0027)"},{"line_number":438,"context_line":"        self.assertEquals(\"2\", supported_ver)"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"class TestDownloadNoDirectUri(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_28542ec4","line":438,"updated":"2015-09-11 03:34:04.000000000","message":"should use self.assertEqual","commit_id":"ef1b88b738b8a88c499cdd2228f40a7340b95a3c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c2c27c4294b8e3787653bac1e57c96a974d72f45","unresolved":false,"context_lines":[{"line_number":429,"context_line":""},{"line_number":430,"context_line":"    @mock.patch.object(glanceclient.common.http.HTTPClient, \u0027get\u0027)"},{"line_number":431,"context_line":"    def test_determine_curr_major_version(self, http_client_mock):"},{"line_number":432,"context_line":"        result \u003d (\"abc\", {\u0027versions\u0027: ["},{"line_number":433,"context_line":"            {\u0027status\u0027: \u0027CURRENT\u0027, \u0027id\u0027: \u0027v2.3\u0027},"},{"line_number":434,"context_line":"            {\u0027status\u0027: \u0027SUPPORTED\u0027, \u0027id\u0027: \u0027v1.0\u0027}]})"},{"line_number":435,"context_line":"        http_client_mock.return_value \u003d result"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa80f949_109e2b63","line":432,"updated":"2015-11-06 13:30:57.000000000","message":"Instead of \"abc\", please use a real URI","commit_id":"32ea9160f3bebd75830737091b67e75e49327170"}]}
