)]}'
{"nova/tests/functional/regressions/test_bug_1794996.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6c78517328d35d9414bd88a446a91999ed6dc447","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    def setUp(self):"},{"line_number":24,"context_line":"        super(TestEvacuateDeleteServerRestartOriginalCompute, self).setUp()"},{"line_number":25,"context_line":"        # Notifications are used in _delete_and_check_allocations."},{"line_number":26,"context_line":"        # TODO(mriedem): fake_notifier stubbing should probably live in the"},{"line_number":27,"context_line":"        # parent class."},{"line_number":28,"context_line":"        fake_notifier.stub_notifier(self)"},{"line_number":29,"context_line":"        self.addCleanup(fake_notifier.reset)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        self.compute1 \u003d self._start_compute(host\u003d\u0027host1\u0027)"},{"line_number":32,"context_line":"        self.compute2 \u003d self._start_compute(host\u003d\u0027host2\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_262d8245","line":29,"range":{"start_line":26,"start_character":0,"end_line":29,"end_character":44},"updated":"2018-10-02 14:11:54.000000000","message":"It now does: https://review.openstack.org/#/c/604859/8/nova/tests/functional/integrated_helpers.py","commit_id":"5bb42d81dc30ef7c8079707b0ce30a7734e7eb83"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a10747fe317b7ee1e3f63f7a09e7be777ad0aadd","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    def setUp(self):"},{"line_number":24,"context_line":"        super(TestEvacuateDeleteServerRestartOriginalCompute, self).setUp()"},{"line_number":25,"context_line":"        # Notifications are used in _delete_and_check_allocations."},{"line_number":26,"context_line":"        # TODO(mriedem): fake_notifier stubbing should probably live in the"},{"line_number":27,"context_line":"        # parent class."},{"line_number":28,"context_line":"        fake_notifier.stub_notifier(self)"},{"line_number":29,"context_line":"        self.addCleanup(fake_notifier.reset)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        self.compute1 \u003d self._start_compute(host\u003d\u0027host1\u0027)"},{"line_number":32,"context_line":"        self.compute2 \u003d self._start_compute(host\u003d\u0027host2\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_37ab4b1e","line":29,"range":{"start_line":26,"start_character":0,"end_line":29,"end_character":44},"in_reply_to":"3f79a3b5_262d8245","updated":"2018-10-03 18:39:41.000000000","message":"Done","commit_id":"5bb42d81dc30ef7c8079707b0ce30a7734e7eb83"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7082191b735ca6d62d2e191a1033d1a5a8113240","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        source_rp_uuid \u003d self._get_provider_uuid_by_host(source_hostname)"},{"line_number":66,"context_line":"        dest_rp_uuid \u003d self._get_provider_uuid_by_host(dest_hostname)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        source_usages \u003d self._get_provider_usages(source_rp_uuid)"},{"line_number":69,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, source_usages)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        dest_usages \u003d self._get_provider_usages(dest_rp_uuid)"},{"line_number":72,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, dest_usages)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":75,"context_line":"        self.assertEqual(2, len(allocations))"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_dc5f68e2","line":72,"range":{"start_line":68,"start_character":0,"end_line":72,"end_character":69},"updated":"2018-10-05 16:38:23.000000000","message":"Fixed this up as:\n\n self.assertFlavorMatchesUsage(source_rp_uuid, self.flavor1)\n self.assertFlavorMatchesUsage(dest_rp_uuid, self.flavor1)","commit_id":"fe400c482163850b6c21c92e82fb4778820678e2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"140e26c7fcfea96bc5b37bdfba555a51f4752a14","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        source_rp_uuid \u003d self._get_provider_uuid_by_host(source_hostname)"},{"line_number":66,"context_line":"        dest_rp_uuid \u003d self._get_provider_uuid_by_host(dest_hostname)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        source_usages \u003d self._get_provider_usages(source_rp_uuid)"},{"line_number":69,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, source_usages)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        dest_usages \u003d self._get_provider_usages(dest_rp_uuid)"},{"line_number":72,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, dest_usages)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":75,"context_line":"        self.assertEqual(2, len(allocations))"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_e0405962","line":72,"range":{"start_line":68,"start_character":0,"end_line":72,"end_character":69},"in_reply_to":"3f79a3b5_dc5f68e2","updated":"2018-10-08 15:22:23.000000000","message":"Done","commit_id":"fe400c482163850b6c21c92e82fb4778820678e2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7082191b735ca6d62d2e191a1033d1a5a8113240","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":75,"context_line":"        self.assertEqual(2, len(allocations))"},{"line_number":76,"context_line":"        source_allocation \u003d allocations[source_rp_uuid][\u0027resources\u0027]"},{"line_number":77,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, source_allocation)"},{"line_number":78,"context_line":"        dest_allocation \u003d allocations[dest_rp_uuid][\u0027resources\u0027]"},{"line_number":79,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, dest_allocation)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # Delete the evacuated server. The allocations should be gone from"},{"line_number":82,"context_line":"        # both the original evacuated-from host and the evacuated-to host."}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_1c13a003","line":79,"range":{"start_line":76,"start_character":0,"end_line":79,"end_character":73},"updated":"2018-10-05 16:38:23.000000000","message":"I tried fixing this\n\n self.assertFlavorMatchesAllocation(self.flavor1, server[\u0027id\u0027],\n                                    source_rp_uuid)\n self.assertFlavorMatchesAllocation(self.flavor1, server[\u0027id\u0027],\n                                    dest_rp_uuid)\n\nbut because the allocations exist on both providers (hosts), the new version of assertFlavorMatchesAllocation blows up. Probably want a gibi consult here, but perhaps we add a kwarg to assertFlavorMatchesAllocation to skip the out-of-tree provider check, and/or specify multiple providers we\u0027re expecting, and/or...?","commit_id":"fe400c482163850b6c21c92e82fb4778820678e2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4c0d528d5f4d94e8d0e2c3f8712b0deae78b9f16","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":75,"context_line":"        self.assertEqual(2, len(allocations))"},{"line_number":76,"context_line":"        source_allocation \u003d allocations[source_rp_uuid][\u0027resources\u0027]"},{"line_number":77,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, source_allocation)"},{"line_number":78,"context_line":"        dest_allocation \u003d allocations[dest_rp_uuid][\u0027resources\u0027]"},{"line_number":79,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, dest_allocation)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # Delete the evacuated server. The allocations should be gone from"},{"line_number":82,"context_line":"        # both the original evacuated-from host and the evacuated-to host."}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_aa224201","line":79,"range":{"start_line":76,"start_character":0,"end_line":79,"end_character":73},"in_reply_to":"3f79a3b5_1c13a003","updated":"2018-10-08 13:42:52.000000000","message":"Evac is a special case so it need special care ;)\n\nSomething like:\nhttps://github.com/openstack/nova/blob/5c0235a579ccb52f7bce5de9bcb3c927c94b23b7/nova/tests/functional/test_servers.py#L4871","commit_id":"fe400c482163850b6c21c92e82fb4778820678e2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c5ca0734975cb0e2a7fbd2191aa2ab87a022b531","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":75,"context_line":"        self.assertEqual(2, len(allocations))"},{"line_number":76,"context_line":"        source_allocation \u003d allocations[source_rp_uuid][\u0027resources\u0027]"},{"line_number":77,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, source_allocation)"},{"line_number":78,"context_line":"        dest_allocation \u003d allocations[dest_rp_uuid][\u0027resources\u0027]"},{"line_number":79,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, dest_allocation)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # Delete the evacuated server. The allocations should be gone from"},{"line_number":82,"context_line":"        # both the original evacuated-from host and the evacuated-to host."}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_e07db9e6","line":79,"range":{"start_line":76,"start_character":0,"end_line":79,"end_character":73},"in_reply_to":"3f79a3b5_45d27f5d","updated":"2018-10-08 15:10:21.000000000","message":"Oh, yeah. Ew. But okay, I guess that\u0027s the right thing. And then an immediate master-only fup to do the refactor, yah?","commit_id":"fe400c482163850b6c21c92e82fb4778820678e2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7b1c0add5c8440f25263ad96b4b5e5c28e360185","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":75,"context_line":"        self.assertEqual(2, len(allocations))"},{"line_number":76,"context_line":"        source_allocation \u003d allocations[source_rp_uuid][\u0027resources\u0027]"},{"line_number":77,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, source_allocation)"},{"line_number":78,"context_line":"        dest_allocation \u003d allocations[dest_rp_uuid][\u0027resources\u0027]"},{"line_number":79,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, dest_allocation)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # Delete the evacuated server. The allocations should be gone from"},{"line_number":82,"context_line":"        # both the original evacuated-from host and the evacuated-to host."}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_45d27f5d","line":79,"range":{"start_line":76,"start_character":0,"end_line":79,"end_character":73},"in_reply_to":"3f79a3b5_aa224201","updated":"2018-10-08 14:03:31.000000000","message":"Actually since this is a change we need to backport to stable branches, I think I\u0027m just going to copy the old assertFlavorMatchesAllocation into this class since the new stuff isn\u0027t going to be in stable branches (this is what\u0027s tough about refactoring our functional test helpers).","commit_id":"fe400c482163850b6c21c92e82fb4778820678e2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"140e26c7fcfea96bc5b37bdfba555a51f4752a14","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":75,"context_line":"        self.assertEqual(2, len(allocations))"},{"line_number":76,"context_line":"        source_allocation \u003d allocations[source_rp_uuid][\u0027resources\u0027]"},{"line_number":77,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, source_allocation)"},{"line_number":78,"context_line":"        dest_allocation \u003d allocations[dest_rp_uuid][\u0027resources\u0027]"},{"line_number":79,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, dest_allocation)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # Delete the evacuated server. The allocations should be gone from"},{"line_number":82,"context_line":"        # both the original evacuated-from host and the evacuated-to host."}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_003b15ea","line":79,"range":{"start_line":76,"start_character":0,"end_line":79,"end_character":73},"in_reply_to":"3f79a3b5_e07db9e6","updated":"2018-10-08 15:22:23.000000000","message":"Not immediate as in right after this change, but in the series yes.","commit_id":"fe400c482163850b6c21c92e82fb4778820678e2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7d308a54658c990e4acbdb8c7df09a62091dcf2a","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        self.assertEqual(flavor[\u0027ram\u0027], allocation[\u0027MEMORY_MB\u0027])"},{"line_number":39,"context_line":"        self.assertEqual(flavor[\u0027disk\u0027], allocation[\u0027DISK_GB\u0027])"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    # NOTE(mriedem): This is here for backports and should be removed later"},{"line_number":42,"context_line":"    # on master (Stein)."},{"line_number":43,"context_line":"    def _boot_and_check_allocations(self, flavor, source_hostname):"},{"line_number":44,"context_line":"        \"\"\"Boot an instance and check that the resource allocation is correct"},{"line_number":45,"context_line":"        After booting an instance on the given host with a given flavor it"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_cdeb0679","line":42,"range":{"start_line":41,"start_character":0,"end_line":42,"end_character":24},"updated":"2018-10-09 07:50:09.000000000","message":"17:08 \u003c mriedem\u003e efried: gibi: fyi since i need to backport https://review.openstack.org/#/c/606106/ i\u0027m \n                 not going to try and fit in the newly refactored assertion method usage and just copy \n                 the old methods into the test itself, which i will remove from master in a follow up\n\n\nWorks for me.","commit_id":"b31024b83661bb8b8f347a98f4e016986cf04e54"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fd819eb299113789cc9c077819e170b81a05e82f","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        host is brought back online and attempts to cleanup the guest from"},{"line_number":127,"context_line":"        the hypervisor and allocations for the evacuated (and now deleted)"},{"line_number":128,"context_line":"        instance. Before the bug is fixed, the original compute fails to start"},{"line_number":129,"context_line":"        because lazy-loading the instance.flavor on the deleted instance,"},{"line_number":130,"context_line":"        which is needed to cleanup allocations from the source host, raises"},{"line_number":131,"context_line":"        InstanceNotFound."},{"line_number":132,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_ad1e955b","line":129,"range":{"start_line":129,"start_character":8,"end_line":129,"end_character":73},"updated":"2018-10-23 16:55:52.000000000","message":"Note that I\u0027ve had this up for a long time now:\n\nhttps://review.openstack.org/#/c/575190/","commit_id":"e4088c32f140e867cb7ac36a583f2a9536cd64ce"}]}
