)]}'
{"cinder/exception.py":[{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"eb0e8c1a2e2a76cbcd26295c8857c0ea4dbf5675","unresolved":false,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"class ImageDownloadFailed(Invalid):"},{"line_number":267,"context_line":"    message \u003d _(\"Image %(image_id)s is unacceptable: %(reason)s\")"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"class ImageTooBig(Invalid):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_ec6d7dcb","line":267,"range":{"start_line":267,"start_character":17,"end_line":267,"end_character":51},"updated":"2018-10-23 08:34:59.000000000","message":"The message should be changed to something related to ImageDownloadFailed.","commit_id":"9316519fbcff89ec0f1513202a9952fe66c33695"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"2d125ed4ebc7d974c4721141307a69f38e931b38","unresolved":false,"context_lines":[{"line_number":731,"context_line":"    message \u003d _(\"Glance metadata for volume/snapshot %(id)s cannot be found.\")"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":""},{"line_number":734,"context_line":"class ImageDownloadFailed(CinderException):"},{"line_number":735,"context_line":"    _msg_fmt \u003d _(\"Failed to download image %(image_href)s, reason: %(reason)s\")"},{"line_number":736,"context_line":""},{"line_number":737,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_0daba21e","line":734,"updated":"2018-12-11 01:22:45.000000000","message":"oops, I think we should avoid to using the same name in L266","commit_id":"1c679211d3333b61ad17b212a9de07d4990081d2"}],"cinder/image/image_utils.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e1e0c060de7097d9fbebbeb8904e2168da47793d","unresolved":false,"context_lines":[{"line_number":376,"context_line":"                    LOG.exception(reason)"},{"line_number":377,"context_line":"                    raise exception.ImageTooBig(image_id\u003dimage_id,"},{"line_number":378,"context_line":"                                                reason\u003dreason)"},{"line_number":379,"context_line":"                else:"},{"line_number":380,"context_line":"                    raise exception.GlanceConnectionFailed(reason\u003de)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    duration \u003d timeutils.delta_seconds(start_time, timeutils.utcnow())"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_1441f063","line":379,"updated":"2018-10-22 15:39:22.000000000","message":"No need for \"else\" really.","commit_id":"69dfe031928b8726f6757ec8ac71bebb83eb5140"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e1e0c060de7097d9fbebbeb8904e2168da47793d","unresolved":false,"context_lines":[{"line_number":377,"context_line":"                    raise exception.ImageTooBig(image_id\u003dimage_id,"},{"line_number":378,"context_line":"                                                reason\u003dreason)"},{"line_number":379,"context_line":"                else:"},{"line_number":380,"context_line":"                    raise exception.GlanceConnectionFailed(reason\u003de)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    duration \u003d timeutils.delta_seconds(start_time, timeutils.utcnow())"},{"line_number":383,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_34442c73","line":380,"updated":"2018-10-22 15:39:22.000000000","message":"I like the idea, but IOErrors here aren\u0027t really Glance Connection failures.  This should probably raise a new exception similar to ImageUnacceptable.","commit_id":"69dfe031928b8726f6757ec8ac71bebb83eb5140"},{"author":{"_account_id":23561,"name":"iain MacDonnell","email":"iain.macdonnell@oracle.com","username":"imacdonn"},"change_message_id":"7dfd285d0b2e7715b2375bd845948ef4d6035131","unresolved":false,"context_lines":[{"line_number":386,"context_line":"                    raise exception.ImageTooBig(image_id\u003dimage_id,"},{"line_number":387,"context_line":"                                                reason\u003dreason)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"                reason \u003d _(\"IOError: %d\") % (e.errno)"},{"line_number":390,"context_line":"                raise exception.ImageDownloadFailed(image_href\u003dimage_id,"},{"line_number":391,"context_line":"                                                    reason\u003dreason)"},{"line_number":392,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_8acd065d","line":389,"updated":"2018-12-13 23:34:12.000000000","message":"This throws away the descriptive reason for the failure (e.g. \"Corrupt image download. Hash was ... expected ...\"). Suggest something like:\n\nreason \u003d _(\"IOError: %d (%s)\") % (e.errno, e.strerror)","commit_id":"2de3294253e2b451114acde3e5c861c47e16e72d"},{"author":{"_account_id":4128,"name":"Francois Deppierraz","email":"francois@ctrlaltdel.ch","username":"francois-ctrlaltdel"},"change_message_id":"6bd9f7ea0f1fd0d93399a5c74303d6e908adff2a","unresolved":false,"context_lines":[{"line_number":386,"context_line":"                    raise exception.ImageTooBig(image_id\u003dimage_id,"},{"line_number":387,"context_line":"                                                reason\u003dreason)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"                reason \u003d _(\"IOError: %d\") % (e.errno)"},{"line_number":390,"context_line":"                raise exception.ImageDownloadFailed(image_href\u003dimage_id,"},{"line_number":391,"context_line":"                                                    reason\u003dreason)"},{"line_number":392,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_c2fe7eb3","line":389,"in_reply_to":"3f79a3b5_3b23e2ab","updated":"2018-12-14 09:23:30.000000000","message":"Good point, I\u0027ll also log the exception in the default case.","commit_id":"2de3294253e2b451114acde3e5c861c47e16e72d"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ce04f7d5b28f35b0e4b217de1ec8298081bbc8d6","unresolved":false,"context_lines":[{"line_number":386,"context_line":"                    raise exception.ImageTooBig(image_id\u003dimage_id,"},{"line_number":387,"context_line":"                                                reason\u003dreason)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"                reason \u003d _(\"IOError: %d\") % (e.errno)"},{"line_number":390,"context_line":"                raise exception.ImageDownloadFailed(image_href\u003dimage_id,"},{"line_number":391,"context_line":"                                                    reason\u003dreason)"},{"line_number":392,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_3b23e2ab","line":389,"in_reply_to":"3f79a3b5_8acd065d","updated":"2018-12-14 02:59:58.000000000","message":"Agree with Iain that we don\u0027t want to throw away the reason.  Is there any reason why we log the ENOSPC but not this one?","commit_id":"2de3294253e2b451114acde3e5c861c47e16e72d"},{"author":{"_account_id":4128,"name":"Francois Deppierraz","email":"francois@ctrlaltdel.ch","username":"francois-ctrlaltdel"},"change_message_id":"6bd9f7ea0f1fd0d93399a5c74303d6e908adff2a","unresolved":false,"context_lines":[{"line_number":386,"context_line":"                    raise exception.ImageTooBig(image_id\u003dimage_id,"},{"line_number":387,"context_line":"                                                reason\u003dreason)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"                reason \u003d _(\"IOError: %d\") % (e.errno)"},{"line_number":390,"context_line":"                raise exception.ImageDownloadFailed(image_href\u003dimage_id,"},{"line_number":391,"context_line":"                                                    reason\u003dreason)"},{"line_number":392,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_025f96de","line":389,"in_reply_to":"3f79a3b5_8acd065d","updated":"2018-12-14 09:23:30.000000000","message":"Done","commit_id":"2de3294253e2b451114acde3e5c861c47e16e72d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ba559ba5b1b4917f20c2071440e799805941e0e2","unresolved":false,"context_lines":[{"line_number":387,"context_line":"                                                reason\u003dreason)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"                reason \u003d _(\"IOError: %d (%s)\") % (e.errno, e.strerror)"},{"line_number":390,"context_line":"                LOG.exception(reason)"},{"line_number":391,"context_line":"                raise exception.ImageDownloadFailed(image_href\u003dimage_id,"},{"line_number":392,"context_line":"                                                    reason\u003dreason)"},{"line_number":393,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_c36c3dd4","line":390,"range":{"start_line":390,"start_character":20,"end_line":390,"end_character":29},"updated":"2018-12-14 14:13:11.000000000","message":"This should probably just use LOG.error since you are formatting the exception information into the message string. Using LOG.exception will end up doubling the logged exception detail.","commit_id":"2072c987fb358a5c336d7653e37c7c99b2ecc50c"},{"author":{"_account_id":4128,"name":"Francois Deppierraz","email":"francois@ctrlaltdel.ch","username":"francois-ctrlaltdel"},"change_message_id":"b41d7cabaf19f15328d1accd9ec6a71af0a4f038","unresolved":false,"context_lines":[{"line_number":387,"context_line":"                                                reason\u003dreason)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"                reason \u003d _(\"IOError: %d (%s)\") % (e.errno, e.strerror)"},{"line_number":390,"context_line":"                LOG.exception(reason)"},{"line_number":391,"context_line":"                raise exception.ImageDownloadFailed(image_href\u003dimage_id,"},{"line_number":392,"context_line":"                                                    reason\u003dreason)"},{"line_number":393,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_06bc83b4","line":390,"range":{"start_line":390,"start_character":20,"end_line":390,"end_character":29},"in_reply_to":"3f79a3b5_c36c3dd4","updated":"2018-12-14 15:19:48.000000000","message":"Done","commit_id":"2072c987fb358a5c336d7653e37c7c99b2ecc50c"},{"author":{"_account_id":23561,"name":"iain MacDonnell","email":"iain.macdonnell@oracle.com","username":"imacdonn"},"change_message_id":"a5630d0f0381dab9f9df1093580cbf927ba1dfe7","unresolved":false,"context_lines":[{"line_number":386,"context_line":"                    raise exception.ImageTooBig(image_id\u003dimage_id,"},{"line_number":387,"context_line":"                                                reason\u003dreason)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"                reason \u003d (_(\"IOError: %(errno)s %(strerror)s\") % e)"},{"line_number":390,"context_line":"                LOG.error(reason)"},{"line_number":391,"context_line":"                raise exception.ImageDownloadFailed(image_href\u003dimage_id,"},{"line_number":392,"context_line":"                                                    reason\u003dreason)"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f79a3b5_db187973","line":389,"range":{"start_line":389,"start_character":25,"end_line":389,"end_character":67},"updated":"2018-12-18 00:00:08.000000000","message":"You can\u0027t do that, because \u0027e\u0027 is not a dict. Looks like to make PEP8 happy, you\u0027ll need something like:\n\n                reason \u003d (_(\"IOError: %(errno)i %(strerror)s\") %               \n                          {\u0027errno\u0027: e.errno, \u0027strerror\u0027: e.strerror})","commit_id":"7cbfd4e3ee43e9f95f23afa6e73b48d4e8f33128"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"9d9ac76dde47ef8fd3ed649a6438711b5bfd4622","unresolved":false,"context_lines":[{"line_number":386,"context_line":"                    raise exception.ImageTooBig(image_id\u003dimage_id,"},{"line_number":387,"context_line":"                                                reason\u003dreason)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"                reason \u003d (_(\"IOError: %(errno)s %(strerror)s\") %"},{"line_number":390,"context_line":"                          {\u0027errno\u0027: e.errno, \u0027strerror\u0027: e.strerror})"},{"line_number":391,"context_line":"                LOG.error(reason)"},{"line_number":392,"context_line":"                raise exception.ImageDownloadFailed(image_href\u003dimage_id,"}],"source_content_type":"text/x-python","patch_set":18,"id":"3f79a3b5_c152b5d9","line":389,"updated":"2018-12-18 19:47:06.000000000","message":"-1: This is only going to the logs, because that exception will never reach the user calling Cinder, so we should not be adding it as a translation, as per [1], right?\n\n[1]: https://docs.openstack.org/oslo.i18n/latest/user/guidelines.html#log-translation","commit_id":"cb46e2f5ea7e24547d0f535cc85f448e0d5a8b19"},{"author":{"_account_id":4128,"name":"Francois Deppierraz","email":"francois@ctrlaltdel.ch","username":"francois-ctrlaltdel"},"change_message_id":"f96a956dc965f854080d3cdca64c467f22b099cd","unresolved":false,"context_lines":[{"line_number":386,"context_line":"                    raise exception.ImageTooBig(image_id\u003dimage_id,"},{"line_number":387,"context_line":"                                                reason\u003dreason)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"                reason \u003d (_(\"IOError: %(errno)s %(strerror)s\") %"},{"line_number":390,"context_line":"                          {\u0027errno\u0027: e.errno, \u0027strerror\u0027: e.strerror})"},{"line_number":391,"context_line":"                LOG.error(reason)"},{"line_number":392,"context_line":"                raise exception.ImageDownloadFailed(image_href\u003dimage_id,"}],"source_content_type":"text/x-python","patch_set":18,"id":"3f79a3b5_a753c908","line":389,"in_reply_to":"3f79a3b5_0002d960","updated":"2018-12-21 14:11:02.000000000","message":"Done","commit_id":"cb46e2f5ea7e24547d0f535cc85f448e0d5a8b19"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"36562f02fd1c121c16d530db61a549024d2f5ad7","unresolved":false,"context_lines":[{"line_number":386,"context_line":"                    raise exception.ImageTooBig(image_id\u003dimage_id,"},{"line_number":387,"context_line":"                                                reason\u003dreason)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"                reason \u003d (_(\"IOError: %(errno)s %(strerror)s\") %"},{"line_number":390,"context_line":"                          {\u0027errno\u0027: e.errno, \u0027strerror\u0027: e.strerror})"},{"line_number":391,"context_line":"                LOG.error(reason)"},{"line_number":392,"context_line":"                raise exception.ImageDownloadFailed(image_href\u003dimage_id,"}],"source_content_type":"text/x-python","patch_set":18,"id":"3f79a3b5_e1afb17c","line":389,"in_reply_to":"3f79a3b5_c152b5d9","updated":"2018-12-18 19:55:59.000000000","message":"This looks like it could be raised somewhere that does something other than logging it. Safer to translate all exception messages than assume it will never be seen outside the logs.","commit_id":"cb46e2f5ea7e24547d0f535cc85f448e0d5a8b19"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d04407620eee8386405823e8ba057c0588ff265c","unresolved":false,"context_lines":[{"line_number":386,"context_line":"                    raise exception.ImageTooBig(image_id\u003dimage_id,"},{"line_number":387,"context_line":"                                                reason\u003dreason)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"                reason \u003d (_(\"IOError: %(errno)s %(strerror)s\") %"},{"line_number":390,"context_line":"                          {\u0027errno\u0027: e.errno, \u0027strerror\u0027: e.strerror})"},{"line_number":391,"context_line":"                LOG.error(reason)"},{"line_number":392,"context_line":"                raise exception.ImageDownloadFailed(image_href\u003dimage_id,"}],"source_content_type":"text/x-python","patch_set":18,"id":"3f79a3b5_0002d960","line":389,"in_reply_to":"3f79a3b5_e1afb17c","updated":"2018-12-19 11:20:30.000000000","message":"Only exceptions raised on the API service and those made on synchronous RPC calls may reach users.\n\nThis method is always called in asynchronous RPCs and from the Volume service.\n\nRequiring a translation for this is unnecessary work.","commit_id":"cb46e2f5ea7e24547d0f535cc85f448e0d5a8b19"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"647efee438749b694232fec53f53fce15acb3cf5","unresolved":false,"context_lines":[{"line_number":388,"context_line":""},{"line_number":389,"context_line":"                reason \u003d (_(\"IOError: %(errno)s %(strerror)s\") %"},{"line_number":390,"context_line":"                          {\u0027errno\u0027: e.errno, \u0027strerror\u0027: e.strerror})"},{"line_number":391,"context_line":"                LOG.error(reason)"},{"line_number":392,"context_line":"                raise exception.ImageDownloadFailed(image_href\u003dimage_id,"},{"line_number":393,"context_line":"                                                    reason\u003dreason)"},{"line_number":394,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"3f79a3b5_71e7ddd9","line":391,"range":{"start_line":391,"start_character":20,"end_line":391,"end_character":25},"updated":"2018-12-19 14:12:19.000000000","message":"The glanceclient raises an IOError (errno.EPIPE) when the multihash (or checksum) validation of the image data fails, and includes the info in the strerror (\u0027Corrupt image download. Hash was %s expected %s\u0027 or \u0027Corrupt image download. Checksum was %s expected %s\u0027).  We\u0027re throwing that away here.  I don\u0027t know that we want to LOG.exception() because the trace isn\u0027t going to be very useful, but the message might be.","commit_id":"cb46e2f5ea7e24547d0f535cc85f448e0d5a8b19"},{"author":{"_account_id":23561,"name":"iain MacDonnell","email":"iain.macdonnell@oracle.com","username":"imacdonn"},"change_message_id":"c249348927f607b383db010b3a7705f8c9a87f87","unresolved":false,"context_lines":[{"line_number":388,"context_line":""},{"line_number":389,"context_line":"                reason \u003d (_(\"IOError: %(errno)s %(strerror)s\") %"},{"line_number":390,"context_line":"                          {\u0027errno\u0027: e.errno, \u0027strerror\u0027: e.strerror})"},{"line_number":391,"context_line":"                LOG.error(reason)"},{"line_number":392,"context_line":"                raise exception.ImageDownloadFailed(image_href\u003dimage_id,"},{"line_number":393,"context_line":"                                                    reason\u003dreason)"},{"line_number":394,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"3f79a3b5_6b11295f","line":391,"range":{"start_line":391,"start_character":20,"end_line":391,"end_character":25},"in_reply_to":"3f79a3b5_71e7ddd9","updated":"2018-12-19 17:08:17.000000000","message":"It\u0027s not thrown away any more - it\u0027s now extracted from the \u0027strerror\u0027 property of the IOError and included in the \"reason\" for the ImageDownloadFailed.\n\nLogging the stack trace may be useful in some situations - checksum/hash validation is only one possible trigger for this code.","commit_id":"cb46e2f5ea7e24547d0f535cc85f448e0d5a8b19"}],"cinder/tests/unit/test_image_utils.py":[{"author":{"_account_id":23561,"name":"iain MacDonnell","email":"iain.macdonnell@oracle.com","username":"imacdonn"},"change_message_id":"93cbf562c6d7b393be9e04aa96d6b8962eae8eed","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        image_service \u003d mock.Mock()"},{"line_number":354,"context_line":"        image_id \u003d mock.sentinel.image_id"},{"line_number":355,"context_line":"        e \u003d IOError()"},{"line_number":356,"context_line":"        e.errno \u003d errno.ECONNRESET"},{"line_number":357,"context_line":"        image_service.download.side_effect \u003d e"},{"line_number":358,"context_line":"        path \u003d \u0027/test_path\u0027"},{"line_number":359,"context_line":"        _user_id \u003d mock.sentinel._user_id"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_40fa6d10","line":356,"updated":"2018-12-14 01:23:08.000000000","message":"Add here:\n\ne.strerror \u003d \u0027Some descriptive message\u0027","commit_id":"2de3294253e2b451114acde3e5c861c47e16e72d"},{"author":{"_account_id":4128,"name":"Francois Deppierraz","email":"francois@ctrlaltdel.ch","username":"francois-ctrlaltdel"},"change_message_id":"6bd9f7ea0f1fd0d93399a5c74303d6e908adff2a","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        image_service \u003d mock.Mock()"},{"line_number":354,"context_line":"        image_id \u003d mock.sentinel.image_id"},{"line_number":355,"context_line":"        e \u003d IOError()"},{"line_number":356,"context_line":"        e.errno \u003d errno.ECONNRESET"},{"line_number":357,"context_line":"        image_service.download.side_effect \u003d e"},{"line_number":358,"context_line":"        path \u003d \u0027/test_path\u0027"},{"line_number":359,"context_line":"        _user_id \u003d mock.sentinel._user_id"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_e2bffac8","line":356,"in_reply_to":"3f79a3b5_40fa6d10","updated":"2018-12-14 09:23:30.000000000","message":"Done","commit_id":"2de3294253e2b451114acde3e5c861c47e16e72d"},{"author":{"_account_id":23561,"name":"iain MacDonnell","email":"iain.macdonnell@oracle.com","username":"imacdonn"},"change_message_id":"93cbf562c6d7b393be9e04aa96d6b8962eae8eed","unresolved":false,"context_lines":[{"line_number":361,"context_line":""},{"line_number":362,"context_line":"        with mock.patch(\u0027cinder.image.image_utils.open\u0027,"},{"line_number":363,"context_line":"                        new\u003dmock.mock_open(), create\u003dTrue):"},{"line_number":364,"context_line":"            self.assertRaises(exception.ImageDownloadFailed,"},{"line_number":365,"context_line":"                              image_utils.fetch,"},{"line_number":366,"context_line":"                              context, image_service, image_id, path,"},{"line_number":367,"context_line":"                              _user_id, _project_id)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_00047512","line":364,"updated":"2018-12-14 01:23:08.000000000","message":"Change this to assertRaisesRegex, and look for e.strerror","commit_id":"2de3294253e2b451114acde3e5c861c47e16e72d"},{"author":{"_account_id":4128,"name":"Francois Deppierraz","email":"francois@ctrlaltdel.ch","username":"francois-ctrlaltdel"},"change_message_id":"6bd9f7ea0f1fd0d93399a5c74303d6e908adff2a","unresolved":false,"context_lines":[{"line_number":361,"context_line":""},{"line_number":362,"context_line":"        with mock.patch(\u0027cinder.image.image_utils.open\u0027,"},{"line_number":363,"context_line":"                        new\u003dmock.mock_open(), create\u003dTrue):"},{"line_number":364,"context_line":"            self.assertRaises(exception.ImageDownloadFailed,"},{"line_number":365,"context_line":"                              image_utils.fetch,"},{"line_number":366,"context_line":"                              context, image_service, image_id, path,"},{"line_number":367,"context_line":"                              _user_id, _project_id)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_02bb16de","line":364,"in_reply_to":"3f79a3b5_00047512","updated":"2018-12-14 09:23:30.000000000","message":"Done","commit_id":"2de3294253e2b451114acde3e5c861c47e16e72d"}],"releasenotes/notes/bug-1799221-fix-truncated-volumes-in-case-of-glance-errors-6cae19218249c3cf.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"3c141be5c4d2673b7208f24c8b1ba394b2f4082a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fix a bug which could create truncated volumes in case of unhandled"},{"line_number":5,"context_line":"    errors from glance client (Bug #1799221)."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3f79a3b5_f46e6263","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":7},"updated":"2018-10-25 14:37:32.000000000","message":"Fixed","commit_id":"9b37b3138094aff0efb0e2c1d8ff2e012c989a71"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"3c141be5c4d2673b7208f24c8b1ba394b2f4082a","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fix a bug which could create truncated volumes in case of unhandled"},{"line_number":5,"context_line":"    errors from glance client (Bug #1799221)."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3f79a3b5_349e1a55","line":5,"range":{"start_line":5,"start_character":31,"end_line":5,"end_character":43},"updated":"2018-10-25 14:37:32.000000000","message":"Would be great to make this a link so release note consumers can follow it to find more information. If you do an update, you can change this to:\n\n(Bug `#1799221 \u003chttps://bugs.launchpad.net/cinder/+bug/1799221\u003e`_)","commit_id":"9b37b3138094aff0efb0e2c1d8ff2e012c989a71"},{"author":{"_account_id":23561,"name":"iain MacDonnell","email":"iain.macdonnell@oracle.com","username":"imacdonn"},"change_message_id":"b413be34b5a3707e49d6f74aca599e73c9bdd633","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed a bug which could create truncated volumes in case of unhandled"},{"line_number":5,"context_line":"    errors from glance client"},{"line_number":6,"context_line":"    (Bug `#1799221 \u003chttps://bugs.launchpad.net/cinder/+bug/1799221\u003e`_)."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3f79a3b5_b25385dd","line":4,"range":{"start_line":4,"start_character":35,"end_line":4,"end_character":52},"updated":"2018-12-14 18:10:16.000000000","message":"If you\u0027re making any other updates, it might be good to change this to something like \"volumes with invalid content\", since, in the case of checksum/hash validation failure, the volume would not be \"truncated\", but may contain corrupted data.","commit_id":"df0ef8ff7adf9822fa4c26d9a602cdfd3a9fdc16"},{"author":{"_account_id":4128,"name":"Francois Deppierraz","email":"francois@ctrlaltdel.ch","username":"francois-ctrlaltdel"},"change_message_id":"6163b3db4ce48d22925f42fb2224c60cea80df35","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed a bug which could create truncated volumes in case of unhandled"},{"line_number":5,"context_line":"    errors from glance client"},{"line_number":6,"context_line":"    (Bug `#1799221 \u003chttps://bugs.launchpad.net/cinder/+bug/1799221\u003e`_)."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3f79a3b5_8caad0cd","line":4,"range":{"start_line":4,"start_character":35,"end_line":4,"end_character":52},"in_reply_to":"3f79a3b5_b25385dd","updated":"2018-12-17 20:51:14.000000000","message":"Done","commit_id":"df0ef8ff7adf9822fa4c26d9a602cdfd3a9fdc16"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"b3ba976d147dbe02111273b5014b0f9bc26ad3f7","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed a bug which could create truncated volumes in case of unhandled"},{"line_number":5,"context_line":"    errors from glance client"},{"line_number":6,"context_line":"    (Bug `#1799221 \u003chttps://bugs.launchpad.net/cinder/+bug/1799221\u003e`_)."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3f79a3b5_8af4f8ce","line":6,"range":{"start_line":6,"start_character":3,"end_line":6,"end_character":71},"updated":"2018-12-17 15:47:21.000000000","message":"We don\u0027t use to add the launchpad link[1]. I think we should remove it. \n\n[1] https://docs.openstack.org/reno/latest/user/usage.html#note-file-syntax","commit_id":"df0ef8ff7adf9822fa4c26d9a602cdfd3a9fdc16"},{"author":{"_account_id":4128,"name":"Francois Deppierraz","email":"francois@ctrlaltdel.ch","username":"francois-ctrlaltdel"},"change_message_id":"6163b3db4ce48d22925f42fb2224c60cea80df35","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed a bug which could create truncated volumes in case of unhandled"},{"line_number":5,"context_line":"    errors from glance client"},{"line_number":6,"context_line":"    (Bug `#1799221 \u003chttps://bugs.launchpad.net/cinder/+bug/1799221\u003e`_)."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3f79a3b5_4c003869","line":6,"range":{"start_line":6,"start_character":3,"end_line":6,"end_character":71},"in_reply_to":"3f79a3b5_2092a3ad","updated":"2018-12-17 20:51:14.000000000","message":"Yeah, Sean was already pushing for the link in Patch Set 9, so I\u0027ll keep it now :)","commit_id":"df0ef8ff7adf9822fa4c26d9a602cdfd3a9fdc16"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"502694cd5071cb065d9a8a552af75736a30dce24","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed a bug which could create truncated volumes in case of unhandled"},{"line_number":5,"context_line":"    errors from glance client"},{"line_number":6,"context_line":"    (Bug `#1799221 \u003chttps://bugs.launchpad.net/cinder/+bug/1799221\u003e`_)."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3f79a3b5_2092a3ad","line":6,"range":{"start_line":6,"start_character":3,"end_line":6,"end_character":71},"in_reply_to":"3f79a3b5_4a84a00d","updated":"2018-12-17 16:44:12.000000000","message":"Sure :)","commit_id":"df0ef8ff7adf9822fa4c26d9a602cdfd3a9fdc16"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7c4f1966767c7b377053fdcf025e86f335072c4f","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed a bug which could create truncated volumes in case of unhandled"},{"line_number":5,"context_line":"    errors from glance client"},{"line_number":6,"context_line":"    (Bug `#1799221 \u003chttps://bugs.launchpad.net/cinder/+bug/1799221\u003e`_)."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3f79a3b5_4a84a00d","line":6,"range":{"start_line":6,"start_character":3,"end_line":6,"end_character":71},"in_reply_to":"3f79a3b5_8af4f8ce","updated":"2018-12-17 15:50:15.000000000","message":"It is somewhat useful to have the link to the bug report in the release notes in case the reader needs more details. I would keep it here.","commit_id":"df0ef8ff7adf9822fa4c26d9a602cdfd3a9fdc16"}]}
