)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0aa22a9c272e5213514b37135cf4192512979ccf","unresolved":false,"context_lines":[{"line_number":10,"context_line":"error when deleting an attached volume."},{"line_number":11,"context_line":"This patch adds the error handling."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"NOTE: There is already a similar exception InvalidVolume. However,"},{"line_number":14,"context_line":"this patch adds a new exception VolumeBadRequest to distinguish"},{"line_number":15,"context_line":"the exception happens on Cinder side."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a95cdbc_80b394e8","line":13,"range":{"start_line":13,"start_character":43,"end_line":13,"end_character":56},"updated":"2016-10-06 20:47:43.000000000","message":"Do you mean InvalidVolume or InvalidInput? Because I think in this case you\u0027d be getting InvalidInput.","commit_id":"65bb26db492050b1d51ba07af7873b6e974f94c7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e05428ec9a74821737a874474c8a3d80df06dce6","unresolved":false,"context_lines":[{"line_number":10,"context_line":"error when deleting an attached volume."},{"line_number":11,"context_line":"This patch adds the error handling."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"NOTE: There is already a similar exception InvalidVolume. However,"},{"line_number":14,"context_line":"this patch adds a new exception VolumeBadRequest to distinguish"},{"line_number":15,"context_line":"the exception happens on Cinder side."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a95cdbc_808634d9","line":13,"range":{"start_line":13,"start_character":43,"end_line":13,"end_character":56},"in_reply_to":"1a95cdbc_80b394e8","updated":"2016-10-06 20:52:26.000000000","message":"It\u0027s InvalidInput:\n\nhttp://logs.openstack.org/81/382681/1/check/gate-tempest-dsvm-full-ubuntu-xenial-newton/6698978/logs/screen-n-api.txt.gz?level\u003dTRACE#_2016-10-06_01_17_36_772","commit_id":"65bb26db492050b1d51ba07af7873b6e974f94c7"}],"nova/api/openstack/compute/volumes.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0aa22a9c272e5213514b37135cf4192512979ccf","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        try:"},{"line_number":128,"context_line":"            self.volume_api.delete(context, id)"},{"line_number":129,"context_line":"        except exception.VolumeBadRequest as e:"},{"line_number":130,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":131,"context_line":"        except exception.VolumeNotFound as e:"},{"line_number":132,"context_line":"            raise exc.HTTPNotFound(explanation\u003de.format_message())"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_60b20808","line":129,"range":{"start_line":129,"start_character":25,"end_line":129,"end_character":41},"updated":"2016-10-06 20:47:43.000000000","message":"I\u0027m not sure why we wouldn\u0027t just handle InvalidInput here which is what we\u0027d get from the volume_api.delete method and it\u0027s exception handlers before this change, we just weren\u0027t handling it.","commit_id":"65bb26db492050b1d51ba07af7873b6e974f94c7"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"33a38852d953fd6f5ac7bd6edde6e9dfa1d37a26","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        try:"},{"line_number":128,"context_line":"            self.volume_api.delete(context, id)"},{"line_number":129,"context_line":"        except exception.VolumeBadRequest as e:"},{"line_number":130,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":131,"context_line":"        except exception.VolumeNotFound as e:"},{"line_number":132,"context_line":"            raise exc.HTTPNotFound(explanation\u003de.format_message())"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_d4ae3de5","line":129,"range":{"start_line":129,"start_character":25,"end_line":129,"end_character":41},"in_reply_to":"1a95cdbc_60b20808","updated":"2016-10-06 21:01:47.000000000","message":"Oh, nice point.\n\nYour are right. The other APIs handle cinder errors like\n\n 184         try:\n 185             new_volume \u003d self.volume_api.create(\n 186                 context,\n 187                 size,\n 188                 vol.get(\u0027display_name\u0027),\n 189                 vol.get(\u0027display_description\u0027),\n 190                 snapshot\u003dsnapshot,\n 191                 volume_type\u003dvol_type,\n 192                 metadata\u003dmetadata,\n 193                 availability_zone\u003davailability_zone\n 194                 )\n 195         except exception.InvalidInput as err:\n 196             raise exc.HTTPBadRequest(explanation\u003derr.format_message())\n\nas you said.\nThis patch seems overkill anyways.","commit_id":"65bb26db492050b1d51ba07af7873b6e974f94c7"}],"nova/exception.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0aa22a9c272e5213514b37135cf4192512979ccf","unresolved":false,"context_lines":[{"line_number":583,"context_line":"    msg_fmt \u003d _(\"Volume %(volume_id)s could not be found.\")"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"class VolumeBadRequest(Invalid):"},{"line_number":587,"context_line":"    msg_fmt \u003d _(\"The volume request failed with a BadRequest: %(reason)s\")"},{"line_number":588,"context_line":""},{"line_number":589,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_a0a5f0a2","line":586,"range":{"start_line":586,"start_character":23,"end_line":586,"end_character":30},"updated":"2016-10-06 20:47:43.000000000","message":"It seems like if we use this new exception type, we should at least have it extend InvalidInput given how the volume API error handling is working today.","commit_id":"65bb26db492050b1d51ba07af7873b6e974f94c7"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"33a38852d953fd6f5ac7bd6edde6e9dfa1d37a26","unresolved":false,"context_lines":[{"line_number":583,"context_line":"    msg_fmt \u003d _(\"Volume %(volume_id)s could not be found.\")"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"class VolumeBadRequest(Invalid):"},{"line_number":587,"context_line":"    msg_fmt \u003d _(\"The volume request failed with a BadRequest: %(reason)s\")"},{"line_number":588,"context_line":""},{"line_number":589,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_747ac978","line":586,"range":{"start_line":586,"start_character":23,"end_line":586,"end_character":30},"in_reply_to":"1a95cdbc_a0a5f0a2","updated":"2016-10-06 21:01:47.000000000","message":"Yep, this seems unnecessary at all.","commit_id":"65bb26db492050b1d51ba07af7873b6e974f94c7"}],"nova/tests/unit/api/openstack/compute/test_volumes.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b2896365ffe39149fb478d9ab399adf905014ae2","unresolved":false,"context_lines":[{"line_number":781,"context_line":"    bad_request \u003d exception.ValidationError"},{"line_number":782,"context_line":""},{"line_number":783,"context_line":"    @mock.patch.object(cinder.API, \u0027delete\u0027,"},{"line_number":784,"context_line":"        side_effect\u003dexception.InvalidInput())"},{"line_number":785,"context_line":"    def test_delete_invalid_status_volume(self, mock_delete):"},{"line_number":786,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2.1/os-volumes\u0027)"},{"line_number":787,"context_line":"        req.method \u003d \u0027DELETE\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a95cdbc_b40e1139","line":784,"range":{"start_line":784,"start_character":30,"end_line":784,"end_character":42},"updated":"2016-10-06 21:14:49.000000000","message":"This takes a \u0027reason\u0027 kwarg so I think you have to provide one.","commit_id":"142c81d6d50ac6d1bd375b7a6fcef0ef9ec881b1"}],"nova/volume/cinder.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0aa22a9c272e5213514b37135cf4192512979ccf","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        except (keystone_exception.BadRequest,"},{"line_number":194,"context_line":"                cinder_exception.BadRequest) as exc:"},{"line_number":195,"context_line":"            err_msg \u003d encodeutils.exception_to_unicode(exc)"},{"line_number":196,"context_line":"            _reraise(exception.InvalidInput(reason\u003derr_msg))"},{"line_number":197,"context_line":"        except (keystone_exception.Forbidden,"},{"line_number":198,"context_line":"                cinder_exception.Forbidden) as exc:"},{"line_number":199,"context_line":"            err_msg \u003d encodeutils.exception_to_unicode(exc)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_202e4043","line":196,"updated":"2016-10-06 20:47:43.000000000","message":"Wouldn\u0027t you be getting this before because translate_volume_exception calls translate_cinder_exception?","commit_id":"65bb26db492050b1d51ba07af7873b6e974f94c7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0aa22a9c272e5213514b37135cf4192512979ccf","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            res \u003d method(self, ctx, volume_id, *args, **kwargs)"},{"line_number":211,"context_line":"        except (keystone_exception.NotFound, cinder_exception.NotFound):"},{"line_number":212,"context_line":"            _reraise(exception.VolumeNotFound(volume_id\u003dvolume_id))"},{"line_number":213,"context_line":"        except cinder_exception.BadRequest as exc:"},{"line_number":214,"context_line":"            err_msg \u003d encodeutils.exception_to_unicode(exc)"},{"line_number":215,"context_line":"            _reraise(exception.VolumeBadRequest(reason\u003derr_msg))"},{"line_number":216,"context_line":"        except cinder_exception.OverLimit:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_00722449","line":213,"updated":"2016-10-06 20:47:43.000000000","message":"This doesn\u0027t handle keystone bad requests like above, and it also changes the exception that comes out of this wrapper and I\u0027m not sure what other APIs are explicitly expecting InvalidInput.","commit_id":"65bb26db492050b1d51ba07af7873b6e974f94c7"}]}
