)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aca891bbb14c9f630810f906301b3105ba8b131a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Transform instance.volume_detach notification"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implements: bp versioned-notification-transformation-ocata"},{"line_number":10,"context_line":"Change-Id: I2d9af7c146681b2a20a1f1d8360c81d2e7d96796"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"fa31d9ce_24070083","line":9,"updated":"2017-02-15 11:46:23.000000000","message":"if you have to respin the patch then please change this to versioned-notification-transformation-pike","commit_id":"9d265314420a263788910d39b9fc21794cfb8b67"}],"doc/notification_samples/instance-volume_detach-end.json":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ebd0d8b4aa665d54449abf8b0b24db0848124978","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"event_type\": \"instance.volume_detach.end\","},{"line_number":3,"context_line":"    \"payload\": {"},{"line_number":4,"context_line":"        \"nova_object.data\": {"}],"source_content_type":"application/json","patch_set":30,"id":"5ff73747_51f8167b","line":1,"updated":"2017-05-02 20:33:00.000000000","message":"Aren\u0027t you missing the samples for this to get published?\n\nhttps://review.openstack.org/#/c/401992/49/nova/notifications/objects/instance.py@364","commit_id":"a8bb181ebc2a179c1c0567d4e4568047a32dd3c1"}],"nova/compute/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d76e2ceae1646440a9f25c940c94a1f994bbb01b","unresolved":false,"context_lines":[{"line_number":4867,"context_line":"        self.notifier.info(context, \u0027volume.usage\u0027,"},{"line_number":4868,"context_line":"                           compute_utils.usage_volume_info(vol_usage))"},{"line_number":4869,"context_line":""},{"line_number":4870,"context_line":"    def _detach_volume(self, context, volume_id, instance, destroy_bdm\u003dTrue,"},{"line_number":4871,"context_line":"                       attachment_id\u003dNone):"},{"line_number":4872,"context_line":"        \"\"\"Detach a volume from an instance."},{"line_number":4873,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5ff73747_715d52e8","line":4870,"range":{"start_line":4870,"start_character":8,"end_line":4870,"end_character":22},"updated":"2017-05-02 20:19:43.000000000","message":"This is used for more than just the detach volume API operation, but it\u0027s also called from the rebuild operation. Given we already send the legacy notification for volume.detach in that case maybe it doesn\u0027t matter, but the consumer doesn\u0027t know if the volume is being detached because of a rebuild or because of a normal volume detach. I guess they could figure that it via the task_state which is set in the rebuild case but not the volume detach case.\n\nAlso, it\u0027s sort of odd that we have a special volume_attach.error notification but we don\u0027t have something like that for when volume detach fails.","commit_id":"a8bb181ebc2a179c1c0567d4e4568047a32dd3c1"}],"nova/tests/functional/notification_sample_tests/test_instance.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"4dd7b0e61823030434796395658b67d2ffd17438","unresolved":false,"context_lines":[{"line_number":776,"context_line":"        # 0. volume_attach-start"},{"line_number":777,"context_line":"        # 1. volume_attach-end"},{"line_number":778,"context_line":"        # 2. volume_detach-start"},{"line_number":779,"context_line":"        # 2. volume_detach-end"},{"line_number":780,"context_line":"        self.assertEqual(4, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":781,"context_line":"        self._verify_notification("},{"line_number":782,"context_line":"            \u0027instance-volume_attach-start\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"bff0334d_a1808ec0","line":779,"range":{"start_line":779,"start_character":10,"end_line":779,"end_character":11},"updated":"2017-04-11 03:56:49.000000000","message":"nit: s/2/3/","commit_id":"0641ade72e7e7ad0acaf590a341257393a9409a9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"884e409c91a011d2934311df76c844f0b0ec94d3","unresolved":false,"context_lines":[{"line_number":775,"context_line":"    def _test_volume_attach_detach_server(self, server):"},{"line_number":776,"context_line":"        self._attach_volume_to_server(server, self.cinder.SWAP_OLD_VOL)"},{"line_number":777,"context_line":"        self._detach_volume_from_server(server, self.cinder.SWAP_OLD_VOL)"},{"line_number":778,"context_line":""},{"line_number":779,"context_line":"        # 0. volume_attach-start"},{"line_number":780,"context_line":"        # 1. volume_attach-end"},{"line_number":781,"context_line":"        # 2. volume_detach-start"}],"source_content_type":"text/x-python","patch_set":30,"id":"5ff73747_e25dbbe9","line":778,"updated":"2017-04-26 09:57:27.000000000","message":"nit: this can be made more strict to validate that the attach notification received after _attach_volume_to_server but before _detach_volume_from_server","commit_id":"a8bb181ebc2a179c1c0567d4e4568047a32dd3c1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d76e2ceae1646440a9f25c940c94a1f994bbb01b","unresolved":false,"context_lines":[{"line_number":775,"context_line":"    def _test_volume_attach_detach_server(self, server):"},{"line_number":776,"context_line":"        self._attach_volume_to_server(server, self.cinder.SWAP_OLD_VOL)"},{"line_number":777,"context_line":"        self._detach_volume_from_server(server, self.cinder.SWAP_OLD_VOL)"},{"line_number":778,"context_line":""},{"line_number":779,"context_line":"        # 0. volume_attach-start"},{"line_number":780,"context_line":"        # 1. volume_attach-end"},{"line_number":781,"context_line":"        # 2. volume_detach-start"}],"source_content_type":"text/x-python","patch_set":30,"id":"5ff73747_51f7f6d5","line":778,"in_reply_to":"5ff73747_e25dbbe9","updated":"2017-05-02 20:19:43.000000000","message":"+1","commit_id":"a8bb181ebc2a179c1c0567d4e4568047a32dd3c1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d76e2ceae1646440a9f25c940c94a1f994bbb01b","unresolved":false,"context_lines":[{"line_number":779,"context_line":"        # 0. volume_attach-start"},{"line_number":780,"context_line":"        # 1. volume_attach-end"},{"line_number":781,"context_line":"        # 2. volume_detach-start"},{"line_number":782,"context_line":"        # 2. volume_detach-end"},{"line_number":783,"context_line":"        self.assertEqual(4, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":784,"context_line":"        self._verify_notification("},{"line_number":785,"context_line":"            \u0027instance-volume_attach-start\u0027,"}],"source_content_type":"text/x-python","patch_set":30,"id":"5ff73747_7112f20b","line":782,"range":{"start_line":782,"start_character":10,"end_line":782,"end_character":11},"updated":"2017-05-02 20:19:43.000000000","message":"3","commit_id":"a8bb181ebc2a179c1c0567d4e4568047a32dd3c1"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4f42a41b311c7257ecf089c3046dbea9ed0248c0","unresolved":false,"context_lines":[{"line_number":2441,"context_line":"                \u0027_notify_about_instance_usage\u0027)"},{"line_number":2442,"context_line":"    @mock.patch(\u0027nova.compute.utils.notify_about_volume_attach_detach\u0027)"},{"line_number":2443,"context_line":"    def _test_detach_volume(self, mock_notify_attach_detach, notify_inst_usage,"},{"line_number":2444,"context_line":"                            detach, bdm_get, destroy_bdm\u003dTrue):"},{"line_number":2445,"context_line":"        volume_id \u003d uuids.volume"},{"line_number":2446,"context_line":"        inst_obj \u003d mock.Mock()"},{"line_number":2447,"context_line":"        inst_obj.uuid \u003d uuids.instance"}],"source_content_type":"text/x-python","patch_set":20,"id":"1a1ced50_83c13f83","line":2444,"updated":"2017-03-17 10:51:16.000000000","message":"Let\u0027s add an assert that the mock is called.","commit_id":"bff12384305cdb11de0eb328b769ed53b8b2465a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4f42a41b311c7257ecf089c3046dbea9ed0248c0","unresolved":false,"context_lines":[{"line_number":2513,"context_line":"    @mock.patch(\u0027nova.objects.BlockDeviceMapping.get_by_volume_and_instance\u0027)"},{"line_number":2514,"context_line":"    @mock.patch(\u0027nova.compute.manager.ComputeManager.\u0027"},{"line_number":2515,"context_line":"                \u0027_notify_about_instance_usage\u0027)"},{"line_number":2516,"context_line":"    @mock.patch(\u0027nova.compute.utils.notify_about_volume_attach_detach\u0027)"},{"line_number":2517,"context_line":"    def _test_detach_volume_evacuate(self, conn_info_str,"},{"line_number":2518,"context_line":"                                     mock_notify_attach_detach,"},{"line_number":2519,"context_line":"                                     notify_inst_usage, bdm_get,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1a1ced50_c3bb370d","line":2516,"updated":"2017-03-17 10:51:16.000000000","message":"ditto. It is even more important as it is a special case  that is not covered in the test_compute.py","commit_id":"bff12384305cdb11de0eb328b769ed53b8b2465a"}]}
