)]}'
{"nova/tests/functional/regressions/test_bug_1735407.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"13a46f9826beaa07ac17d6fffc714d259bcecaea","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        self.api.force_down_service(\u0027host2\u0027, \u0027nova-compute\u0027, True)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        # start a third compute to have place for one of the instances"},{"line_number":125,"context_line":"        fake.set_nodes([\u0027host3\u0027])"},{"line_number":126,"context_line":"        self.compute3 \u003d self.start_service(\u0027compute\u0027, host\u003d\u0027host3\u0027)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        # evacuate both instances"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa0c359_bd93894f","line":125,"range":{"start_line":125,"start_character":8,"end_line":125,"end_character":33},"updated":"2018-02-05 15:32:57.000000000","message":"Don\u0027t we also need:\n\nself.addCleanup(fake.restore_nodes)\n\n?","commit_id":"acf2cff3053f844b0b13a392a1567ae8af91e5bc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"534fa9fc802578e8076e0f0ed5739f169c88c149","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        self.api.force_down_service(\u0027host2\u0027, \u0027nova-compute\u0027, True)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        # start a third compute to have place for one of the instances"},{"line_number":125,"context_line":"        fake.set_nodes([\u0027host3\u0027])"},{"line_number":126,"context_line":"        self.compute3 \u003d self.start_service(\u0027compute\u0027, host\u003d\u0027host3\u0027)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        # evacuate both instances"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa0c359_c86495bc","line":125,"range":{"start_line":125,"start_character":8,"end_line":125,"end_character":33},"in_reply_to":"3fa0c359_bd93894f","updated":"2018-02-05 16:18:36.000000000","message":"I think restore_nodes will run due to host2 and host1 already but as this part of fake is pretty magical I agree that better safe than sorry.\nDone.","commit_id":"acf2cff3053f844b0b13a392a1567ae8af91e5bc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"13a46f9826beaa07ac17d6fffc714d259bcecaea","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        self.compute3 \u003d self.start_service(\u0027compute\u0027, host\u003d\u0027host3\u0027)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        # evacuate both instances"},{"line_number":129,"context_line":"        post \u003d {\u0027evacuate\u0027: {\u0027onSharedStorage\u0027: False}}"},{"line_number":130,"context_line":"        self.api.post_server_action(server1[\u0027id\u0027], post)"},{"line_number":131,"context_line":"        self.api.post_server_action(server2[\u0027id\u0027], post)"},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa0c359_ddabf572","line":129,"range":{"start_line":129,"start_character":30,"end_line":129,"end_character":45},"updated":"2018-02-05 15:32:57.000000000","message":"If we used at least microversion 2.14 we wouldn\u0027t need to specify this.","commit_id":"acf2cff3053f844b0b13a392a1567ae8af91e5bc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"534fa9fc802578e8076e0f0ed5739f169c88c149","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        self.compute3 \u003d self.start_service(\u0027compute\u0027, host\u003d\u0027host3\u0027)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        # evacuate both instances"},{"line_number":129,"context_line":"        post \u003d {\u0027evacuate\u0027: {\u0027onSharedStorage\u0027: False}}"},{"line_number":130,"context_line":"        self.api.post_server_action(server1[\u0027id\u0027], post)"},{"line_number":131,"context_line":"        self.api.post_server_action(server2[\u0027id\u0027], post)"},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa0c359_28f899c2","line":129,"range":{"start_line":129,"start_character":30,"end_line":129,"end_character":45},"in_reply_to":"3fa0c359_ddabf572","updated":"2018-02-05 16:18:36.000000000","message":"Done","commit_id":"acf2cff3053f844b0b13a392a1567ae8af91e5bc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"13a46f9826beaa07ac17d6fffc714d259bcecaea","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        self.api.post_server_action(server1[\u0027id\u0027], post)"},{"line_number":131,"context_line":"        self.api.post_server_action(server2[\u0027id\u0027], post)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        # make sure that the rebuild is started and then finished"},{"line_number":134,"context_line":"        server1 \u003d self._wait_for_server_parameter("},{"line_number":135,"context_line":"            self.api, server1, {\u0027OS-EXT-STS:task_state\u0027: \u0027rebuilding\u0027})"},{"line_number":136,"context_line":"        server2 \u003d self._wait_for_server_parameter("}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa0c359_3df69991","line":133,"updated":"2018-02-05 15:32:57.000000000","message":"This seems a little racy. What if by the time we\u0027re checking task_state on server2, it\u0027s no longer \u0027rebuilding\u0027?","commit_id":"acf2cff3053f844b0b13a392a1567ae8af91e5bc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"534fa9fc802578e8076e0f0ed5739f169c88c149","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        self.api.post_server_action(server1[\u0027id\u0027], post)"},{"line_number":131,"context_line":"        self.api.post_server_action(server2[\u0027id\u0027], post)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        # make sure that the rebuild is started and then finished"},{"line_number":134,"context_line":"        server1 \u003d self._wait_for_server_parameter("},{"line_number":135,"context_line":"            self.api, server1, {\u0027OS-EXT-STS:task_state\u0027: \u0027rebuilding\u0027})"},{"line_number":136,"context_line":"        server2 \u003d self._wait_for_server_parameter("}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa0c359_686c6108","line":133,"in_reply_to":"3fa0c359_3df69991","updated":"2018-02-05 16:18:36.000000000","message":"You are right. This is race. I did some hardening with the fake_rebuild.","commit_id":"acf2cff3053f844b0b13a392a1567ae8af91e5bc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1b2441b59f0f727e0a7cf051a08fcb69ecf63d85","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        self.api.post_server_action(server2[\u0027id\u0027], post)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        # make sure that the rebuild is started and then finished"},{"line_number":139,"context_line":"        for _ in range(10):"},{"line_number":140,"context_line":"            if len(self.rebuild_called) \u003d\u003d 2:"},{"line_number":141,"context_line":"                break"},{"line_number":142,"context_line":"            time.sleep(0.5)"},{"line_number":143,"context_line":"        server1 \u003d self._wait_for_server_parameter("},{"line_number":144,"context_line":"            self.api, server1, {\u0027OS-EXT-STS:task_state\u0027: None})"},{"line_number":145,"context_line":"        server2 \u003d self._wait_for_server_parameter("}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa0c359_b804f47c","line":142,"range":{"start_line":139,"start_character":8,"end_line":142,"end_character":27},"updated":"2018-02-05 17:38:36.000000000","message":"Could we wait for 2 notifications instead?","commit_id":"e5f45f387ef926209efda074e73282180169e6b2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"53b52c5c5c85a517795a0cf23d935d17a3080dd0","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        self.api.post_server_action(server2[\u0027id\u0027], post)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        # make sure that the rebuild is started and then finished"},{"line_number":139,"context_line":"        for _ in range(10):"},{"line_number":140,"context_line":"            if len(self.rebuild_called) \u003d\u003d 2:"},{"line_number":141,"context_line":"                break"},{"line_number":142,"context_line":"            time.sleep(0.5)"},{"line_number":143,"context_line":"        server1 \u003d self._wait_for_server_parameter("},{"line_number":144,"context_line":"            self.api, server1, {\u0027OS-EXT-STS:task_state\u0027: None})"},{"line_number":145,"context_line":"        server2 \u003d self._wait_for_server_parameter("}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa0c359_cb624c17","line":142,"range":{"start_line":139,"start_character":8,"end_line":142,"end_character":27},"in_reply_to":"3fa0c359_b804f47c","updated":"2018-02-05 18:18:53.000000000","message":"Good idea. It was even easier than I thought.","commit_id":"e5f45f387ef926209efda074e73282180169e6b2"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"22a7378dbd03d830c39be71fe0440402387173d0","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            # manager\u0027s _rebuild_default_impl as those run after the late"},{"line_number":88,"context_line":"            # validation"},{"line_number":89,"context_line":"            if instance.host \u003d\u003d \u0027host1\u0027:"},{"line_number":90,"context_line":"                time.sleep(0.5)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"            original_rebuild(self_, context, instance, *args, **kwargs)"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa0c359_f6bb59e2","line":90,"updated":"2018-02-06 08:54:09.000000000","message":"This feels unstable.  Can we calling \u0027self._wait_for_migration_status\u0027 instead of a sleep?","commit_id":"d3c736dec1310d4e97db0c09a79e2344f8b89991"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ca0d12eaca2e7cb3c2bde351b6d8f53fd81807a7","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            # manager\u0027s _rebuild_default_impl as those run after the late"},{"line_number":88,"context_line":"            # validation"},{"line_number":89,"context_line":"            if instance.host \u003d\u003d \u0027host1\u0027:"},{"line_number":90,"context_line":"                time.sleep(0.5)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"            original_rebuild(self_, context, instance, *args, **kwargs)"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa0c359_7552dc15","line":90,"in_reply_to":"3fa0c359_f6bb59e2","updated":"2018-02-06 12:55:25.000000000","message":"That is not trivial to do as here in this fake method we are in the middle of the compute/manager and did not really know about the another server and we would need the another server\u0027s state. But we might wait for instance.rebuild.end notification here instead as that is emitted in _do_rebuild_instance and we can simply wait for the event_type without knowing the another servers uuid.\nDone","commit_id":"d3c736dec1310d4e97db0c09a79e2344f8b89991"}]}
