)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c87cc9358ecc11fa7f962672125a286c904cc13d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Func test for abort and cancel live migration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The abort case covers the situation when the IntancePCIRequest cannot be"},{"line_number":10,"context_line":"updated with the PF device names on the target host due to incorrect"},{"line_number":11,"context_line":"naming of the device RPs in placement."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_3972f7b1","line":9,"updated":"2019-12-20 16:33:27.000000000","message":"This isn\u0027t really aborting an in-progress live migration though, it\u0027s making conductor fail during scheduling because _find_destination in conductor calls update_pci_request_spec_with_allocated_interface_name which is going to raise. That\u0027s not the same as conductor selecting a target host and starting the live migration there and then calling DELETE /servers/{server_id}/migrations/{migration_id}:\n\nhttps://docs.openstack.org/api-ref/compute/?expanded\u003ddelete-abort-migration-detail#delete-abort-migration\n\nAm I missing something or are we just mixed up on terminology?","commit_id":"4e8b88a9b4e48a20a034a1439d65b995ab42f9f5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"629c8b9fa4619a55d785eeef90624b85dc14d763","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Func test for abort and cancel live migration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The abort case covers the situation when the IntancePCIRequest cannot be"},{"line_number":10,"context_line":"updated with the PF device names on the target host due to incorrect"},{"line_number":11,"context_line":"naming of the device RPs in placement."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_0d668bbd","line":9,"in_reply_to":"3fa7e38b_3972f7b1","updated":"2020-01-07 11:01:27.000000000","message":"Bad terminology. \n\nThis patch adds two test cases. 1) a failure case when the InstancePCIRequest update fails.\n2) A case when the user cancels (or aborts) a running live migration.\n\nI cleaned up the terminology.","commit_id":"4e8b88a9b4e48a20a034a1439d65b995ab42f9f5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"18c05e5de6fadb4d7268f6962f493596992443a2","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The cancel case covers when the API user cancels the running live"},{"line_number":14,"context_line":"migration."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I1222fc21bde4158df1db70370c7f3bd319ec081f"},{"line_number":17,"context_line":"blueprint: support-move-ops-with-qos-ports-ussuri"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_7655dc1d","line":15,"updated":"2019-12-20 16:21:43.000000000","message":"So like the rollback case in the conductor task where the instance.pci_requests are rolled back, what happens if the live migration is aborted/cancelled so it never goes to the dest compute? In that case the pci_requests on the instance are pointing at the dest rather than the source, correct? How do we roll those back on abort/cancel? Is that something we can/should do from the API or compute service? Note that doing it in the API could cost time when racing to actually abort/cancel the live migration before it starts.","commit_id":"4e8b88a9b4e48a20a034a1439d65b995ab42f9f5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5e5cba684bc7aca073e94dfb68ab9f06318310c9","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The cancel case covers when the API user cancels the running live"},{"line_number":14,"context_line":"migration."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I1222fc21bde4158df1db70370c7f3bd319ec081f"},{"line_number":17,"context_line":"blueprint: support-move-ops-with-qos-ports-ussuri"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_00edc2b6","line":15,"in_reply_to":"3fa7e38b_65c94b22","updated":"2020-01-09 08:39:40.000000000","message":"Added a fix in a separate patch https://review.opendev.org/#/c/701684/","commit_id":"4e8b88a9b4e48a20a034a1439d65b995ab42f9f5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"629c8b9fa4619a55d785eeef90624b85dc14d763","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The cancel case covers when the API user cancels the running live"},{"line_number":14,"context_line":"migration."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I1222fc21bde4158df1db70370c7f3bd319ec081f"},{"line_number":17,"context_line":"blueprint: support-move-ops-with-qos-ports-ussuri"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_65c94b22","line":15,"in_reply_to":"3fa7e38b_7655dc1d","updated":"2020-01-07 11:01:27.000000000","message":"Your observation is correct. I added the assert that shows the problem and try to come up with a fix separately.","commit_id":"4e8b88a9b4e48a20a034a1439d65b995ab42f9f5"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c87cc9358ecc11fa7f962672125a286c904cc13d","unresolved":false,"context_lines":[{"line_number":7419,"context_line":"        # Update the name of the network device RP of PF2 on host2 to something"},{"line_number":7420,"context_line":"        # unexpected. This will cause"},{"line_number":7421,"context_line":"        # update_pci_request_spec_with_allocated_interface_name() to raise"},{"line_number":7422,"context_line":"        # when the instance is evacuated to the host2."},{"line_number":7423,"context_line":"        rsp \u003d self.placement_api.put("},{"line_number":7424,"context_line":"            \u0027/resource_providers/%s\u0027"},{"line_number":7425,"context_line":"            % self.sriov_dev_rp_per_host[self.compute2_rp_uuid][self.PF2],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_d932c3f3","line":7422,"range":{"start_line":7422,"start_character":31,"end_line":7422,"end_character":40},"updated":"2019-12-20 16:33:27.000000000","message":"live migrated?","commit_id":"4e8b88a9b4e48a20a034a1439d65b995ab42f9f5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"629c8b9fa4619a55d785eeef90624b85dc14d763","unresolved":false,"context_lines":[{"line_number":7419,"context_line":"        # Update the name of the network device RP of PF2 on host2 to something"},{"line_number":7420,"context_line":"        # unexpected. This will cause"},{"line_number":7421,"context_line":"        # update_pci_request_spec_with_allocated_interface_name() to raise"},{"line_number":7422,"context_line":"        # when the instance is evacuated to the host2."},{"line_number":7423,"context_line":"        rsp \u003d self.placement_api.put("},{"line_number":7424,"context_line":"            \u0027/resource_providers/%s\u0027"},{"line_number":7425,"context_line":"            % self.sriov_dev_rp_per_host[self.compute2_rp_uuid][self.PF2],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_a533c3c3","line":7422,"range":{"start_line":7422,"start_character":31,"end_line":7422,"end_character":40},"in_reply_to":"3fa7e38b_d932c3f3","updated":"2020-01-07 11:01:27.000000000","message":"Done","commit_id":"4e8b88a9b4e48a20a034a1439d65b995ab42f9f5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c87cc9358ecc11fa7f962672125a286c904cc13d","unresolved":false,"context_lines":[{"line_number":7461,"context_line":"        self._check_allocation("},{"line_number":7462,"context_line":"            server, self.compute1_rp_uuid, non_qos_normal_port,"},{"line_number":7463,"context_line":"            qos_normal_port, qos_sriov_port, self.flavor_with_group_policy)"},{"line_number":7464,"context_line":""},{"line_number":7465,"context_line":"        self._delete_server_and_check_allocations("},{"line_number":7466,"context_line":"            server, qos_normal_port, qos_sriov_port)"},{"line_number":7467,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_3980b749","line":7464,"updated":"2019-12-20 16:33:27.000000000","message":"In this case, the instance.pci_requests shouldn\u0027t have changed but can we also assert that here? Possibly using a helper method so we don\u0027t just copy/paste from above:\n\n        # Assert that the InstancePCIRequests also rolled back to point to\n        # host1\n        ctxt \u003d context.get_admin_context()\n        pci_requests \u003d objects.InstancePCIRequests.get_by_instance_uuid(\n            ctxt, server[\u0027id\u0027])\n        self.assertEqual(1, len(pci_requests.requests))\n        self.assertEqual(1, len(pci_requests.requests[0].spec))\n        self.assertEqual(\n            \u0027host1-ens2\u0027,\n            pci_requests.requests[0].spec[0][\u0027parent_ifname\u0027])","commit_id":"4e8b88a9b4e48a20a034a1439d65b995ab42f9f5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"629c8b9fa4619a55d785eeef90624b85dc14d763","unresolved":false,"context_lines":[{"line_number":7461,"context_line":"        self._check_allocation("},{"line_number":7462,"context_line":"            server, self.compute1_rp_uuid, non_qos_normal_port,"},{"line_number":7463,"context_line":"            qos_normal_port, qos_sriov_port, self.flavor_with_group_policy)"},{"line_number":7464,"context_line":""},{"line_number":7465,"context_line":"        self._delete_server_and_check_allocations("},{"line_number":7466,"context_line":"            server, qos_normal_port, qos_sriov_port)"},{"line_number":7467,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_257a7324","line":7464,"in_reply_to":"3fa7e38b_3980b749","updated":"2020-01-07 11:01:27.000000000","message":"extracted an assert from this and called from here.","commit_id":"4e8b88a9b4e48a20a034a1439d65b995ab42f9f5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c87cc9358ecc11fa7f962672125a286c904cc13d","unresolved":false,"context_lines":[{"line_number":7472,"context_line":"    compute_driver \u003d \"fake.FakeLiveMigrateDriverWithPciResources\""},{"line_number":7473,"context_line":""},{"line_number":7474,"context_line":"    def setUp(self):"},{"line_number":7475,"context_line":"        # Use our custom weigher defined above to make sure that we have"},{"line_number":7476,"context_line":"        # a predictable host order in the alternate list returned by the"},{"line_number":7477,"context_line":"        # scheduler for migration."},{"line_number":7478,"context_line":"        self.useFixture(nova_fixtures.HostNameWeigherFixture())"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_39e5173f","line":7475,"range":{"start_line":7475,"start_character":33,"end_line":7475,"end_character":46},"updated":"2019-12-20 16:33:27.000000000","message":"This is copy/paste but no longer true - it\u0027s a standard fixture now.","commit_id":"4e8b88a9b4e48a20a034a1439d65b995ab42f9f5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"629c8b9fa4619a55d785eeef90624b85dc14d763","unresolved":false,"context_lines":[{"line_number":7472,"context_line":"    compute_driver \u003d \"fake.FakeLiveMigrateDriverWithPciResources\""},{"line_number":7473,"context_line":""},{"line_number":7474,"context_line":"    def setUp(self):"},{"line_number":7475,"context_line":"        # Use our custom weigher defined above to make sure that we have"},{"line_number":7476,"context_line":"        # a predictable host order in the alternate list returned by the"},{"line_number":7477,"context_line":"        # scheduler for migration."},{"line_number":7478,"context_line":"        self.useFixture(nova_fixtures.HostNameWeigherFixture())"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_056df765","line":7475,"range":{"start_line":7475,"start_character":33,"end_line":7475,"end_character":46},"in_reply_to":"3fa7e38b_39e5173f","updated":"2020-01-07 11:01:27.000000000","message":"Done","commit_id":"4e8b88a9b4e48a20a034a1439d65b995ab42f9f5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c87cc9358ecc11fa7f962672125a286c904cc13d","unresolved":false,"context_lines":[{"line_number":7488,"context_line":"        # therefore the check is removed from the api"},{"line_number":7489,"context_line":"        self._turn_off_api_check()"},{"line_number":7490,"context_line":""},{"line_number":7491,"context_line":"        non_qos_normal_port \u003d self.neutron.port_1"},{"line_number":7492,"context_line":"        qos_normal_port \u003d self.neutron.port_with_resource_request"},{"line_number":7493,"context_line":"        qos_sriov_port \u003d self.neutron.port_with_sriov_resource_request"},{"line_number":7494,"context_line":""},{"line_number":7495,"context_line":"        server \u003d self._create_server_with_ports("},{"line_number":7496,"context_line":"            non_qos_normal_port, qos_normal_port, qos_sriov_port)"},{"line_number":7497,"context_line":""},{"line_number":7498,"context_line":"        # check that the server allocates from the current host properly"},{"line_number":7499,"context_line":"        self._check_allocation("},{"line_number":7500,"context_line":"            server, self.compute1_rp_uuid, non_qos_normal_port,"},{"line_number":7501,"context_line":"            qos_normal_port, qos_sriov_port, self.flavor_with_group_policy)"},{"line_number":7502,"context_line":""},{"line_number":7503,"context_line":"        # The special virt drive will keep the live migration running until it"},{"line_number":7504,"context_line":"        # is cancelled."}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_5936d3b5","line":7501,"range":{"start_line":7491,"start_character":8,"end_line":7501,"end_character":75},"updated":"2019-12-20 16:33:27.000000000","message":"Again:\n\nhttps://review.opendev.org/#/c/699015/4/nova/tests/functional/test_servers.py@7370\n\nAnd it\u0027s a nit but let\u0027s move this boilerplate into the base class so we can DRY this up in the sub-classes.","commit_id":"4e8b88a9b4e48a20a034a1439d65b995ab42f9f5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"629c8b9fa4619a55d785eeef90624b85dc14d763","unresolved":false,"context_lines":[{"line_number":7488,"context_line":"        # therefore the check is removed from the api"},{"line_number":7489,"context_line":"        self._turn_off_api_check()"},{"line_number":7490,"context_line":""},{"line_number":7491,"context_line":"        non_qos_normal_port \u003d self.neutron.port_1"},{"line_number":7492,"context_line":"        qos_normal_port \u003d self.neutron.port_with_resource_request"},{"line_number":7493,"context_line":"        qos_sriov_port \u003d self.neutron.port_with_sriov_resource_request"},{"line_number":7494,"context_line":""},{"line_number":7495,"context_line":"        server \u003d self._create_server_with_ports("},{"line_number":7496,"context_line":"            non_qos_normal_port, qos_normal_port, qos_sriov_port)"},{"line_number":7497,"context_line":""},{"line_number":7498,"context_line":"        # check that the server allocates from the current host properly"},{"line_number":7499,"context_line":"        self._check_allocation("},{"line_number":7500,"context_line":"            server, self.compute1_rp_uuid, non_qos_normal_port,"},{"line_number":7501,"context_line":"            qos_normal_port, qos_sriov_port, self.flavor_with_group_policy)"},{"line_number":7502,"context_line":""},{"line_number":7503,"context_line":"        # The special virt drive will keep the live migration running until it"},{"line_number":7504,"context_line":"        # is cancelled."}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_45f3ef9f","line":7501,"range":{"start_line":7491,"start_character":8,"end_line":7501,"end_character":75},"in_reply_to":"3fa7e38b_5936d3b5","updated":"2020-01-07 11:01:27.000000000","message":"I don\u0027t really want to move the port definitions as that is used in the asserts below so they should help understanding the test case the we booting with these ports and then asserting the allocations for these ports. \n\nI did extracted the create server +  check allocation call.","commit_id":"4e8b88a9b4e48a20a034a1439d65b995ab42f9f5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c87cc9358ecc11fa7f962672125a286c904cc13d","unresolved":false,"context_lines":[{"line_number":7500,"context_line":"            server, self.compute1_rp_uuid, non_qos_normal_port,"},{"line_number":7501,"context_line":"            qos_normal_port, qos_sriov_port, self.flavor_with_group_policy)"},{"line_number":7502,"context_line":""},{"line_number":7503,"context_line":"        # The special virt drive will keep the live migration running until it"},{"line_number":7504,"context_line":"        # is cancelled."},{"line_number":7505,"context_line":"        self.api.post_server_action("},{"line_number":7506,"context_line":"            server[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_19405b06","line":7503,"range":{"start_line":7503,"start_character":27,"end_line":7503,"end_character":32},"updated":"2019-12-20 16:33:27.000000000","message":"driver","commit_id":"4e8b88a9b4e48a20a034a1439d65b995ab42f9f5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"629c8b9fa4619a55d785eeef90624b85dc14d763","unresolved":false,"context_lines":[{"line_number":7500,"context_line":"            server, self.compute1_rp_uuid, non_qos_normal_port,"},{"line_number":7501,"context_line":"            qos_normal_port, qos_sriov_port, self.flavor_with_group_policy)"},{"line_number":7502,"context_line":""},{"line_number":7503,"context_line":"        # The special virt drive will keep the live migration running until it"},{"line_number":7504,"context_line":"        # is cancelled."},{"line_number":7505,"context_line":"        self.api.post_server_action("},{"line_number":7506,"context_line":"            server[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_652dcbfa","line":7503,"range":{"start_line":7503,"start_character":27,"end_line":7503,"end_character":32},"in_reply_to":"3fa7e38b_19405b06","updated":"2020-01-07 11:01:27.000000000","message":"Done","commit_id":"4e8b88a9b4e48a20a034a1439d65b995ab42f9f5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c87cc9358ecc11fa7f962672125a286c904cc13d","unresolved":false,"context_lines":[{"line_number":7515,"context_line":"        # wait for the migration to start"},{"line_number":7516,"context_line":"        migration \u003d self._wait_for_migration_status(server, [\u0027running\u0027])"},{"line_number":7517,"context_line":""},{"line_number":7518,"context_line":"        # delete the migration to cancel it"},{"line_number":7519,"context_line":"        self.api.delete_migration(server[\u0027id\u0027], migration[\u0027id\u0027])"},{"line_number":7520,"context_line":""},{"line_number":7521,"context_line":"        self._wait_for_migration_status(server, [\u0027cancelled\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_f9a0dff5","line":7518,"range":{"start_line":7518,"start_character":34,"end_line":7518,"end_character":40},"updated":"2019-12-20 16:33:27.000000000","message":"Terminology wise this is the abort case from the API:\n\nhttps://docs.openstack.org/api-ref/compute/?expanded\u003ddelete-abort-migration-detail#delete-abort-migration\n\nAnd that\u0027s why I was confused about the commit message saying making conductor blow up is testing abort - it\u0027s not really.","commit_id":"4e8b88a9b4e48a20a034a1439d65b995ab42f9f5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"629c8b9fa4619a55d785eeef90624b85dc14d763","unresolved":false,"context_lines":[{"line_number":7515,"context_line":"        # wait for the migration to start"},{"line_number":7516,"context_line":"        migration \u003d self._wait_for_migration_status(server, [\u0027running\u0027])"},{"line_number":7517,"context_line":""},{"line_number":7518,"context_line":"        # delete the migration to cancel it"},{"line_number":7519,"context_line":"        self.api.delete_migration(server[\u0027id\u0027], migration[\u0027id\u0027])"},{"line_number":7520,"context_line":""},{"line_number":7521,"context_line":"        self._wait_for_migration_status(server, [\u0027cancelled\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_a510a3ac","line":7518,"range":{"start_line":7518,"start_character":34,"end_line":7518,"end_character":40},"in_reply_to":"3fa7e38b_f9a0dff5","updated":"2020-01-07 11:01:27.000000000","message":"They why we make the migration status \"cancelled\" ?! :/\n\nDone.","commit_id":"4e8b88a9b4e48a20a034a1439d65b995ab42f9f5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c87cc9358ecc11fa7f962672125a286c904cc13d","unresolved":false,"context_lines":[{"line_number":7527,"context_line":"        self._check_allocation("},{"line_number":7528,"context_line":"            server, self.compute1_rp_uuid, non_qos_normal_port,"},{"line_number":7529,"context_line":"            qos_normal_port, qos_sriov_port, self.flavor_with_group_policy)"},{"line_number":7530,"context_line":""},{"line_number":7531,"context_line":"        self._delete_server_and_check_allocations("},{"line_number":7532,"context_line":"            server, qos_normal_port, qos_sriov_port)"},{"line_number":7533,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_b946e721","line":7530,"updated":"2019-12-20 16:33:27.000000000","message":"We need to assert the PCI requests were fixed.","commit_id":"4e8b88a9b4e48a20a034a1439d65b995ab42f9f5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"629c8b9fa4619a55d785eeef90624b85dc14d763","unresolved":false,"context_lines":[{"line_number":7527,"context_line":"        self._check_allocation("},{"line_number":7528,"context_line":"            server, self.compute1_rp_uuid, non_qos_normal_port,"},{"line_number":7529,"context_line":"            qos_normal_port, qos_sriov_port, self.flavor_with_group_policy)"},{"line_number":7530,"context_line":""},{"line_number":7531,"context_line":"        self._delete_server_and_check_allocations("},{"line_number":7532,"context_line":"            server, qos_normal_port, qos_sriov_port)"},{"line_number":7533,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_e5477ba3","line":7530,"in_reply_to":"3fa7e38b_b946e721","updated":"2020-01-07 11:01:27.000000000","message":"I\u0027ve added the assert here and that shows that in this case the PCI request is not rolled back. So added a TODO to fix this in a separate patch.","commit_id":"4e8b88a9b4e48a20a034a1439d65b995ab42f9f5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5e5cba684bc7aca073e94dfb68ab9f06318310c9","unresolved":false,"context_lines":[{"line_number":7527,"context_line":"        self._check_allocation("},{"line_number":7528,"context_line":"            server, self.compute1_rp_uuid, non_qos_normal_port,"},{"line_number":7529,"context_line":"            qos_normal_port, qos_sriov_port, self.flavor_with_group_policy)"},{"line_number":7530,"context_line":""},{"line_number":7531,"context_line":"        self._delete_server_and_check_allocations("},{"line_number":7532,"context_line":"            server, qos_normal_port, qos_sriov_port)"},{"line_number":7533,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_c0280aef","line":7530,"in_reply_to":"3fa7e38b_e5477ba3","updated":"2020-01-09 08:39:40.000000000","message":"Fix in a separate patch https://review.opendev.org/#/c/701684/","commit_id":"4e8b88a9b4e48a20a034a1439d65b995ab42f9f5"}],"nova/virt/fake.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7c2450edc86acfcb572f8252867c01413db768ea","unresolved":false,"context_lines":[{"line_number":1044,"context_line":"    without the force_complete_migration or delete_migration API calls."},{"line_number":1045,"context_line":""},{"line_number":1046,"context_line":"    \"\"\""},{"line_number":1047,"context_line":""},{"line_number":1048,"context_line":""},{"line_number":1049,"context_line":"class FakeDriverWithCaching(FakeDriver):"},{"line_number":1050,"context_line":"    def __init__(self, *a, **k):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_0fa911dd","line":1047,"updated":"2020-01-17 15:50:33.000000000","message":"nit: can I get a `pass` here?","commit_id":"6299157509ce2500cdcd45cdda8ec92766cc4d48"}]}
