)]}'
{"nova/tests/functional/regressions/test_bug_1825537.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0bd566111352c29197b00fb881f5310caa19faca","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        # In this case the FakeFinishMigrationFailDriver.finish_migration"},{"line_number":50,"context_line":"        # method raises VirtualInterfaceCreateException."},{"line_number":51,"context_line":"        self.assertIn(\u0027Virtual Interface creation failed\u0027,"},{"line_number":52,"context_line":"                      server[\u0027fault\u0027][\u0027message\u0027])"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_finish_resize_fails_allocation_cleanup(self):"},{"line_number":55,"context_line":"        # Start two computes so we can resize across hosts."}],"source_content_type":"text/x-python","patch_set":1,"id":"ffb9cba7_270eade5","line":52,"range":{"start_line":52,"start_character":22,"end_line":52,"end_character":37},"updated":"2019-04-21 15:26:41.000000000","message":"Looks like this still race fails for some reason, even though we got the notification. Should probably wait for the migration status to be \u0027error\u0027 rather than the notification.","commit_id":"528bab25e682f3211b10d04dc2dac94264838934"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"31b771ce15c7f34751d9bb976e70b31b19a9fc5b","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        # In this case the FakeFinishMigrationFailDriver.finish_migration"},{"line_number":50,"context_line":"        # method raises VirtualInterfaceCreateException."},{"line_number":51,"context_line":"        self.assertIn(\u0027Virtual Interface creation failed\u0027,"},{"line_number":52,"context_line":"                      server[\u0027fault\u0027][\u0027message\u0027])"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_finish_resize_fails_allocation_cleanup(self):"},{"line_number":55,"context_line":"        # Start two computes so we can resize across hosts."}],"source_content_type":"text/x-python","patch_set":1,"id":"ffb9cba7_6ceec189","line":52,"range":{"start_line":52,"start_character":22,"end_line":52,"end_character":37},"in_reply_to":"ffb9cba7_270eade5","updated":"2019-04-22 13:41:48.000000000","message":"Done","commit_id":"528bab25e682f3211b10d04dc2dac94264838934"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"07995659ee42606c06000cc6a02f29353070867b","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        # In this case the FakeFinishMigrationFailDriver.finish_migration"},{"line_number":49,"context_line":"        # method raises VirtualInterfaceCreateException."},{"line_number":50,"context_line":"        self.assertIn(\u0027Virtual Interface creation failed\u0027,"},{"line_number":51,"context_line":"                      server[\u0027fault\u0027][\u0027message\u0027])"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def test_finish_resize_fails_allocation_cleanup(self):"},{"line_number":54,"context_line":"        # Start two computes so we can resize across hosts."}],"source_content_type":"text/x-python","patch_set":2,"id":"ffb9cba7_e9c4d842","line":51,"range":{"start_line":51,"start_character":22,"end_line":51,"end_character":37},"updated":"2019-04-22 20:12:38.000000000","message":"What the hell, this still races:\n\nhttp://logs.openstack.org/66/654066/2/check/nova-tox-functional/97ba665/testr_results.html.gz\n\nBut the fault should be set before the migration status is changed to error:\n\nhttps://review.opendev.org/#/c/654066/2/nova/compute/manager.py@4705\n\nOh but the server we\u0027re looking at is old...","commit_id":"f4d8053559d48cc19d9d2c41f8956fb8780d7ad8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"1c25ac16bec99a7f762e0203c90f3509b01900de","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    in placement."},{"line_number":23,"context_line":"    \"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    compute_driver \u003d \u0027fake.FakeFinishMigrationFailDriver\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def setUp(self):"},{"line_number":28,"context_line":"        super(FinishResizeErrorAllocationCleanupTestCase, self).setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_f7b9f5e8","line":25,"updated":"2019-06-19 16:22:09.000000000","message":"it took me 5 secs to understand how we could make sure the virt driver would fail, but then I saw this line. Meh, facepalm.\n\n(that said, a brief comment explaining what this fake driver does could be nice in a follow-up patch)","commit_id":"f4bb67210602914e1b9a678419cf22cfbeaf1431"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"cb995444534d535bda83b25cb721cd506d6676d6","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        self.flavor2 \u003d flavors[1]"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def _resize_and_assert_error(self, server, dest_host):"},{"line_number":35,"context_line":"        # Now resize the server and wait for it to go to ERROR status because"},{"line_number":36,"context_line":"        # the finish_migration virt driver method in host2 should fail."},{"line_number":37,"context_line":"        req \u003d {\u0027resize\u0027: {\u0027flavorRef\u0027: self.flavor2[\u0027id\u0027]}}"},{"line_number":38,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], req)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_b0ebdc75","line":35,"range":{"start_line":35,"start_character":10,"end_line":35,"end_character":13},"updated":"2019-05-30 20:14:06.000000000","message":"micronit: I\u0027m sure this is from when this code was inlined below, but \"Now\" feels out of place since this is the first thing you see.","commit_id":"f4bb67210602914e1b9a678419cf22cfbeaf1431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b430beb3d3fb882b6b5fe3f59ea2711702a520df","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        self.flavor2 \u003d flavors[1]"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def _resize_and_assert_error(self, server, dest_host):"},{"line_number":35,"context_line":"        # Now resize the server and wait for it to go to ERROR status because"},{"line_number":36,"context_line":"        # the finish_migration virt driver method in host2 should fail."},{"line_number":37,"context_line":"        req \u003d {\u0027resize\u0027: {\u0027flavorRef\u0027: self.flavor2[\u0027id\u0027]}}"},{"line_number":38,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], req)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_d03d122d","line":35,"range":{"start_line":35,"start_character":10,"end_line":35,"end_character":13},"in_reply_to":"bfb3d3c7_b0ebdc75","updated":"2019-05-31 19:02:46.000000000","message":"Yeah true. Can fix if I need to respin.","commit_id":"f4bb67210602914e1b9a678419cf22cfbeaf1431"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"1c25ac16bec99a7f762e0203c90f3509b01900de","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        source_rp_uuid \u003d self._get_provider_uuid_by_host(\u0027host1\u0027)"},{"line_number":68,"context_line":"        dest_rp_uuid \u003d self._get_provider_uuid_by_host(\u0027host2\u0027)"},{"line_number":69,"context_line":"        # FIXME(mriedem): This is bug 1825537 where the allocations are"},{"line_number":70,"context_line":"        # reverted when finish_resize fails so the dest node resource provider"},{"line_number":71,"context_line":"        # does not have any allocations and the instance allocations are for"},{"line_number":72,"context_line":"        # the old flavor on the source node resource provider even though the"},{"line_number":73,"context_line":"        # instance is not running on the source host nor pointed at the source"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_178e0927","line":70,"updated":"2019-06-19 16:22:09.000000000","message":"that\u0027s a tricky corner case, thanks for spotting it.","commit_id":"f4bb67210602914e1b9a678419cf22cfbeaf1431"}],"nova/virt/fake.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"cb995444534d535bda83b25cb721cd506d6676d6","unresolved":false,"context_lines":[{"line_number":731,"context_line":"                                       self.child_resources)"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":""},{"line_number":734,"context_line":"class FakeFinishMigrationFailDriver(FakeDriver):"},{"line_number":735,"context_line":"    \"\"\"FakeDriver variant that will raise an exception from finish_migration\"\"\""},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    def finish_migration(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_b0019c6c","line":734,"updated":"2019-05-30 20:14:06.000000000","message":"any reason you did this instead of mocking finish_migration in situ?","commit_id":"f4bb67210602914e1b9a678419cf22cfbeaf1431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b430beb3d3fb882b6b5fe3f59ea2711702a520df","unresolved":false,"context_lines":[{"line_number":731,"context_line":"                                       self.child_resources)"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":""},{"line_number":734,"context_line":"class FakeFinishMigrationFailDriver(FakeDriver):"},{"line_number":735,"context_line":"    \"\"\"FakeDriver variant that will raise an exception from finish_migration\"\"\""},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    def finish_migration(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_30390e41","line":734,"in_reply_to":"bfb3d3c7_b0019c6c","updated":"2019-05-31 19:02:46.000000000","message":"I can\u0027t remember now. I might have started doing a mock and it was ugly and since I have to define a compute driver to extend ProviderUsageBaseTestCase anyway I just did this since it\u0027s cleaner, plus in the past Dan has sometimes asked for a fake driver rather than mocking driver methods from functional tests.","commit_id":"f4bb67210602914e1b9a678419cf22cfbeaf1431"}]}
