)]}'
{"nova/tests/functional/regressions/test_bug_1764883.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e9241084b8d8e7ed6d6b4173d2184e6650548adb","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class TestEvacuationWithSourceReturningDuringRebuild("},{"line_number":27,"context_line":"        test.TestCase, integrated_helpers.InstanceHelperMixin):"},{"line_number":28,"context_line":"    \"\"\"Asserts the behaviour of bug #1764883"},{"line_number":29,"context_line":"    \"\"\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_7c2c6d92","line":28,"updated":"2018-06-25 12:56:53.000000000","message":"Generally the docstrings for these type of regression tests explain the regression and what the test is doing.","commit_id":"fa103537a525169f4f4f1721caf0c52f3ae97c5e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e9241084b8d8e7ed6d6b4173d2184e6650548adb","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        original_rebuild \u003d manager_class._do_rebuild_instance"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        def slow_rebuild(self_, context, instance, *args, **kwargs):"},{"line_number":83,"context_line":"            time.sleep(0.5)"},{"line_number":84,"context_line":"            original_rebuild(self_, context, instance, *args, **kwargs)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        self.stub_out(\u0027nova.compute.manager.ComputeManager.\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_bc92059e","line":83,"range":{"start_line":83,"start_character":12,"end_line":83,"end_character":27},"updated":"2018-06-25 12:56:53.000000000","message":"This seems like it could be racy depending on the test node...are there other more reliable things we could use? Like checking instance status, or listen to notifications, something like that? Should you at least have a loop to check the instance / migration status as pre-migrating?\n\nIn fact, couldn\u0027t you just start the source compute from this?","commit_id":"fa103537a525169f4f4f1721caf0c52f3ae97c5e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e9241084b8d8e7ed6d6b4173d2184e6650548adb","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        self._wait_for_migration_status(server, [\u0027pre-migrating\u0027])"},{"line_number":110,"context_line":"        self.computes.get(source_compute).start()"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        # Wait for the instance to go into an ERROR state, update our copy and"},{"line_number":113,"context_line":"        # ensure the task_state is None and it has remained on the source"},{"line_number":114,"context_line":"        self._wait_for_state_change(self.api, server, \u0027ERROR\u0027)"},{"line_number":115,"context_line":"        server \u003d self.api.get_server(server[\u0027id\u0027])"},{"line_number":116,"context_line":"        self.assertIsNone(server[\u0027OS-EXT-STS:task_state\u0027])"},{"line_number":117,"context_line":"        self.assertEqual(source_compute, server[\u0027OS-EXT-SRV-ATTR:host\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_1c3779b2","line":117,"range":{"start_line":112,"start_character":8,"end_line":117,"end_character":72},"updated":"2018-06-25 12:56:53.000000000","message":"We normally leave a FIXME note about the bug and how we\u0027re asserting the failure scenario, which will be changed once the bug is fixed.","commit_id":"fa103537a525169f4f4f1721caf0c52f3ae97c5e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ca865247184b60c077ecb653a339b3cf64829b83","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        def start_src_rebuild(self_, context, instance, *args, **kwargs):"},{"line_number":89,"context_line":"            server \u003d self.api.get_server(instance.uuid)"},{"line_number":90,"context_line":"            # Start the src compute once the migration is pre-migrating."},{"line_number":91,"context_line":"            self._wait_for_migration_status(server, [\u0027pre-migrating\u0027])"},{"line_number":92,"context_line":"            self.computes.get(self.source_compute).start()"},{"line_number":93,"context_line":"            original_rebuild(self_, context, instance, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_2ef9a980","line":90,"updated":"2018-07-20 19:01:22.000000000","message":"OK and this happens when the dest host starts the rebuild_claim for the evacuation:\n\nhttps://github.com/openstack/nova/blob/d9e04c4ff0b1a9c3383f1848dc846e93030d83cb/nova/compute/resource_tracker.py#L244\n\nhttps://github.com/openstack/nova/blob/d9e04c4ff0b1a9c3383f1848dc846e93030d83cb/nova/compute/resource_tracker.py#L394","commit_id":"b9213398c785a0b54920754d50190e478293fbe8"}]}
