)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b86b5631dec2521ee3da500c5929378d31571b81","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Follow-up for I6a777b4b7a5729488f939df8c40e49bd40aec3dd"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Remove some tests that, do to changes in the aforementioned patch, are"},{"line_number":10,"context_line":"essentially duplicates now."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ib4bcc6dc36723b9ddc9d8f8c2656d6e6b18bdeff"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9fb8cfa7_eb0bc426","line":9,"range":{"start_line":9,"start_character":24,"end_line":9,"end_character":26},"updated":"2019-06-12 21:55:11.000000000","message":"due","commit_id":"386d3f3a31894639035aad118a360a6e941dfcaf"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b86b5631dec2521ee3da500c5929378d31571b81","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Follow-up for I6a777b4b7a5729488f939df8c40e49bd40aec3dd"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Remove some tests that, do to changes in the aforementioned patch, are"},{"line_number":10,"context_line":"essentially duplicates now."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ib4bcc6dc36723b9ddc9d8f8c2656d6e6b18bdeff"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9fb8cfa7_ab014c08","line":9,"range":{"start_line":9,"start_character":7,"end_line":9,"end_character":17},"updated":"2019-06-12 21:55:11.000000000","message":"looks like one test","commit_id":"386d3f3a31894639035aad118a360a6e941dfcaf"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9d3e8634e1ba3145f47ab15aa696e61d3b48a2e7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Follow-up for I6a777b4b7a5729488f939df8c40e49bd40aec3dd"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Remove some tests that, do to changes in the aforementioned patch, are"},{"line_number":10,"context_line":"essentially duplicates now."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ib4bcc6dc36723b9ddc9d8f8c2656d6e6b18bdeff"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9fb8cfa7_5df2c49b","line":9,"range":{"start_line":9,"start_character":7,"end_line":9,"end_character":17},"in_reply_to":"9fb8cfa7_5a716f43","updated":"2019-06-13 20:36:09.000000000","message":"hmph, not sure how I missed the other one the first time around :(","commit_id":"386d3f3a31894639035aad118a360a6e941dfcaf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a334af0d40481547c14e5d69315e39cdef6c20f0","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Follow-up for I6a777b4b7a5729488f939df8c40e49bd40aec3dd"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Remove some tests that, do to changes in the aforementioned patch, are"},{"line_number":10,"context_line":"essentially duplicates now."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ib4bcc6dc36723b9ddc9d8f8c2656d6e6b18bdeff"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9fb8cfa7_5a716f43","line":9,"range":{"start_line":9,"start_character":7,"end_line":9,"end_character":17},"in_reply_to":"9fb8cfa7_ab014c08","updated":"2019-06-13 10:54:16.000000000","message":"Um, I count two?","commit_id":"386d3f3a31894639035aad118a360a6e941dfcaf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a334af0d40481547c14e5d69315e39cdef6c20f0","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Follow-up for I6a777b4b7a5729488f939df8c40e49bd40aec3dd"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Remove some tests that, do to changes in the aforementioned patch, are"},{"line_number":10,"context_line":"essentially duplicates now."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ib4bcc6dc36723b9ddc9d8f8c2656d6e6b18bdeff"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9fb8cfa7_3ad91b21","line":9,"range":{"start_line":9,"start_character":24,"end_line":9,"end_character":26},"in_reply_to":"9fb8cfa7_eb0bc426","updated":"2019-06-13 10:54:16.000000000","message":"Done","commit_id":"386d3f3a31894639035aad118a360a6e941dfcaf"}],"nova/tests/functional/api_sample_tests/test_volumes.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b86b5631dec2521ee3da500c5929378d31571b81","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        \"\"\"Allows subclasses to override/supplement request/response subs\"\"\""},{"line_number":258,"context_line":"        return subs"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    def test_attach_volume_to_server_new_flow(self):"},{"line_number":261,"context_line":"        self.stub_out(\u0027nova.volume.cinder.API.get\u0027, fakes.stub_volume_get)"},{"line_number":262,"context_line":"        self.stub_out(\u0027nova.volume.cinder.API.attachment_create\u0027,"},{"line_number":263,"context_line":"                      lambda *a, **k: {\u0027id\u0027: uuids.volume})"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_9e8b6466","line":260,"range":{"start_line":260,"start_character":36,"end_line":260,"end_character":45},"updated":"2019-06-12 21:55:11.000000000","message":"Since there\u0027s no longer an \"old flow\" can we rename this (drop _new_flow)?","commit_id":"386d3f3a31894639035aad118a360a6e941dfcaf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a334af0d40481547c14e5d69315e39cdef6c20f0","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        \"\"\"Allows subclasses to override/supplement request/response subs\"\"\""},{"line_number":258,"context_line":"        return subs"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    def test_attach_volume_to_server_new_flow(self):"},{"line_number":261,"context_line":"        self.stub_out(\u0027nova.volume.cinder.API.get\u0027, fakes.stub_volume_get)"},{"line_number":262,"context_line":"        self.stub_out(\u0027nova.volume.cinder.API.attachment_create\u0027,"},{"line_number":263,"context_line":"                      lambda *a, **k: {\u0027id\u0027: uuids.volume})"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_7ad31305","line":260,"range":{"start_line":260,"start_character":36,"end_line":260,"end_character":45},"in_reply_to":"9fb8cfa7_9e8b6466","updated":"2019-06-13 10:54:16.000000000","message":"I\u0027d avoided that because of [1]. Guess it would make sense here though\n\n[1] https://review.opendev.org/#/c/621061/3/nova/tests/unit/compute/test_compute_api.py@6798","commit_id":"386d3f3a31894639035aad118a360a6e941dfcaf"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b86b5631dec2521ee3da500c5929378d31571b81","unresolved":false,"context_lines":[{"line_number":261,"context_line":"        self.stub_out(\u0027nova.volume.cinder.API.get\u0027, fakes.stub_volume_get)"},{"line_number":262,"context_line":"        self.stub_out(\u0027nova.volume.cinder.API.attachment_create\u0027,"},{"line_number":263,"context_line":"                      lambda *a, **k: {\u0027id\u0027: uuids.volume})"},{"line_number":264,"context_line":"        self.stub_out(\u0027nova.objects.BlockDeviceMapping.save\u0027,"},{"line_number":265,"context_line":"                      lambda *a, **k: None)"},{"line_number":266,"context_line":"        device_name \u003d \u0027/dev/vdd\u0027"},{"line_number":267,"context_line":"        bdm \u003d objects.BlockDeviceMapping()"},{"line_number":268,"context_line":"        bdm[\u0027device_name\u0027] \u003d device_name"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_fef14002","line":265,"range":{"start_line":264,"start_character":0,"end_line":265,"end_character":43},"updated":"2019-06-12 21:55:11.000000000","message":"This is a delta from the deleted test and is unnecessary (I pulled it down and tried it to be certain) so can we remove it?","commit_id":"386d3f3a31894639035aad118a360a6e941dfcaf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a334af0d40481547c14e5d69315e39cdef6c20f0","unresolved":false,"context_lines":[{"line_number":261,"context_line":"        self.stub_out(\u0027nova.volume.cinder.API.get\u0027, fakes.stub_volume_get)"},{"line_number":262,"context_line":"        self.stub_out(\u0027nova.volume.cinder.API.attachment_create\u0027,"},{"line_number":263,"context_line":"                      lambda *a, **k: {\u0027id\u0027: uuids.volume})"},{"line_number":264,"context_line":"        self.stub_out(\u0027nova.objects.BlockDeviceMapping.save\u0027,"},{"line_number":265,"context_line":"                      lambda *a, **k: None)"},{"line_number":266,"context_line":"        device_name \u003d \u0027/dev/vdd\u0027"},{"line_number":267,"context_line":"        bdm \u003d objects.BlockDeviceMapping()"},{"line_number":268,"context_line":"        bdm[\u0027device_name\u0027] \u003d device_name"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_9ace0758","line":265,"range":{"start_line":264,"start_character":0,"end_line":265,"end_character":43},"in_reply_to":"9fb8cfa7_fef14002","updated":"2019-06-13 10:54:16.000000000","message":"Done","commit_id":"386d3f3a31894639035aad118a360a6e941dfcaf"}],"nova/tests/unit/compute/test_compute_api.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9d3e8634e1ba3145f47ab15aa696e61d3b48a2e7","unresolved":false,"context_lines":[{"line_number":4137,"context_line":"    def test_validate_bdm_with_error_volume(self, mock_attach_create,"},{"line_number":4138,"context_line":"                                            mock_get):"},{"line_number":4139,"context_line":"        # Tests that an InvalidInput exception raised from"},{"line_number":4140,"context_line":"        # volume_api.reserve_volume due to the volume status not being"},{"line_number":4141,"context_line":"        # \u0027available\u0027 results in _validate_bdm re-raising InvalidVolume."},{"line_number":4142,"context_line":"        instance \u003d self._create_instance_obj()"},{"line_number":4143,"context_line":"        del instance.id"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_bf8170c5","side":"PARENT","line":4140,"range":{"start_line":4140,"start_character":10,"end_line":4140,"end_character":35},"updated":"2019-06-13 20:36:09.000000000","message":"mph, this was wrong anyway (likely bad copy/paste)","commit_id":"b0761f67e924dfb4187706931d455f803e961119"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9d3e8634e1ba3145f47ab15aa696e61d3b48a2e7","unresolved":false,"context_lines":[{"line_number":4167,"context_line":"                          self.context,"},{"line_number":4168,"context_line":"                          instance, instance_type, bdms)"},{"line_number":4169,"context_line":""},{"line_number":4170,"context_line":"    @mock.patch.object(cinder.API, \u0027get\u0027)"},{"line_number":4171,"context_line":"    @mock.patch.object(cinder.API, \u0027attachment_create\u0027,"},{"line_number":4172,"context_line":"                       side_effect\u003dexception.InvalidInput(reason\u003d\u0027error\u0027))"},{"line_number":4173,"context_line":"    def test_validate_bdm_with_error_volume_new_flow(self, mock_attach_create,"},{"line_number":4174,"context_line":"                                                     mock_get):"},{"line_number":4175,"context_line":"        # Tests that an InvalidInput exception raised from"},{"line_number":4176,"context_line":"        # volume_api.attachment_create due to the volume status not being"},{"line_number":4177,"context_line":"        # \u0027available\u0027 results in _validate_bdm re-raising InvalidVolume."},{"line_number":4178,"context_line":"        instance \u003d self._create_instance_obj()"},{"line_number":4179,"context_line":"        del instance.id"},{"line_number":4180,"context_line":"        instance_type \u003d self._create_flavor()"},{"line_number":4181,"context_line":"        volume_id \u003d \u0027e856840e-9f5b-4894-8bde-58c6e29ac1e8\u0027"},{"line_number":4182,"context_line":"        volume_info \u003d {\u0027status\u0027: \u0027error\u0027,"},{"line_number":4183,"context_line":"                       \u0027attach_status\u0027: \u0027detached\u0027,"},{"line_number":4184,"context_line":"                       \u0027id\u0027: volume_id, \u0027multiattach\u0027: False}"},{"line_number":4185,"context_line":"        mock_get.return_value \u003d volume_info"},{"line_number":4186,"context_line":"        bdms \u003d [objects.BlockDeviceMapping("},{"line_number":4187,"context_line":"                **fake_block_device.FakeDbBlockDeviceDict("},{"line_number":4188,"context_line":"                {"},{"line_number":4189,"context_line":"                 \u0027boot_index\u0027: 0,"},{"line_number":4190,"context_line":"                 \u0027volume_id\u0027: volume_id,"},{"line_number":4191,"context_line":"                 \u0027source_type\u0027: \u0027volume\u0027,"},{"line_number":4192,"context_line":"                 \u0027destination_type\u0027: \u0027volume\u0027,"},{"line_number":4193,"context_line":"                 \u0027device_name\u0027: \u0027vda\u0027,"},{"line_number":4194,"context_line":"                }))]"},{"line_number":4195,"context_line":""},{"line_number":4196,"context_line":"        self.assertRaises(exception.InvalidVolume,"},{"line_number":4197,"context_line":"                          self.compute_api._validate_bdm,"},{"line_number":4198,"context_line":"                          self.context,"},{"line_number":4199,"context_line":"                          instance, instance_type, bdms)"},{"line_number":4200,"context_line":""},{"line_number":4201,"context_line":"        mock_get.assert_called_once_with(self.context, volume_id)"},{"line_number":4202,"context_line":"        mock_attach_create.assert_called_once_with("},{"line_number":4203,"context_line":"            self.context, volume_id, instance.uuid)"},{"line_number":4204,"context_line":""},{"line_number":4205,"context_line":"    def test_validate_bdm_missing_boot_index(self):"},{"line_number":4206,"context_line":"        \"\"\"Tests that _validate_bdm will fail if there is no boot_index\u003d0 entry"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_3f7580fa","line":4203,"range":{"start_line":4170,"start_character":0,"end_line":4203,"end_character":51},"updated":"2019-06-13 20:36:09.000000000","message":"logically identical ✔","commit_id":"f0611bed18b0ef47ca7584c564ed9a2291e3ab90"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"cf76a4035f8ffe663f9a29bd825c13db0ba8fda0","unresolved":false,"context_lines":[{"line_number":4407,"context_line":"        self._test_provision_instances_with_cinder_error("},{"line_number":4408,"context_line":"            expected_exception\u003dexception.CinderConnectionFailed)"},{"line_number":4409,"context_line":""},{"line_number":4410,"context_line":"    @mock.patch.object(cinder.API, \u0027get\u0027, new\u003dmock.Mock(),"},{"line_number":4411,"context_line":"                       return_value\u003d{\u0027id\u0027: \u00271\u0027, \u0027multiattach\u0027: False})"},{"line_number":4412,"context_line":"    @mock.patch.object(cinder.API, \u0027check_availability_zone\u0027, new\u003dmock.Mock())"},{"line_number":4413,"context_line":"    @mock.patch.object(cinder.API, \u0027attachment_create\u0027, new\u003dmock.Mock(),"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_0de967e4","line":4410,"updated":"2019-06-14 15:41:11.000000000","message":"✔","commit_id":"16a5b31c2ab363e341c06d907128fa9eb0b4c138"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"542b65749912273209fbcd1e743d28911d2e677b","unresolved":false,"context_lines":[{"line_number":4407,"context_line":"        self._test_provision_instances_with_cinder_error("},{"line_number":4408,"context_line":"            expected_exception\u003dexception.CinderConnectionFailed)"},{"line_number":4409,"context_line":""},{"line_number":4410,"context_line":"    @mock.patch.object(cinder.API, \u0027get\u0027, new\u003dmock.Mock(),"},{"line_number":4411,"context_line":"                       return_value\u003d{\u0027id\u0027: \u00271\u0027, \u0027multiattach\u0027: False})"},{"line_number":4412,"context_line":"    @mock.patch.object(cinder.API, \u0027check_availability_zone\u0027, new\u003dmock.Mock())"},{"line_number":4413,"context_line":"    @mock.patch.object(cinder.API, \u0027attachment_create\u0027, new\u003dmock.Mock(),"},{"line_number":4414,"context_line":"                       side_effect\u003dexception.InvalidInput(reason\u003d\u0027error\u0027))"},{"line_number":4415,"context_line":"    def test_provision_instances_with_error_volume(self):"},{"line_number":4416,"context_line":"        self._test_provision_instances_with_cinder_error("},{"line_number":4417,"context_line":"            expected_exception\u003dexception.InvalidVolume)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_c2a9d623","line":4414,"range":{"start_line":4410,"start_character":0,"end_line":4414,"end_character":74},"updated":"2019-06-15 00:59:01.000000000","message":"Whoops, the return_value/side_effect needs to go inside the Mock() constructor:\n\n    @mock.patch.object(cinder.API, \u0027get\u0027, new\u003dmock.Mock(\n        return_value\u003d{\u0027id\u0027: \u00271\u0027, \u0027multiattach\u0027: False}))\n    @mock.patch.object(cinder.API, \u0027check_availability_zone\u0027, new\u003dmock.Mock())\n    @mock.patch.object(cinder.API, \u0027attachment_create\u0027, new\u003dmock.Mock(\n        side_effect\u003dexception.InvalidInput(reason\u003d\u0027error\u0027)))","commit_id":"16a5b31c2ab363e341c06d907128fa9eb0b4c138"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"47aa125f79039b530699d06d84ee2c6bdb8eb42b","unresolved":false,"context_lines":[{"line_number":4407,"context_line":"        self._test_provision_instances_with_cinder_error("},{"line_number":4408,"context_line":"            expected_exception\u003dexception.CinderConnectionFailed)"},{"line_number":4409,"context_line":""},{"line_number":4410,"context_line":"    @mock.patch.object(cinder.API, \u0027get\u0027, new\u003dmock.Mock(),"},{"line_number":4411,"context_line":"                       return_value\u003d{\u0027id\u0027: \u00271\u0027, \u0027multiattach\u0027: False})"},{"line_number":4412,"context_line":"    @mock.patch.object(cinder.API, \u0027check_availability_zone\u0027, new\u003dmock.Mock())"},{"line_number":4413,"context_line":"    @mock.patch.object(cinder.API, \u0027attachment_create\u0027, new\u003dmock.Mock(),"},{"line_number":4414,"context_line":"                       side_effect\u003dexception.InvalidInput(reason\u003d\u0027error\u0027))"},{"line_number":4415,"context_line":"    def test_provision_instances_with_error_volume(self):"},{"line_number":4416,"context_line":"        self._test_provision_instances_with_cinder_error("},{"line_number":4417,"context_line":"            expected_exception\u003dexception.InvalidVolume)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_0facf2ea","line":4414,"range":{"start_line":4410,"start_character":0,"end_line":4414,"end_character":74},"in_reply_to":"9fb8cfa7_c2a9d623","updated":"2019-06-15 15:42:01.000000000","message":"Done","commit_id":"16a5b31c2ab363e341c06d907128fa9eb0b4c138"}]}
