)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"d844325a1771a76414795de6288aa6237cfbc67c","unresolved":false,"context_lines":[{"line_number":10,"context_line":"(e.g. because the key has been manually deleted already) then the"},{"line_number":11,"context_line":"volume delete should not fail - this leaves undeletable volumes."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Just log a warning and continue instead"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-bug: 1552169"},{"line_number":16,"context_line":"Change-Id: Id3571cbfa7c66787573cf750735be33a440d15dc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7af24918_5026c3ce","line":13,"updated":"2016-03-02 14:40:26.000000000","message":"Since we have other things to fix can we add a \u0027.\u0027 here.  Yes, this is a nit.","commit_id":"b1e24e745d657cebc799d9e5797c87f326e88f4a"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"3805caf2c55f741455548868bba054df58f929da","unresolved":false,"context_lines":[{"line_number":10,"context_line":"(e.g. because the key has been manually deleted already) then the"},{"line_number":11,"context_line":"volume delete should not fail - this leaves undeletable volumes."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Just log a warning and continue instead"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-bug: 1552169"},{"line_number":16,"context_line":"Change-Id: Id3571cbfa7c66787573cf750735be33a440d15dc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7af24918_e9efd7e6","line":13,"updated":"2016-03-04 16:38:21.000000000","message":"I don\u0027t think this is going to pass jenkins so you might as well add the period here as Jay suggested.","commit_id":"48e7b0e60ad4655f5c425a019571e509c40a6dc4"}],"cinder/tests/unit/test_volume.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"44ed9fed22f4844532b5a3a21dd47134b1328298","unresolved":false,"context_lines":[{"line_number":7719,"context_line":"        volume_api \u003d cinder.volume.api.API()"},{"line_number":7720,"context_line":"        volume \u003d tests_utils.create_volume(self.context, **volume_params)"},{"line_number":7721,"context_line":"        volume.status \u003d \u0027available\u0027"},{"line_number":7722,"context_line":"        volume.save()"},{"line_number":7723,"context_line":""},{"line_number":7724,"context_line":"        with mock.patch.object(volume_api.key_manager, \u0027delete_key\u0027) as key_del_mock:"},{"line_number":7725,"context_line":"            key_del_mock.side_effect \u003d Exception(\"Key not found\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"7af24918_1ec0d77b","line":7722,"updated":"2016-03-02 12:36:22.000000000","message":"tests_utils.create_volume() sets status to \u0027available\u0027 so no need for lines 7721-7722","commit_id":"b1e24e745d657cebc799d9e5797c87f326e88f4a"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"44ed9fed22f4844532b5a3a21dd47134b1328298","unresolved":false,"context_lines":[{"line_number":7727,"context_line":""},{"line_number":7728,"context_line":""},{"line_number":7729,"context_line":""},{"line_number":7730,"context_line":""},{"line_number":7731,"context_line":"@ddt.ddt"},{"line_number":7732,"context_line":"class DiscardFlagTestCase(BaseVolumeTestCase):"},{"line_number":7733,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7af24918_1e78d72a","line":7730,"updated":"2016-03-02 12:36:22.000000000","message":"Two lines (only) before the class definition.","commit_id":"b1e24e745d657cebc799d9e5797c87f326e88f4a"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"3805caf2c55f741455548868bba054df58f929da","unresolved":false,"context_lines":[{"line_number":7712,"context_line":""},{"line_number":7713,"context_line":"    def test_delete_volume_with_keymanager_exception(self):"},{"line_number":7714,"context_line":"        volume_params \u003d {"},{"line_number":7715,"context_line":"            \u0027status\u0027: \u0027creating\u0027,"},{"line_number":7716,"context_line":"            \u0027host\u0027: \u0027some_host\u0027,"},{"line_number":7717,"context_line":"            \u0027size\u0027: 1"},{"line_number":7718,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":2,"id":"7af24918_2907ffca","line":7715,"updated":"2016-03-04 16:38:21.000000000","message":"Sorry, when I suggested removing lines 7721-7722 in the previous patch I should have said to remove this one as well.","commit_id":"48e7b0e60ad4655f5c425a019571e509c40a6dc4"},{"author":{"_account_id":14305,"name":"Yuriy Nesenenko","email":"ynesenenko@mirantis.com","username":"yuriy_n"},"change_message_id":"f9aaca3c1cb6845f78abdd1b8f1509e80c85cd6a","unresolved":false,"context_lines":[{"line_number":7717,"context_line":"            \u0027size\u0027: 1"},{"line_number":7718,"context_line":"        }"},{"line_number":7719,"context_line":"        volume_api \u003d cinder.volume.api.API()"},{"line_number":7720,"context_line":"        volume \u003d tests_utils.create_volume(self.context, **volume_params)"},{"line_number":7721,"context_line":""},{"line_number":7722,"context_line":"        with mock.patch.object("},{"line_number":7723,"context_line":"            volume_api.key_manager, \u0027delete_key\u0027) as key_del_mock:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7af24918_7540b834","line":7720,"range":{"start_line":7720,"start_character":48,"end_line":7720,"end_character":55},"updated":"2016-03-03 15:30:28.000000000","message":"Here should be volume.status \u003d\u0027available\u0027\nIt should be change volume.status with \u0027available\u0027 otherwise it raises exception.InvalidVolume","commit_id":"48e7b0e60ad4655f5c425a019571e509c40a6dc4"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"3805caf2c55f741455548868bba054df58f929da","unresolved":false,"context_lines":[{"line_number":7720,"context_line":"        volume \u003d tests_utils.create_volume(self.context, **volume_params)"},{"line_number":7721,"context_line":""},{"line_number":7722,"context_line":"        with mock.patch.object("},{"line_number":7723,"context_line":"            volume_api.key_manager, \u0027delete_key\u0027) as key_del_mock:"},{"line_number":7724,"context_line":"            key_del_mock.side_effect \u003d Exception(\"Key not found\")"},{"line_number":7725,"context_line":"            volume_api.delete(self.context, volume)"},{"line_number":7726,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7af24918_690d87e7","line":7723,"updated":"2016-03-04 16:38:21.000000000","message":"move four spaces to the right","commit_id":"48e7b0e60ad4655f5c425a019571e509c40a6dc4"}],"cinder/volume/api.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"44ed9fed22f4844532b5a3a21dd47134b1328298","unresolved":false,"context_lines":[{"line_number":427,"context_line":"            except Exception as e:"},{"line_number":428,"context_line":"                msg \u003d _LW(\"Unable to delete encryption key for \""},{"line_number":429,"context_line":"                          \"volume: %s.\") % e.msg"},{"line_number":430,"context_line":"                LOG.warning(msg)"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":"        self.volume_rpcapi.delete_volume(context,"},{"line_number":433,"context_line":"                                         volume,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7af24918_338a2cc0","line":430,"updated":"2016-03-02 12:36:22.000000000","message":"suggest:\n    LOG.warning(_LW(\"Unable to delete encryption key for \"\n                    \"volume: %s.\"), e.msg, resource\u003dvolume)","commit_id":"b1e24e745d657cebc799d9e5797c87f326e88f4a"},{"author":{"_account_id":14305,"name":"Yuriy Nesenenko","email":"ynesenenko@mirantis.com","username":"yuriy_n"},"change_message_id":"c99b2952df7db1baa77095f7371c4b3cda3d05eb","unresolved":false,"context_lines":[{"line_number":426,"context_line":"                self.key_manager.delete_key(context, encryption_key_id)"},{"line_number":427,"context_line":"            except Exception as e:"},{"line_number":428,"context_line":"                LOG.warning(_LW(\"Unable to delete encryption key for \""},{"line_number":429,"context_line":"                          \"volume: %s.\") % e.msg, resource\u003dvolume)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        self.volume_rpcapi.delete_volume(context,"},{"line_number":432,"context_line":"                                         volume,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7af24918_80f7088a","line":429,"range":{"start_line":429,"start_character":59,"end_line":429,"end_character":65},"updated":"2016-03-03 14:14:06.000000000","message":"No need to duplicate error msg, it would be enough to do like that:\nLOG.warning(_LW(\"Unable to delete encryption key for \"\n                \"volume.\"), resource\u003dvolume)","commit_id":"48e7b0e60ad4655f5c425a019571e509c40a6dc4"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6dc48fcf3d551665ed877f163c02eb588f4a95ac","unresolved":false,"context_lines":[{"line_number":425,"context_line":"            try:"},{"line_number":426,"context_line":"                self.key_manager.delete_key(context, encryption_key_id)"},{"line_number":427,"context_line":"            except Exception as e:"},{"line_number":428,"context_line":"                LOG.warning(_LW(\"Unable to delete encryption key for \""},{"line_number":429,"context_line":"                                \"volume: %s.\") % e.msg, resource\u003dvolume)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        self.volume_rpcapi.delete_volume(context,"},{"line_number":432,"context_line":"                                         volume,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_49ce745b","line":429,"range":{"start_line":428,"start_character":16,"end_line":429,"end_character":72},"updated":"2016-03-07 10:32:17.000000000","message":"Use of % operator is wrong in this situation - according to our guidelines [1].\n\nIt was like that before this change, because message was going to the exception.\n\n[1] http://docs.openstack.org/developer/oslo.i18n/guidelines.html#adding-variables-to-log-messages","commit_id":"2e9cd5bfce8a934a9d936be5744e891baeadc678"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"5ec329ffdb26844781c73219b7c9ace6a7967daa","unresolved":false,"context_lines":[{"line_number":425,"context_line":"            try:"},{"line_number":426,"context_line":"                self.key_manager.delete_key(context, encryption_key_id)"},{"line_number":427,"context_line":"            except Exception as e:"},{"line_number":428,"context_line":"                LOG.warning(_LW(\"Unable to delete encryption key for \""},{"line_number":429,"context_line":"                                \"volume: %s.\") % e.msg, resource\u003dvolume)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        self.volume_rpcapi.delete_volume(context,"},{"line_number":432,"context_line":"                                         volume,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_77b05dde","line":429,"range":{"start_line":428,"start_character":16,"end_line":429,"end_character":72},"in_reply_to":"5aef4532_49ce745b","updated":"2016-03-07 15:18:58.000000000","message":"Done","commit_id":"2e9cd5bfce8a934a9d936be5744e891baeadc678"}]}
