)]}'
{"nova/tests/functional/regressions/test_bug_1781286.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"04fc153f44ad571a3910ed14a8238b5b7063a40d","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_server_create_reschedule_blocked_az_up_call(self):"},{"line_number":58,"context_line":"        # We need to stub out the call to get_host_availability_zone to blow"},{"line_number":59,"context_line":"        # up once we have gone to the compute service. With the way out"},{"line_number":60,"context_line":"        # RPC/DB fixtures are setup it\u0027s non-trivial to try and separate a"},{"line_number":61,"context_line":"        # superconductor from a cell conductor so we can configure the cell"},{"line_number":62,"context_line":"        # conductor from not having access to the API DB but that would be a"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_ebcdc286","line":59,"range":{"start_line":59,"start_character":68,"end_line":59,"end_character":71},"updated":"2019-10-01 16:49:03.000000000","message":"\"our\"","commit_id":"13dc504f968a8576f912ee18e55fa1b8c412c93f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"37089b4a3a7253b1c16246af41305955163fa0b7","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_server_create_reschedule_blocked_az_up_call(self):"},{"line_number":58,"context_line":"        # We need to stub out the call to get_host_availability_zone to blow"},{"line_number":59,"context_line":"        # up once we have gone to the compute service. With the way out"},{"line_number":60,"context_line":"        # RPC/DB fixtures are setup it\u0027s non-trivial to try and separate a"},{"line_number":61,"context_line":"        # superconductor from a cell conductor so we can configure the cell"},{"line_number":62,"context_line":"        # conductor from not having access to the API DB but that would be a"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_6ee7a048","line":59,"range":{"start_line":59,"start_character":68,"end_line":59,"end_character":71},"in_reply_to":"3fa7e38b_ebcdc286","updated":"2019-10-01 17:22:12.000000000","message":"Done","commit_id":"13dc504f968a8576f912ee18e55fa1b8c412c93f"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"04fc153f44ad571a3910ed14a8238b5b7063a40d","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        # can use the API."},{"line_number":88,"context_line":"        fake_notifier.wait_for_versioned_notifications("},{"line_number":89,"context_line":"            \u0027compute_task.build_instances.error\u0027)"},{"line_number":90,"context_line":"        self.az_mock.stop()"},{"line_number":91,"context_line":"        server \u003d self._wait_for_server_parameter("},{"line_number":92,"context_line":"            self.api, server, {\u0027status\u0027: \u0027ERROR\u0027,"},{"line_number":93,"context_line":"                               \u0027OS-EXT-SRV-ATTR:host\u0027: None,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_cbeec6b3","line":90,"updated":"2019-10-01 16:49:03.000000000","message":"Something\u0027s weird - if I comment this out, the test still passes. Are we sure just listing servers actually hits our mock?","commit_id":"13dc504f968a8576f912ee18e55fa1b8c412c93f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"37089b4a3a7253b1c16246af41305955163fa0b7","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        # can use the API."},{"line_number":88,"context_line":"        fake_notifier.wait_for_versioned_notifications("},{"line_number":89,"context_line":"            \u0027compute_task.build_instances.error\u0027)"},{"line_number":90,"context_line":"        self.az_mock.stop()"},{"line_number":91,"context_line":"        server \u003d self._wait_for_server_parameter("},{"line_number":92,"context_line":"            self.api, server, {\u0027status\u0027: \u0027ERROR\u0027,"},{"line_number":93,"context_line":"                               \u0027OS-EXT-SRV-ATTR:host\u0027: None,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_2ef1a802","line":90,"in_reply_to":"3fa7e38b_cbeec6b3","updated":"2019-10-01 17:22:12.000000000","message":"I might have fixed things with the wait for notification. Or it\u0027s a race. I\u0027ll remove it though since I\u0027m not hitting an issue locally without it.","commit_id":"13dc504f968a8576f912ee18e55fa1b8c412c93f"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"1ef9f30e2e5994852d04cfb8bffd48f51580e48e","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        # first failed host to conductor which will try to get the AZ for the"},{"line_number":82,"context_line":"        # alternate host selection which will fail since it cannot access the"},{"line_number":83,"context_line":"        # API DB."},{"line_number":84,"context_line":"        fake_notifier.wait_for_versioned_notifications("},{"line_number":85,"context_line":"            \u0027compute_task.build_instances.error\u0027)"},{"line_number":86,"context_line":"        server \u003d self._wait_for_server_parameter("},{"line_number":87,"context_line":"            self.api, server, {\u0027status\u0027: \u0027ERROR\u0027,"},{"line_number":88,"context_line":"                               \u0027OS-EXT-SRV-ATTR:host\u0027: None,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_2158d9f8","line":85,"range":{"start_line":84,"start_character":0,"end_line":85,"end_character":49},"updated":"2019-10-01 18:25:46.000000000","message":"So this doens\u0027t appear to be necessary either - I commented it out and it still passed locally. Unless you\u0027re using it to assert the notification happened.","commit_id":"10aaa7e2d8f87f0982b73cc0e5391938b3cf267f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"db7f2bf3ec485644a4e95c7a4cfc996e3eb1f52d","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        # first failed host to conductor which will try to get the AZ for the"},{"line_number":82,"context_line":"        # alternate host selection which will fail since it cannot access the"},{"line_number":83,"context_line":"        # API DB."},{"line_number":84,"context_line":"        fake_notifier.wait_for_versioned_notifications("},{"line_number":85,"context_line":"            \u0027compute_task.build_instances.error\u0027)"},{"line_number":86,"context_line":"        server \u003d self._wait_for_server_parameter("},{"line_number":87,"context_line":"            self.api, server, {\u0027status\u0027: \u0027ERROR\u0027,"},{"line_number":88,"context_line":"                               \u0027OS-EXT-SRV-ATTR:host\u0027: None,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_5f128c0b","line":85,"range":{"start_line":84,"start_character":0,"end_line":85,"end_character":49},"in_reply_to":"3fa7e38b_2158d9f8","updated":"2019-10-01 20:58:52.000000000","message":"This is here to guard against a race where you hit the API before instance.host is nulled out which is critical for the logic here:\n\nhttps://github.com/openstack/nova/blob/4d18b29c95e3862c68ab41a4c090eb30c32a037a/nova/availability_zones.py#L173\n\nBecause if we all the API while instance.host is not None, we\u0027ll go here:\n\nhttps://github.com/openstack/nova/blob/4d18b29c95e3862c68ab41a4c090eb30c32a037a/nova/availability_zones.py#L199\n\nand blow up because of the mock.\n\nI commented it out locally and it blew up like this:\n\nhttp://paste.openstack.org/show/780645/\n\nMaybe your system running tests is slower than mine?","commit_id":"10aaa7e2d8f87f0982b73cc0e5391938b3cf267f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ff79a6c3c4172bc073029676ce1fc4c906a99d4f","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        # first failed host to conductor which will try to get the AZ for the"},{"line_number":82,"context_line":"        # alternate host selection which will fail since it cannot access the"},{"line_number":83,"context_line":"        # API DB."},{"line_number":84,"context_line":"        fake_notifier.wait_for_versioned_notifications("},{"line_number":85,"context_line":"            \u0027compute_task.build_instances.error\u0027)"},{"line_number":86,"context_line":"        server \u003d self._wait_for_server_parameter("},{"line_number":87,"context_line":"            self.api, server, {\u0027status\u0027: \u0027ERROR\u0027,"},{"line_number":88,"context_line":"                               \u0027OS-EXT-SRV-ATTR:host\u0027: None,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_3f26b06a","line":85,"range":{"start_line":84,"start_character":0,"end_line":85,"end_character":49},"in_reply_to":"3fa7e38b_5f128c0b","updated":"2019-10-01 20:59:29.000000000","message":"I\u0027ll add a comment.","commit_id":"10aaa7e2d8f87f0982b73cc0e5391938b3cf267f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"643a780bc643641a1b3ed7d356ac0a3b83452b9b","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        def wrap_bari(*args, **kwargs):"},{"line_number":67,"context_line":"            # Poison the AZ query to blow up as if the cell conductor does not"},{"line_number":68,"context_line":"            # have access to the API DB."},{"line_number":69,"context_line":"            self.useFixture("},{"line_number":70,"context_line":"                fixtures.MockPatch("},{"line_number":71,"context_line":"                    \u0027nova.objects.AggregateList.get_by_host\u0027,"},{"line_number":72,"context_line":"                    side_effect\u003doslo_db_exc.CantStartEngineError))"},{"line_number":73,"context_line":"            return original_bari(*args, **kwargs)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        self.stub_out(\u0027nova.compute.manager.ComputeManager.\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_7f2bc12f","line":72,"range":{"start_line":69,"start_character":0,"end_line":72,"end_character":66},"updated":"2019-10-02 11:13:00.000000000","message":"I would use a the mock.patch call as a context manager here, as that will remove the need to the mock.patch.stopall() call later when the bug is fixed.","commit_id":"8c332c4dd79f8bb5fdc5f6722a80c9a117ff52c4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"853d4758ff251e1081533293e443761ba5c64c25","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        def wrap_bari(*args, **kwargs):"},{"line_number":67,"context_line":"            # Poison the AZ query to blow up as if the cell conductor does not"},{"line_number":68,"context_line":"            # have access to the API DB."},{"line_number":69,"context_line":"            self.useFixture("},{"line_number":70,"context_line":"                fixtures.MockPatch("},{"line_number":71,"context_line":"                    \u0027nova.objects.AggregateList.get_by_host\u0027,"},{"line_number":72,"context_line":"                    side_effect\u003doslo_db_exc.CantStartEngineError))"},{"line_number":73,"context_line":"            return original_bari(*args, **kwargs)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        self.stub_out(\u0027nova.compute.manager.ComputeManager.\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_e529629b","line":72,"range":{"start_line":69,"start_character":0,"end_line":72,"end_character":66},"in_reply_to":"3fa7e38b_7f2bc12f","updated":"2019-10-02 13:55:01.000000000","message":"I\u0027m not sure that is possible since I need the mock to persist after compute reschedules and RPC casts to conductor. I can\u0027t do that outside of the API call because the API will lookup the AZ I think, and it would be wrong anyway since the API and superconductor and scheduler can hit the aggregates table in the API DB.","commit_id":"8c332c4dd79f8bb5fdc5f6722a80c9a117ff52c4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"19960e58eb0f8b94243ee6bc014a6c42f7d84c0b","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        def wrap_bari(*args, **kwargs):"},{"line_number":67,"context_line":"            # Poison the AZ query to blow up as if the cell conductor does not"},{"line_number":68,"context_line":"            # have access to the API DB."},{"line_number":69,"context_line":"            self.useFixture("},{"line_number":70,"context_line":"                fixtures.MockPatch("},{"line_number":71,"context_line":"                    \u0027nova.objects.AggregateList.get_by_host\u0027,"},{"line_number":72,"context_line":"                    side_effect\u003doslo_db_exc.CantStartEngineError))"},{"line_number":73,"context_line":"            return original_bari(*args, **kwargs)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        self.stub_out(\u0027nova.compute.manager.ComputeManager.\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_10207a49","line":72,"range":{"start_line":69,"start_character":0,"end_line":72,"end_character":66},"in_reply_to":"3fa7e38b_e529629b","updated":"2019-10-02 14:14:07.000000000","message":"Yeah I tried it out here, it doesn\u0027t work because compute does an RPC cast to conductor for the reschedule so we lose the mock and don\u0027t trigger the failure in conductor. The test fails b/c we don\u0027t get the compute_task.build_instances.error notification.","commit_id":"8c332c4dd79f8bb5fdc5f6722a80c9a117ff52c4"}]}
