)]}'
{"glance/common/client.py":[{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"2b0e631e9df944a1237bb04976bd9a7b2cfd0220","unresolved":false,"context_lines":[{"line_number":529,"context_line":"            elif status_code \u003d\u003d http_client.FORBIDDEN:"},{"line_number":530,"context_line":"                raise exception.Forbidden(read_body(res))"},{"line_number":531,"context_line":"            elif status_code \u003d\u003d http_client.NOT_FOUND:"},{"line_number":532,"context_line":"                raise exception.ImageNotFound()"},{"line_number":533,"context_line":"            elif status_code \u003d\u003d http_client.CONFLICT:"},{"line_number":534,"context_line":"                raise exception.Duplicate(read_body(res))"},{"line_number":535,"context_line":"            elif status_code \u003d\u003d http_client.BAD_REQUEST:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a71b18c_247657a4","line":532,"updated":"2016-12-05 08:29:31.000000000","message":"ImageNotFound required image_id to be specified. Also it is not appropriate to raise ImageNotFound when task or property not found.","commit_id":"f2642ed1c477183c9e7839278f702c03ac0e88e0"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"7cfb609418a8a3ca4132aa6c63da3e34b37a6f0e","unresolved":false,"context_lines":[{"line_number":529,"context_line":"            elif status_code \u003d\u003d http_client.FORBIDDEN:"},{"line_number":530,"context_line":"                raise exception.Forbidden(read_body(res))"},{"line_number":531,"context_line":"            elif status_code \u003d\u003d http_client.NOT_FOUND:"},{"line_number":532,"context_line":"                raise exception.ImageNotFound()"},{"line_number":533,"context_line":"            elif status_code \u003d\u003d http_client.CONFLICT:"},{"line_number":534,"context_line":"                raise exception.Duplicate(read_body(res))"},{"line_number":535,"context_line":"            elif status_code \u003d\u003d http_client.BAD_REQUEST:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a71b18c_f754f6fe","line":532,"in_reply_to":"3a71b18c_247657a4","updated":"2016-12-05 17:41:43.000000000","message":"Not only that, this is a generic REST client. The client here is *absolutely* raising the correct exception in response to a 404 response. Not every 404 from the registry will be because the image requested no longer exists.\n\nThis change is inappropriate.","commit_id":"f2642ed1c477183c9e7839278f702c03ac0e88e0"}],"glance/registry/client/v1/client.py":[{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"21806f1373098a9d164620057fe955c1c9817909","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def get_image(self, image_id):"},{"line_number":168,"context_line":"        try:"},{"line_number":169,"context_line":"            \"\"\"Returns a mapping of image metadata from Registry.\"\"\""},{"line_number":170,"context_line":"            res \u003d self.do_request(\"GET\", \"/images/%s\" % image_id)"},{"line_number":171,"context_line":"            data \u003d jsonutils.loads(res.read())[\u0027image\u0027]"},{"line_number":172,"context_line":"        except exception.NotFound:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_323d6e8f","line":169,"updated":"2016-12-06 15:19:37.000000000","message":"You\u0027ve mangled the docstring by doing this and you have far too much encapsulated in this try block. This should be\n\n    def get_image(self, image_id):\n        \"\"\"Returns a mapping of image metadata from Registry.\"\"\"\n        try:\n            res \u003d self.do_request(\"GET\", \"/images/%s\" % image_id)\n        except exception.NotFound:\n            raise exception.ImageNotFound(image_id)\n        else:\n            data \u003d jsonutils.loads(res.read())[\u0027image\u0027]\n        return self.decrypt_metadata(data)","commit_id":"94c5dc74c025653b64655f3c899b205afd77a29c"},{"author":{"_account_id":21722,"name":"Dharini Chandrasekar","email":"dharini.chandrasekar@intel.com","username":"dharinic"},"change_message_id":"449a9e010bcf68b388fb28181729342758371b88","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        # The following exception logging should only really be used"},{"line_number":140,"context_line":"        # in extreme and unexpected cases."},{"line_number":141,"context_line":"        except Exception as exc:"},{"line_number":142,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":143,"context_line":"                exc_name \u003d exc.__class__.__name__"},{"line_number":144,"context_line":"                LOG.exception(_LE(\"Registry client request %(method)s \""},{"line_number":145,"context_line":"                                  \"%(action)s raised %(exc_name)s\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_b980778c","line":142,"range":{"start_line":142,"start_character":12,"end_line":142,"end_character":55},"updated":"2016-12-06 21:12:01.000000000","message":"I think this is where we need to handle the exception.\nAs per my understanding and the bug report\u0027s descriptions, the method \"excutils.save_and_reraise_exception()\" in [1] is re-raising an exception.NotFound (after rerunning the handler) which is first not caught in line 136. Hence the logging and print of stack trace. \nI think we need to have a conditional check here and decide to re-raise without stack trace logging.\n\n[1] https://github.com/openstack/oslo.utils/blob/master/oslo_utils/excutils.py#L146","commit_id":"3f2b25304dcdad658d3f006af6b80e1e7bd6c7c1"},{"author":{"_account_id":21722,"name":"Dharini Chandrasekar","email":"dharini.chandrasekar@intel.com","username":"dharinic"},"change_message_id":"85c20cb0ed0d26e3991de15b1ab92601251e139f","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        # The following exception logging should only really be used"},{"line_number":140,"context_line":"        # in extreme and unexpected cases."},{"line_number":141,"context_line":"        except Exception as exc:"},{"line_number":142,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":143,"context_line":"                exc_name \u003d exc.__class__.__name__"},{"line_number":144,"context_line":"                LOG.exception(_LE(\"Registry client request %(method)s \""},{"line_number":145,"context_line":"                                  \"%(action)s raised %(exc_name)s\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_8d7b4429","line":142,"range":{"start_line":142,"start_character":12,"end_line":142,"end_character":55},"in_reply_to":"3a71b18c_15c9fcac","updated":"2016-12-07 19:47:42.000000000","message":"Ian, in the bug description, there is:\n``\nRegistry client request GET /images/26e5f7a4-84d0-41fb-b5cb-bbf04af7d90f raised NotFound\n``\nwhich made me wonder if L136 was even catching a NotFound initially..\nCos it didnt just look like a mere catch of NotFound and reraise of the same..but rather, a logged exception as in L144.","commit_id":"3f2b25304dcdad658d3f006af6b80e1e7bd6c7c1"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"b7f435a27dbb8dcaaa6dbd50c0e7189719420280","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        # The following exception logging should only really be used"},{"line_number":140,"context_line":"        # in extreme and unexpected cases."},{"line_number":141,"context_line":"        except Exception as exc:"},{"line_number":142,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":143,"context_line":"                exc_name \u003d exc.__class__.__name__"},{"line_number":144,"context_line":"                LOG.exception(_LE(\"Registry client request %(method)s \""},{"line_number":145,"context_line":"                                  \"%(action)s raised %(exc_name)s\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_15c9fcac","line":142,"range":{"start_line":142,"start_character":12,"end_line":142,"end_character":55},"in_reply_to":"3a71b18c_b980778c","updated":"2016-12-07 18:20:18.000000000","message":"Dharini, so the first part of this bug was that 404 errors shouldn\u0027t be logged, so on L136 we catch the 404 exception class and reraise it. There\u0027s no need to save and reraise it because there\u0027s nothing else to be done (because we\u0027re not logging information about it).\n\nWe then use do_request below and that\u0027s where we want to catch the NotFound exception and re-raise it as the more specific ImageNotFound exception that includes the image-id.\n\nI think (but could still be wrong!) that what Danil has right now is correct (assuming we want to raise an ImageNotFound exception).","commit_id":"3f2b25304dcdad658d3f006af6b80e1e7bd6c7c1"},{"author":{"_account_id":21722,"name":"Dharini Chandrasekar","email":"dharini.chandrasekar@intel.com","username":"dharinic"},"change_message_id":"2499a9962f5833de044c1239762d51a70ff7165f","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        except Exception as exc:"},{"line_number":142,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":143,"context_line":"                exc_name \u003d exc.__class__.__name__"},{"line_number":144,"context_line":"                LOG.exception(_LE(\"Registry client request %(method)s \""},{"line_number":145,"context_line":"                                  \"%(action)s raised %(exc_name)s\"),"},{"line_number":146,"context_line":"                              {\u0027method\u0027: method, \u0027action\u0027: action,"},{"line_number":147,"context_line":"                               \u0027exc_name\u0027: exc_name})"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a3c09a3_bb463e21","line":144,"range":{"start_line":144,"start_character":16,"end_line":144,"end_character":29},"updated":"2017-01-13 23:47:13.000000000","message":"This results in the log files being populated at the ERROR level. Maybe we just do a warning? the exception will anyhow be raised by the call from L142.","commit_id":"3f2b25304dcdad658d3f006af6b80e1e7bd6c7c1"},{"author":{"_account_id":21722,"name":"Dharini Chandrasekar","email":"dharini.chandrasekar@intel.com","username":"dharinic"},"change_message_id":"449a9e010bcf68b388fb28181729342758371b88","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def get_image(self, image_id):"},{"line_number":168,"context_line":"        \"\"\"Returns a mapping of image metadata from Registry.\"\"\""},{"line_number":169,"context_line":"        try:"},{"line_number":170,"context_line":"            res \u003d self.do_request(\"GET\", \"/images/%s\" % image_id)"},{"line_number":171,"context_line":"        except exception.NotFound:"},{"line_number":172,"context_line":"            raise exception.ImageNotFound(image_id)"},{"line_number":173,"context_line":"        else:"},{"line_number":174,"context_line":"            data \u003d jsonutils.loads(res.read())[\u0027image\u0027]"},{"line_number":175,"context_line":"        return self.decrypt_metadata(data)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_19696bf9","line":172,"range":{"start_line":169,"start_character":8,"end_line":172,"end_character":51},"updated":"2016-12-06 21:12:01.000000000","message":"If my comments on line 142 hold good, we may not need to have the try-except block here.","commit_id":"3f2b25304dcdad658d3f006af6b80e1e7bd6c7c1"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"acb9956253a0dcf50429d14f12413e3aa017fc96","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        # The following exception logging should only really be used"},{"line_number":140,"context_line":"        # in extreme and unexpected cases."},{"line_number":141,"context_line":"        except Exception as exc:"},{"line_number":142,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":143,"context_line":"                exc_name \u003d exc.__class__.__name__"},{"line_number":144,"context_line":"                LOG.exception(_LE(\"Registry client request %(method)s \""}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_69e50fa8","side":"PARENT","line":141,"updated":"2017-04-07 18:46:45.000000000","message":"Given that you have absolutely zero clue what the exception actually is, it should absolutely be logged. The only time is safe to swallow tracebacks is when they\u0027re expected. This patch is going to make new issues difficult (if not impossible) to reliably reproduce and debug.","commit_id":"b702bce146923f3b030179880c56c0e84f7063a8"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"acb9956253a0dcf50429d14f12413e3aa017fc96","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                LOG.error(_LE(\"Registry client request %(method)s \""},{"line_number":145,"context_line":"                              \"%(action)s raised %(exc_name)s\"),"},{"line_number":146,"context_line":"                          {\u0027method\u0027: method, \u0027action\u0027: action,"},{"line_number":147,"context_line":"                           \u0027exc_name\u0027: exc_name})"},{"line_number":148,"context_line":"        return res"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def get_images_detailed(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_c93e5bd9","line":147,"updated":"2017-04-07 18:46:45.000000000","message":"Given that you have absolutely zero clue what the exception actually is L141 catches Exception), a traceback absolutely should be logged. The only time is safe to swallow tracebacks is when they\u0027re expected. This patch is going to make new issues difficult (if not impossible) to reliably reproduce and debug.\n\nThe rest of the patch looks fine to me, except for this change to suppress tracebacks.\n\nTo be clear: if you revert this back to LOG.exception, then 404\u0027s will not be logged with tracebacks because of the except at L136 catching them first.","commit_id":"045bf3dbc16fdb5c2d4dd3d88d5cd3b5be9f981e"},{"author":{"_account_id":21722,"name":"Dharini Chandrasekar","email":"dharini.chandrasekar@intel.com","username":"dharinic"},"change_message_id":"16e427cffd29ddd52caaabc1172fb2673a4e63d3","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                LOG.error(_LE(\"Registry client request %(method)s \""},{"line_number":145,"context_line":"                              \"%(action)s raised %(exc_name)s\"),"},{"line_number":146,"context_line":"                          {\u0027method\u0027: method, \u0027action\u0027: action,"},{"line_number":147,"context_line":"                           \u0027exc_name\u0027: exc_name})"},{"line_number":148,"context_line":"        return res"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def get_images_detailed(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_cdd1c0cf","line":147,"in_reply_to":"bff0334d_c93e5bd9","updated":"2017-04-07 23:03:50.000000000","message":"Agreed. Thanks Dolph.","commit_id":"045bf3dbc16fdb5c2d4dd3d88d5cd3b5be9f981e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"2f89031c17c2f5239c793a6093eb335dd3c2bc69","unresolved":false,"context_lines":[{"line_number":142,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":143,"context_line":"                exc_name \u003d exc.__class__.__name__"},{"line_number":144,"context_line":"                LOG.exception(_LE(\"Registry client request %(method)s \""},{"line_number":145,"context_line":"                              \"%(action)s raised %(exc_name)s\"),"},{"line_number":146,"context_line":"                              {\u0027method\u0027: method, \u0027action\u0027: action,"},{"line_number":147,"context_line":"                              \u0027exc_name\u0027: exc_name})"},{"line_number":148,"context_line":"        return res"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_3fa14747","line":145,"range":{"start_line":145,"start_character":30,"end_line":145,"end_character":31},"updated":"2017-06-15 14:45:34.000000000","message":"Indentation here and line 147 looks like it was accidentally unindented. Need to move back to how it was.","commit_id":"c2d0c82406820af12ce09708779803a83a7e1c9d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d820923ca5954ef88c2b2cac98bba534a78ffdac","unresolved":false,"context_lines":[{"line_number":142,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":143,"context_line":"                exc_name \u003d exc.__class__.__name__"},{"line_number":144,"context_line":"                LOG.exception(_LE(\"Registry client request %(method)s \""},{"line_number":145,"context_line":"                              \"%(action)s raised %(exc_name)s\"),"},{"line_number":146,"context_line":"                              {\u0027method\u0027: method, \u0027action\u0027: action,"},{"line_number":147,"context_line":"                              \u0027exc_name\u0027: exc_name})"},{"line_number":148,"context_line":"        return res"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_18e21ba1","line":145,"range":{"start_line":145,"start_character":30,"end_line":145,"end_character":31},"in_reply_to":"7f231b9d_3fa14747","updated":"2017-06-15 19:09:12.000000000","message":"Done","commit_id":"c2d0c82406820af12ce09708779803a83a7e1c9d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"96902c762f396f02ae1f939fcbc2a778833e767c","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                LOG.exception(_LE(\"Registry client request %(method)s \""},{"line_number":145,"context_line":"                                  \"%(action)s raised %(exc_name)s\"),"},{"line_number":146,"context_line":"                              {\u0027method\u0027: method, \u0027action\u0027: action,"},{"line_number":147,"context_line":"                              \u0027exc_name\u0027: exc_name})"},{"line_number":148,"context_line":"        return res"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def get_images_detailed(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_b87fa7de","line":147,"updated":"2017-06-15 19:08:09.000000000","message":"Bah, so before I go fixing this other spacing issue, I should mention that the exception name will be in the log message anyway, so there\u0027s really no need to extract and print exc_name as part of the message.\n\nFor that matter, this exception is getting raised from here anyway, so I\u0027m not sure the LOG.exception really is necessary.  (See comments here in PS4.)","commit_id":"39911448be231c4e94333e37a7324814e7144d5f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fb4a53844d388863d2af8c106aba4133c19b3cdb","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                LOG.exception(_LE(\"Registry client request %(method)s \""},{"line_number":145,"context_line":"                                  \"%(action)s raised %(exc_name)s\"),"},{"line_number":146,"context_line":"                              {\u0027method\u0027: method, \u0027action\u0027: action,"},{"line_number":147,"context_line":"                              \u0027exc_name\u0027: exc_name})"},{"line_number":148,"context_line":"        return res"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def get_images_detailed(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_d8c82323","line":147,"range":{"start_line":147,"start_character":30,"end_line":147,"end_character":31},"updated":"2017-06-15 19:08:56.000000000","message":"Should have one more leading space here so the dict keys line up.","commit_id":"39911448be231c4e94333e37a7324814e7144d5f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3056e1fb9884ef6a6e5d373d5436211fc1d0ad19","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                LOG.exception(_LE(\"Registry client request %(method)s \""},{"line_number":145,"context_line":"                                  \"%(action)s raised %(exc_name)s\"),"},{"line_number":146,"context_line":"                              {\u0027method\u0027: method, \u0027action\u0027: action,"},{"line_number":147,"context_line":"                              \u0027exc_name\u0027: exc_name})"},{"line_number":148,"context_line":"        return res"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def get_images_detailed(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_9ef053ff","line":147,"in_reply_to":"7f231b9d_7b0b4923","updated":"2017-06-15 19:49:57.000000000","message":"But after all that, this chunk doesn\u0027t have a delta in this change set, so if we\u0027re wanting to do some cleanup like that, it should probably be in a followon.","commit_id":"39911448be231c4e94333e37a7324814e7144d5f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a0e4b61db62e83e0b2757a87e3b90d7f1bb1819","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                LOG.exception(_LE(\"Registry client request %(method)s \""},{"line_number":145,"context_line":"                                  \"%(action)s raised %(exc_name)s\"),"},{"line_number":146,"context_line":"                              {\u0027method\u0027: method, \u0027action\u0027: action,"},{"line_number":147,"context_line":"                              \u0027exc_name\u0027: exc_name})"},{"line_number":148,"context_line":"        return res"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def get_images_detailed(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_7b0b4923","line":147,"in_reply_to":"7f231b9d_b87fa7de","updated":"2017-06-15 19:15:09.000000000","message":"Good point Eric. Really no reason to include any exception details when using LOG.exception. And if this just gets rethrown, maybe better to just let if get raised in the first place and don\u0027t catch it here.","commit_id":"39911448be231c4e94333e37a7324814e7144d5f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b3fd508d6062bde4e301094f483394406b9dd2e8","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                LOG.exception(_LE(\"Registry client request %(method)s \""},{"line_number":145,"context_line":"                                  \"%(action)s raised %(exc_name)s\"),"},{"line_number":146,"context_line":"                              {\u0027method\u0027: method, \u0027action\u0027: action,"},{"line_number":147,"context_line":"                              \u0027exc_name\u0027: exc_name})"},{"line_number":148,"context_line":"        return res"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def get_images_detailed(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_f8f75f58","line":147,"range":{"start_line":147,"start_character":30,"end_line":147,"end_character":31},"in_reply_to":"7f231b9d_d8c82323","updated":"2017-06-15 19:09:42.000000000","message":"Done","commit_id":"39911448be231c4e94333e37a7324814e7144d5f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"af946546d8af3380d73e71873ab36fd7f7cb0936","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                LOG.exception(_LE(\"Registry client request %(method)s \""},{"line_number":145,"context_line":"                                  \"%(action)s raised %(exc_name)s\"),"},{"line_number":146,"context_line":"                              {\u0027method\u0027: method, \u0027action\u0027: action,"},{"line_number":147,"context_line":"                              \u0027exc_name\u0027: exc_name})"},{"line_number":148,"context_line":"        return res"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def get_images_detailed(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_f8a51f48","line":147,"range":{"start_line":147,"start_character":30,"end_line":147,"end_character":31},"in_reply_to":"7f231b9d_f8f75f58","updated":"2017-06-15 19:11:18.000000000","message":"BTW, I would hope pep8 would have -1\u0027d this as well, so don\u0027t feel bad ;-)","commit_id":"39911448be231c4e94333e37a7324814e7144d5f"}],"glance/tests/unit/v1/test_registry_client.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"2f89031c17c2f5239c793a6093eb335dd3c2bc69","unresolved":false,"context_lines":[{"line_number":639,"context_line":"                                                                 \u0027el\u0027: el})"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    def test_get_image_non_existing(self):"},{"line_number":642,"context_line":"        \"\"\""},{"line_number":643,"context_line":"        Tests that ImageNotFound is raised when getting a non-existing image"},{"line_number":644,"context_line":"        \"\"\""},{"line_number":645,"context_line":"        self.assertRaises(exception.ImageNotFound,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_ff74efd0","line":642,"updated":"2017-06-15 14:45:34.000000000","message":"Single line docstrings should be all on one line, so this was correct how it originally was.","commit_id":"c2d0c82406820af12ce09708779803a83a7e1c9d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d820923ca5954ef88c2b2cac98bba534a78ffdac","unresolved":false,"context_lines":[{"line_number":639,"context_line":"                                                                 \u0027el\u0027: el})"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    def test_get_image_non_existing(self):"},{"line_number":642,"context_line":"        \"\"\""},{"line_number":643,"context_line":"        Tests that ImageNotFound is raised when getting a non-existing image"},{"line_number":644,"context_line":"        \"\"\""},{"line_number":645,"context_line":"        self.assertRaises(exception.ImageNotFound,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_b8f68762","line":642,"in_reply_to":"7f231b9d_ff74efd0","updated":"2017-06-15 19:09:12.000000000","message":"Done","commit_id":"c2d0c82406820af12ce09708779803a83a7e1c9d"}]}
