)]}'
{"sushy/connector.py":[{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"d06164b6ac2686492ca6bdc220c0da3640c27bbd","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            except requests.ConnectionError as e:"},{"line_number":71,"context_line":"                raise exceptions.ConnectionError(url\u003durl, error\u003de)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"            LOG.debug(\u0027HTTP %(method)s request at %(url)s returned status \u0027"},{"line_number":74,"context_line":"                      \u0027code: %(code)d\u0027,"},{"line_number":75,"context_line":"                      {\u0027method\u0027: method, \u0027url\u0027: url,"},{"line_number":76,"context_line":"                       \u0027code\u0027: response.status_code})"},{"line_number":77,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_e605b212","line":74,"range":{"start_line":73,"start_character":22,"end_line":74,"end_character":39},"updated":"2017-05-10 09:27:07.000000000","message":"IMHO I think its a better UX to have the log statements formatted as below (instead of full English statements in this case):\n\nFor HTTP request: (see l64 logging for existing Http Request method)\n\n    \u0027\\n\\tHTTP REQUEST: %(method)s\u0027\n    \u0027\\n\\tPATH: %(url)s\u0027\n    \u0027\\n\\tHEADERS: %(headers)s\u0027\n    \u0027\\n\\tBODY: %(data)s\u0027\n    \u0027\\n\u0027\n\n~ly, for HTTP response:\n\n    \u0027\\n\\tHTTP RESPONSE for %(url)s\u0027\n    \u0027\\n\\tSTATUS CODE: %(code)s\u0027\n    \u0027\\n\u0027\n\nwdyt?","commit_id":"9abfe5a2ef75bceac26d638c96f53a704ce4e4b8"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"80562fa940596c887aa04d3f7ed50c08b835ecca","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            except requests.ConnectionError as e:"},{"line_number":71,"context_line":"                raise exceptions.ConnectionError(url\u003durl, error\u003de)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"            LOG.debug(\u0027HTTP %(method)s request at %(url)s returned status \u0027"},{"line_number":74,"context_line":"                      \u0027code: %(code)d\u0027,"},{"line_number":75,"context_line":"                      {\u0027method\u0027: method, \u0027url\u0027: url,"},{"line_number":76,"context_line":"                       \u0027code\u0027: response.status_code})"},{"line_number":77,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_948f1f74","line":74,"range":{"start_line":73,"start_character":22,"end_line":74,"end_character":39},"in_reply_to":"3f044301_e605b212","updated":"2017-05-11 08:39:31.000000000","message":"I agree that we could use a more formal structure. I\u0027m not sure separating method from URL is beneficial though. Lemme play with it and see how it looks.","commit_id":"9abfe5a2ef75bceac26d638c96f53a704ce4e4b8"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"70bbef8775ef2f37e73fac86a323df76b6c2765d","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            except requests.ConnectionError as e:"},{"line_number":71,"context_line":"                raise exceptions.ConnectionError(url\u003durl, error\u003de)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"            if response.status_code \u003e\u003d 400:"},{"line_number":74,"context_line":"                exceptions.raise_for_response(method, url, response)"},{"line_number":75,"context_line":"            else:"},{"line_number":76,"context_line":"                LOG.debug(\u0027HTTP response for %(method)s %(url)s: \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_da0b8627","line":73,"range":{"start_line":73,"start_character":12,"end_line":73,"end_character":43},"updated":"2017-05-11 18:14:43.000000000","message":"``if``-checking not required, I suppose. Condition already handled inside ``exceptions.raise_for_response``.\n\n    exceptions.raise_for_response(method, url, response)\n    LOG.debug(...)  # in case of success (code \u003c 400)","commit_id":"ca677df266c06ae9d4dc046319e698d1a0bf0d7b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b193e9e4f80b27d65c1a15d658bae4886eaaf5e","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            except requests.ConnectionError as e:"},{"line_number":71,"context_line":"                raise exceptions.ConnectionError(url\u003durl, error\u003de)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"            if response.status_code \u003e\u003d 400:"},{"line_number":74,"context_line":"                exceptions.raise_for_response(method, url, response)"},{"line_number":75,"context_line":"            else:"},{"line_number":76,"context_line":"                LOG.debug(\u0027HTTP response for %(method)s %(url)s: \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_9c1f2f5a","line":73,"range":{"start_line":73,"start_character":12,"end_line":73,"end_character":43},"in_reply_to":"3f044301_da0b8627","updated":"2017-05-12 12:17:00.000000000","message":"Done","commit_id":"ca677df266c06ae9d4dc046319e698d1a0bf0d7b"}],"sushy/exceptions.py":[{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"70bbef8775ef2f37e73fac86a323df76b6c2765d","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    detail \u003d None"},{"line_number":66,"context_line":"    \"\"\"Error message defined in the Redfish specification, if present.\"\"\""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    message \u003d (\u0027HTTP %(method)s to %(url)s returned code %(code)s. %(error)s\u0027)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def __init__(self, method, url, response):"},{"line_number":71,"context_line":"        self.status_code \u003d response.status_code"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_dacdc685","line":68,"range":{"start_line":68,"start_character":21,"end_line":68,"end_character":42},"updated":"2017-05-11 18:14:43.000000000","message":"nit: can the exception message logging also follow similar formal statement formatting? Refer l89\n\n    \u0027HTTP response for %(method)s %(url)s: \u0027\n    \u0027status code: %(code)s, error: %(error)s\u0027","commit_id":"ca677df266c06ae9d4dc046319e698d1a0bf0d7b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b193e9e4f80b27d65c1a15d658bae4886eaaf5e","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    detail \u003d None"},{"line_number":66,"context_line":"    \"\"\"Error message defined in the Redfish specification, if present.\"\"\""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    message \u003d (\u0027HTTP %(method)s to %(url)s returned code %(code)s. %(error)s\u0027)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def __init__(self, method, url, response):"},{"line_number":71,"context_line":"        self.status_code \u003d response.status_code"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_f1289c97","line":68,"range":{"start_line":68,"start_character":21,"end_line":68,"end_character":42},"in_reply_to":"3f044301_dacdc685","updated":"2017-05-12 12:17:00.000000000","message":"This is not logging, this is the actual error message we carry with the exception, so I\u0027d leave it human-friendly.","commit_id":"ca677df266c06ae9d4dc046319e698d1a0bf0d7b"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"70bbef8775ef2f37e73fac86a323df76b6c2765d","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        try:"},{"line_number":73,"context_line":"            body \u003d response.json()"},{"line_number":74,"context_line":"        except ValueError:"},{"line_number":75,"context_line":"            LOG.warning(\u0027Error response from %(method)s request to %(url)s \u0027"},{"line_number":76,"context_line":"                        \u0027with status code %(code)s has no JSON body\u0027,"},{"line_number":77,"context_line":"                        {\u0027method\u0027: method, \u0027url\u0027: url, \u0027code\u0027:"},{"line_number":78,"context_line":"                         self.status_code})"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_3ada6a4a","line":75,"range":{"start_line":75,"start_character":45,"end_line":75,"end_character":74},"updated":"2017-05-11 18:14:43.000000000","message":"nit: s/%(method)s request to %(url)s/%(method)s %(url)s\n\nProbably:\n\n    ERROR response from %(method)s %(url)s: status code %(code)s - No JSON body","commit_id":"ca677df266c06ae9d4dc046319e698d1a0bf0d7b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b193e9e4f80b27d65c1a15d658bae4886eaaf5e","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        try:"},{"line_number":73,"context_line":"            body \u003d response.json()"},{"line_number":74,"context_line":"        except ValueError:"},{"line_number":75,"context_line":"            LOG.warning(\u0027Error response from %(method)s request to %(url)s \u0027"},{"line_number":76,"context_line":"                        \u0027with status code %(code)s has no JSON body\u0027,"},{"line_number":77,"context_line":"                        {\u0027method\u0027: method, \u0027url\u0027: url, \u0027code\u0027:"},{"line_number":78,"context_line":"                         self.status_code})"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_11054814","line":75,"range":{"start_line":75,"start_character":45,"end_line":75,"end_character":74},"in_reply_to":"3f044301_3ada6a4a","updated":"2017-05-12 12:17:00.000000000","message":"For warning-level things I\u0027d prefer we keep more textual format. But I definitely can remove \"request to\" to shorten it.","commit_id":"ca677df266c06ae9d4dc046319e698d1a0bf0d7b"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"70bbef8775ef2f37e73fac86a323df76b6c2765d","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            self.body \u003d body.get(\u0027error\u0027, {})"},{"line_number":83,"context_line":"            self.code \u003d self.body.get(\u0027code\u0027, \u0027Base.1.0.GeneralError\u0027)"},{"line_number":84,"context_line":"            self.detail \u003d self.body.get(\u0027message\u0027)"},{"line_number":85,"context_line":"            error \u003d \u0027%s: %s\u0027 % (self.code, self.detail or \u0027unknown error\u0027)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        kwargs \u003d {\u0027method\u0027: method, \u0027url\u0027: url, \u0027code\u0027: self.status_code,"},{"line_number":88,"context_line":"                  \u0027error\u0027: error}"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_fadbe2e9","line":85,"range":{"start_line":85,"start_character":32,"end_line":85,"end_character":41},"updated":"2017-05-11 18:14:43.000000000","message":"duplication of status code for the exception message. probably:\n\n    error \u003d \u0027%s: %s\u0027 % (self.msg, self.msg_detail or \u0027unknown error\u0027)\n\nwhere s/self.detail/self.msg and self.msg_detail could be the futuristic parsed @Message.ExtendedInfo value","commit_id":"ca677df266c06ae9d4dc046319e698d1a0bf0d7b"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"9513847328c3672fb3c75cb43c0a82ae279d142b","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            self.body \u003d body.get(\u0027error\u0027, {})"},{"line_number":83,"context_line":"            self.code \u003d self.body.get(\u0027code\u0027, \u0027Base.1.0.GeneralError\u0027)"},{"line_number":84,"context_line":"            self.detail \u003d self.body.get(\u0027message\u0027)"},{"line_number":85,"context_line":"            error \u003d \u0027%s: %s\u0027 % (self.code, self.detail or \u0027unknown error\u0027)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        kwargs \u003d {\u0027method\u0027: method, \u0027url\u0027: url, \u0027code\u0027: self.status_code,"},{"line_number":88,"context_line":"                  \u0027error\u0027: error}"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f013ff3_fbca6f4d","line":85,"range":{"start_line":85,"start_character":32,"end_line":85,"end_character":41},"in_reply_to":"3f044301_dc001704","updated":"2017-05-12 14:30:19.000000000","message":"ah!.. my fault. I mistook the self.code as the status_code. Now I realise. Thanks for clarifying.","commit_id":"ca677df266c06ae9d4dc046319e698d1a0bf0d7b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b193e9e4f80b27d65c1a15d658bae4886eaaf5e","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            self.body \u003d body.get(\u0027error\u0027, {})"},{"line_number":83,"context_line":"            self.code \u003d self.body.get(\u0027code\u0027, \u0027Base.1.0.GeneralError\u0027)"},{"line_number":84,"context_line":"            self.detail \u003d self.body.get(\u0027message\u0027)"},{"line_number":85,"context_line":"            error \u003d \u0027%s: %s\u0027 % (self.code, self.detail or \u0027unknown error\u0027)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        kwargs \u003d {\u0027method\u0027: method, \u0027url\u0027: url, \u0027code\u0027: self.status_code,"},{"line_number":88,"context_line":"                  \u0027error\u0027: error}"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_dc001704","line":85,"range":{"start_line":85,"start_character":32,"end_line":85,"end_character":41},"in_reply_to":"3f044301_fadbe2e9","updated":"2017-05-12 12:17:00.000000000","message":"Sorry, I don\u0027t get the comment. There are two codes here: self.code is Redfish test code (Base.1.0.GeneralError), status_code is the HTTP code. They\u0027re not necessary related.","commit_id":"ca677df266c06ae9d4dc046319e698d1a0bf0d7b"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"70bbef8775ef2f37e73fac86a323df76b6c2765d","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class ResourceNotFoundError(HTTPError):"},{"line_number":99,"context_line":"    status_code \u003d 404"},{"line_number":100,"context_line":"    message \u003d \u0027Resource %(url)s not found\u0027"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_7a4d9298","line":99,"range":{"start_line":99,"start_character":4,"end_line":99,"end_character":21},"updated":"2017-05-11 18:14:43.000000000","message":"not required.","commit_id":"ca677df266c06ae9d4dc046319e698d1a0bf0d7b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b193e9e4f80b27d65c1a15d658bae4886eaaf5e","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class ResourceNotFoundError(HTTPError):"},{"line_number":99,"context_line":"    status_code \u003d 404"},{"line_number":100,"context_line":"    message \u003d \u0027Resource %(url)s not found\u0027"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_bc2e6b8f","line":99,"range":{"start_line":99,"start_character":4,"end_line":99,"end_character":21},"in_reply_to":"3f044301_7a4d9298","updated":"2017-05-12 12:17:00.000000000","message":"Done","commit_id":"ca677df266c06ae9d4dc046319e698d1a0bf0d7b"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"70bbef8775ef2f37e73fac86a323df76b6c2765d","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class ResourceNotFoundError(HTTPError):"},{"line_number":99,"context_line":"    status_code \u003d 404"},{"line_number":100,"context_line":"    message \u003d \u0027Resource %(url)s not found\u0027"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"class ServerSideError(HTTPError):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_fa7762d3","line":100,"range":{"start_line":100,"start_character":4,"end_line":100,"end_character":42},"updated":"2017-05-11 18:14:43.000000000","message":"do we require this message attribute anymore?","commit_id":"ca677df266c06ae9d4dc046319e698d1a0bf0d7b"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"9513847328c3672fb3c75cb43c0a82ae279d142b","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class ResourceNotFoundError(HTTPError):"},{"line_number":99,"context_line":"    status_code \u003d 404"},{"line_number":100,"context_line":"    message \u003d \u0027Resource %(url)s not found\u0027"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"class ServerSideError(HTTPError):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f013ff3_1b12bbb2","line":100,"range":{"start_line":100,"start_character":4,"end_line":100,"end_character":42},"in_reply_to":"3f044301_1c1aff6d","updated":"2017-05-12 14:30:19.000000000","message":"Okay. If you want to have this only as the simpler exception message instead of the one sent from Redfish server, then its fine.","commit_id":"ca677df266c06ae9d4dc046319e698d1a0bf0d7b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b193e9e4f80b27d65c1a15d658bae4886eaaf5e","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class ResourceNotFoundError(HTTPError):"},{"line_number":99,"context_line":"    status_code \u003d 404"},{"line_number":100,"context_line":"    message \u003d \u0027Resource %(url)s not found\u0027"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"class ServerSideError(HTTPError):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_1c1aff6d","line":100,"range":{"start_line":100,"start_character":4,"end_line":100,"end_character":42},"in_reply_to":"3f044301_fa7762d3","updated":"2017-05-12 12:17:00.000000000","message":"Yes, we overwrite the final error message with a simpler one (while keeping the same logging)","commit_id":"ca677df266c06ae9d4dc046319e698d1a0bf0d7b"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"70bbef8775ef2f37e73fac86a323df76b6c2765d","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def raise_for_response(method, url, response):"},{"line_number":112,"context_line":"    \"\"\"Raise a correct error class.\"\"\""},{"line_number":113,"context_line":"    if response.status_code \u003c 400:"},{"line_number":114,"context_line":"        return"},{"line_number":115,"context_line":"    elif response.status_code \u003d\u003d 404:"},{"line_number":116,"context_line":"        raise ResourceNotFoundError(method, url, response)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_9afcdeb5","line":113,"updated":"2017-05-11 18:14:43.000000000","message":"Can we handle \"301 Moved Permanently - The requested resource resides under a different URI\" to reissue the request with the new url? Can be raised in a separate patch also.","commit_id":"ca677df266c06ae9d4dc046319e698d1a0bf0d7b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b193e9e4f80b27d65c1a15d658bae4886eaaf5e","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def raise_for_response(method, url, response):"},{"line_number":112,"context_line":"    \"\"\"Raise a correct error class.\"\"\""},{"line_number":113,"context_line":"    if response.status_code \u003c 400:"},{"line_number":114,"context_line":"        return"},{"line_number":115,"context_line":"    elif response.status_code \u003d\u003d 404:"},{"line_number":116,"context_line":"        raise ResourceNotFoundError(method, url, response)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_dc4ed76d","line":113,"in_reply_to":"3f044301_9afcdeb5","updated":"2017-05-12 12:17:00.000000000","message":"I expect the requests lib to handle it automatically: http://docs.python-requests.org/en/latest/user/quickstart/#redirection-and-history","commit_id":"ca677df266c06ae9d4dc046319e698d1a0bf0d7b"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"9513847328c3672fb3c75cb43c0a82ae279d142b","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def raise_for_response(method, url, response):"},{"line_number":112,"context_line":"    \"\"\"Raise a correct error class.\"\"\""},{"line_number":113,"context_line":"    if response.status_code \u003c 400:"},{"line_number":114,"context_line":"        return"},{"line_number":115,"context_line":"    elif response.status_code \u003d\u003d 404:"},{"line_number":116,"context_line":"        raise ResourceNotFoundError(method, url, response)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f013ff3_bbd98723","line":113,"in_reply_to":"3f044301_dc4ed76d","updated":"2017-05-12 14:30:19.000000000","message":"Ok","commit_id":"ca677df266c06ae9d4dc046319e698d1a0bf0d7b"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"a8f1ddbb64a410766c1d718059cdcb34fa1546a8","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        else:"},{"line_number":81,"context_line":"            # TODO(dtantsur): parse @Message.ExtendedInfo"},{"line_number":82,"context_line":"            self.body \u003d body.get(\u0027error\u0027, {})"},{"line_number":83,"context_line":"            self.code \u003d self.body.get(\u0027code\u0027, \u0027Base.1.0.GeneralError\u0027)"},{"line_number":84,"context_line":"            self.detail \u003d self.body.get(\u0027message\u0027)"},{"line_number":85,"context_line":"            error \u003d \u0027%s: %s\u0027 % (self.code, self.detail or \u0027unknown error\u0027)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_cc03640d","line":83,"range":{"start_line":83,"start_character":46,"end_line":83,"end_character":69},"updated":"2017-05-15 09:45:09.000000000","message":"nit - HTTPError.code","commit_id":"fe07266026d7f13f62916755700f247af2bbe210"}],"sushy/resources/base.py":[{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"d06164b6ac2686492ca6bdc220c0da3640c27bbd","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            raise"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        self._json \u003d resp.json()"},{"line_number":67,"context_line":"        LOG.debug(\u0027Received representation of %(type)s %(path)s: %(json)s\u0027,"},{"line_number":68,"context_line":"                  {\u0027type\u0027: self.__class__.__name__,"},{"line_number":69,"context_line":"                   \u0027path\u0027: self._path, \u0027json\u0027: self._json})"},{"line_number":70,"context_line":"        self._parse_attributes()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_e67c9284","line":67,"range":{"start_line":67,"start_character":19,"end_line":67,"end_character":73},"updated":"2017-05-10 09:27:07.000000000","message":"Hmm. I am fine with proper English statement here, tho.","commit_id":"9abfe5a2ef75bceac26d638c96f53a704ce4e4b8"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"d06164b6ac2686492ca6bdc220c0da3640c27bbd","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        self.name \u003d self.json.get(\u0027Name\u0027)"},{"line_number":122,"context_line":"        self.members_identities \u003d ("},{"line_number":123,"context_line":"            utils.get_members_identities(self.json.get(\u0027Members\u0027, [])))"},{"line_number":124,"context_line":"        LOG.debug(\u0027Received %(count)d members for %(type)s %(path)s\u0027,"},{"line_number":125,"context_line":"                  {\u0027count\u0027: len(self.members_identities),"},{"line_number":126,"context_line":"                   \u0027type\u0027: self.__class__.__name__, \u0027path\u0027: self._path})"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_064f7e6b","line":124,"range":{"start_line":124,"start_character":38,"end_line":124,"end_character":45},"updated":"2017-05-10 09:27:07.000000000","message":"nit: s/member/member(s)","commit_id":"9abfe5a2ef75bceac26d638c96f53a704ce4e4b8"}]}
