)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4421600990f5fd9bffc83dbfba42283bffcdfc25","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f350899c_872bb09d","updated":"2022-02-24 15:55:56.000000000","message":"Really nice and extensive functional test set. Thank you! I left some improvement suggestions inline.","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"523c754266ede900ed7272ad4897dd32645db176","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b5758906_82d2d99a","updated":"2022-02-24 15:55:32.000000000","message":"this is pretty good.\n\nmy main feedback is the numa assert you are doing is not really adding much\nand it would be nice to have a revert testcase too.\ni have some other comments inlien but overall this looks pretty good to me.","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"87bf33fb8db8cd4b5edd2f46c01e2fa9727f4a97","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"bb9d6d8a_8c0954a8","updated":"2022-03-10 11:47:03.000000000","message":"My only notes are related to the bug https://bugs.launchpad.net/nova/+bug/1961587 as these patch now widens the gap we need to close there. But I\u0027m not holding this fix up.","commit_id":"3fd7e9489373b4690101cae64c720bf530a695bb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"57d435d226ee6633702522ec073d55a7a87f12d4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"073de4df_0919b0e6","updated":"2022-03-04 16:01:27.000000000","message":"ill check back when zuul is doen but i think this looks pretty good","commit_id":"3fd7e9489373b4690101cae64c720bf530a695bb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ff3eb8b601101ccaabb489db9833017e07637079","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c3d4a290_6040f3b1","updated":"2022-03-07 15:15:12.000000000","message":"zuul seams happy so upgrading to +2","commit_id":"3fd7e9489373b4690101cae64c720bf530a695bb"}],"nova/compute/manager.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"523c754266ede900ed7272ad4897dd32645db176","unresolved":false,"context_lines":[{"line_number":10812,"context_line":"            if profile.get(\u0027vf_num\u0027):"},{"line_number":10813,"context_line":"                profile[\u0027vf_num\u0027] \u003d pci_utils.get_vf_num_by_pci_address("},{"line_number":10814,"context_line":"                    pci_dev.address)"},{"line_number":10815,"context_line":""},{"line_number":10816,"context_line":"            mig_vif.profile \u003d profile"},{"line_number":10817,"context_line":"            LOG.debug(\"Updating migrate VIF profile for port %(port_id)s:\""},{"line_number":10818,"context_line":"                      \"%(profile)s\", {\u0027port_id\u0027: port_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"a9d2ce6b_13dfc642","line":10815,"updated":"2022-02-24 15:55:32.000000000","message":"ok so this only updates the profile with this info if the source device had it set.\nbut this would only work if _update_migrate_vifs_profile_with_pci is executed on teh dest host.\n\nthis is indeed invoked form check_can_live_migrate_destination so that should be ok\nhttps://github.com/openstack/nova/blob/master/nova/compute/manager.py#L8060","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"87bf33fb8db8cd4b5edd2f46c01e2fa9727f4a97","unresolved":false,"context_lines":[{"line_number":10889,"context_line":"            if profile.get(\u0027card_serial_number\u0027):"},{"line_number":10890,"context_line":"                # Assume it is there since Nova makes sure that PCI devices"},{"line_number":10891,"context_line":"                # tagged as remote-managed have a serial in PCI VPD."},{"line_number":10892,"context_line":"                profile[\u0027card_serial_number\u0027] \u003d pci_dev.card_serial_number"},{"line_number":10893,"context_line":"            if profile.get(\u0027pf_mac_address\u0027):"},{"line_number":10894,"context_line":"                profile[\u0027pf_mac_address\u0027] \u003d pci_utils.get_mac_by_pci_address("},{"line_number":10895,"context_line":"                    pci_dev.parent_addr)"}],"source_content_type":"text/x-python","patch_set":5,"id":"47e4bd6f_63ce9da1","line":10892,"range":{"start_line":10892,"start_character":16,"end_line":10892,"end_character":74},"updated":"2022-03-10 11:47:03.000000000","message":"Thanks. This is what we are after. The pci_dev object should have all the necessary information populated by the virt driver.","commit_id":"3fd7e9489373b4690101cae64c720bf530a695bb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"87bf33fb8db8cd4b5edd2f46c01e2fa9727f4a97","unresolved":true,"context_lines":[{"line_number":10890,"context_line":"                # Assume it is there since Nova makes sure that PCI devices"},{"line_number":10891,"context_line":"                # tagged as remote-managed have a serial in PCI VPD."},{"line_number":10892,"context_line":"                profile[\u0027card_serial_number\u0027] \u003d pci_dev.card_serial_number"},{"line_number":10893,"context_line":"            if profile.get(\u0027pf_mac_address\u0027):"},{"line_number":10894,"context_line":"                profile[\u0027pf_mac_address\u0027] \u003d pci_utils.get_mac_by_pci_address("},{"line_number":10895,"context_line":"                    pci_dev.parent_addr)"},{"line_number":10896,"context_line":"            if profile.get(\u0027vf_num\u0027):"},{"line_number":10897,"context_line":"                profile[\u0027vf_num\u0027] \u003d pci_utils.get_vf_num_by_pci_address("},{"line_number":10898,"context_line":"                    pci_dev.address)"},{"line_number":10899,"context_line":""},{"line_number":10900,"context_line":"            mig_vif.profile \u003d profile"},{"line_number":10901,"context_line":"            LOG.debug(\"Updating migrate VIF profile for port %(port_id)s:\""}],"source_content_type":"text/x-python","patch_set":5,"id":"a9c7cad7_2977494c","line":10898,"range":{"start_line":10893,"start_character":1,"end_line":10898,"end_character":36},"updated":"2022-03-10 11:47:03.000000000","message":"I suggest to change the libvirt virt driver to populate these information to the pci_dev as well similarly how you did this with the card_serial_number","commit_id":"3fd7e9489373b4690101cae64c720bf530a695bb"}],"nova/network/neutron.py":[{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"59a183da5b17f61337b8152f659bc08608e20578","unresolved":true,"context_lines":[{"line_number":3719,"context_line":"                \u0027card_serial_number\u0027: pci_dev.card_serial_number})"},{"line_number":3720,"context_line":"        if binding_profile.get(\u0027pf_mac_address\u0027):"},{"line_number":3721,"context_line":"            binding_profile.update({"},{"line_number":3722,"context_line":"                \u0027pf_mac_address\u0027: pci_utils.get_mac_by_pci_address("},{"line_number":3723,"context_line":"                    pci_dev.parent_addr)})"},{"line_number":3724,"context_line":"        if binding_profile.get(\u0027vf_num\u0027):"},{"line_number":3725,"context_line":"            binding_profile.update({"}],"source_content_type":"text/x-python","patch_set":3,"id":"533f0fed_50b28d3f","line":3722,"range":{"start_line":3722,"start_character":34,"end_line":3722,"end_character":43},"updated":"2022-02-22 19:23:23.000000000","message":"Note that per the IRC discussion we have a goal of removing calls that look at the sysfs that and replacing that with state stored in extra_info of a PCI device (namely storing pf_mac_address and vf_num there similar to the card_serial_number).","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"523c754266ede900ed7272ad4897dd32645db176","unresolved":false,"context_lines":[{"line_number":3719,"context_line":"                \u0027card_serial_number\u0027: pci_dev.card_serial_number})"},{"line_number":3720,"context_line":"        if binding_profile.get(\u0027pf_mac_address\u0027):"},{"line_number":3721,"context_line":"            binding_profile.update({"},{"line_number":3722,"context_line":"                \u0027pf_mac_address\u0027: pci_utils.get_mac_by_pci_address("},{"line_number":3723,"context_line":"                    pci_dev.parent_addr)})"},{"line_number":3724,"context_line":"        if binding_profile.get(\u0027vf_num\u0027):"},{"line_number":3725,"context_line":"            binding_profile.update({"}],"source_content_type":"text/x-python","patch_set":3,"id":"d49ff018_0f386bb6","line":3722,"range":{"start_line":3722,"start_character":34,"end_line":3722,"end_character":43},"in_reply_to":"533f0fed_50b28d3f","updated":"2022-02-24 15:55:32.000000000","message":"this would also need to be invoked form the destination\nits invoed via  migrate_instance_finish\nhttps://github.com/openstack/nova/blob/master/nova/network/neutron.py#L3208\n\nand setup_instance_network_on_host\nhttps://github.com/openstack/nova/blob/master/nova/network/neutron.py#L3628\n\nits invoed in _finish_resize and the revert paths for cold migration\nhttps://github.com/openstack/nova/blob/b2ec3cd9216ecb46d7c84393234013ea8d88eec6/nova/compute/manager.py#L5764-L5765\nwhich happens on the destination \nhttps://docs.openstack.org/nova/latest/contributor/resize-and-cold-migrate.html#resize\n\nand here in post_live_migration_at_destination\nhttps://github.com/openstack/nova/blob/b2ec3cd9216ecb46d7c84393234013ea8d88eec6/nova/compute/manager.py#L8905-L8929\n\nso this should work.\n\nin the revert path it would be called on teh soruce but with the source node devicec so that shoudl also be ok.","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"87bf33fb8db8cd4b5edd2f46c01e2fa9727f4a97","unresolved":false,"context_lines":[{"line_number":3702,"context_line":"        binding_profile.update({\u0027pci_slot\u0027: pci_dev.address})"},{"line_number":3703,"context_line":"        if binding_profile.get(\u0027card_serial_number\u0027):"},{"line_number":3704,"context_line":"            binding_profile.update({"},{"line_number":3705,"context_line":"                \u0027card_serial_number\u0027: pci_dev.card_serial_number})"},{"line_number":3706,"context_line":"        if binding_profile.get(\u0027pf_mac_address\u0027):"},{"line_number":3707,"context_line":"            binding_profile.update({"},{"line_number":3708,"context_line":"                \u0027pf_mac_address\u0027: pci_utils.get_mac_by_pci_address("}],"source_content_type":"text/x-python","patch_set":5,"id":"5bc72d5a_6c6d4f9c","line":3705,"range":{"start_line":3705,"start_character":38,"end_line":3705,"end_character":64},"updated":"2022-03-10 11:47:03.000000000","message":"Good. Thanks!","commit_id":"3fd7e9489373b4690101cae64c720bf530a695bb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"87bf33fb8db8cd4b5edd2f46c01e2fa9727f4a97","unresolved":true,"context_lines":[{"line_number":3704,"context_line":"            binding_profile.update({"},{"line_number":3705,"context_line":"                \u0027card_serial_number\u0027: pci_dev.card_serial_number})"},{"line_number":3706,"context_line":"        if binding_profile.get(\u0027pf_mac_address\u0027):"},{"line_number":3707,"context_line":"            binding_profile.update({"},{"line_number":3708,"context_line":"                \u0027pf_mac_address\u0027: pci_utils.get_mac_by_pci_address("},{"line_number":3709,"context_line":"                    pci_dev.parent_addr)})"},{"line_number":3710,"context_line":"        if binding_profile.get(\u0027vf_num\u0027):"},{"line_number":3711,"context_line":"            binding_profile.update({"},{"line_number":3712,"context_line":"                \u0027vf_num\u0027: pci_utils.get_vf_num_by_pci_address("},{"line_number":3713,"context_line":"                    pci_dev.address)})"},{"line_number":3714,"context_line":""},{"line_number":3715,"context_line":"    def _update_port_binding_for_instance("},{"line_number":3716,"context_line":"            self, context, instance, host, migration\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"61d19f13_8c097a6c","line":3713,"range":{"start_line":3707,"start_character":0,"end_line":3713,"end_character":38},"updated":"2022-03-10 11:47:03.000000000","message":"This information should also come from the pci_dev object instead of calling out to the sysfs from here.","commit_id":"3fd7e9489373b4690101cae64c720bf530a695bb"}],"nova/tests/functional/libvirt/test_pci_sriov_servers.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"523c754266ede900ed7272ad4897dd32645db176","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        self.assertEqual(free, len([d for d in devices if d.is_available()]))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class _PCIServersWithMigrationTestBase(_PCIServersTestBase):"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def setUp(self):"},{"line_number":79,"context_line":"        super().setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"5b02cde4_84775b44","line":76,"updated":"2022-02-24 15:55:32.000000000","message":"ack this is just a refactor of the common code","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"523c754266ede900ed7272ad4897dd32645db176","unresolved":false,"context_lines":[{"line_number":1726,"context_line":"        {"},{"line_number":1727,"context_line":"            \u0027vendor_id\u0027: \u002715b3\u0027,"},{"line_number":1728,"context_line":"            \u0027product_id\u0027: \u0027101e\u0027,"},{"line_number":1729,"context_line":"            \u0027physical_network\u0027: None,"},{"line_number":1730,"context_line":"            \u0027remote_managed\u0027: \u0027true\u0027,"},{"line_number":1731,"context_line":"        },"},{"line_number":1732,"context_line":"    )]"}],"source_content_type":"text/x-python","patch_set":3,"id":"b39c71d5_d49879c7","line":1729,"updated":"2022-02-24 15:55:32.000000000","message":"ack good to see some test that actully assert this behavior","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"523c754266ede900ed7272ad4897dd32645db176","unresolved":false,"context_lines":[{"line_number":1782,"context_line":""},{"line_number":1783,"context_line":"        if not pci_info:"},{"line_number":1784,"context_line":"            pci_info \u003d fakelibvirt.HostPCIDevicesInfo("},{"line_number":1785,"context_line":"                num_pci\u003d0, num_pfs\u003d0, num_vfs\u003d0)"},{"line_number":1786,"context_line":""},{"line_number":1787,"context_line":"            pci_info.add_device("},{"line_number":1788,"context_line":"                dev_type\u003d\u0027PF\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"453d43c7_d472b31a","line":1785,"updated":"2022-02-24 15:55:32.000000000","message":"ok so this device is modeling basically the card.","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"523c754266ede900ed7272ad4897dd32645db176","unresolved":false,"context_lines":[{"line_number":1803,"context_line":"                        \u0027serial_number\u0027: \u0027MT0000X00001\u0027,"},{"line_number":1804,"context_line":"                    },"},{"line_number":1805,"context_line":"                }"},{"line_number":1806,"context_line":"            )"},{"line_number":1807,"context_line":""},{"line_number":1808,"context_line":"            for idx in range(self.NUM_VFS):"},{"line_number":1809,"context_line":"                pci_info.add_device("}],"source_content_type":"text/x-python","patch_set":3,"id":"42e91bce_d7d81dd9","line":1806,"updated":"2022-02-24 15:55:32.000000000","message":"which has a PF","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"523c754266ede900ed7272ad4897dd32645db176","unresolved":false,"context_lines":[{"line_number":1826,"context_line":"                            \u0027serial_number\u0027: \u0027MT0000X00001\u0027,"},{"line_number":1827,"context_line":"                        },"},{"line_number":1828,"context_line":"                    }"},{"line_number":1829,"context_line":"                )"},{"line_number":1830,"context_line":""},{"line_number":1831,"context_line":"            pci_info.add_device("},{"line_number":1832,"context_line":"                dev_type\u003d\u0027PF\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ef7c99df_99f8d37b","line":1829,"updated":"2022-02-24 15:55:32.000000000","message":"and that pf has multipel VFs","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"523c754266ede900ed7272ad4897dd32645db176","unresolved":false,"context_lines":[{"line_number":1864,"context_line":"                    prod_id\u003d\u0027101e\u0027,"},{"line_number":1865,"context_line":"                    prod_name\u003d\u0027ConnectX Family mlx5Gen Virtual Function\u0027,"},{"line_number":1866,"context_line":"                    driver_name\u003d\u0027mlx5_core\u0027)"},{"line_number":1867,"context_line":""},{"line_number":1868,"context_line":"        return super().start_compute("},{"line_number":1869,"context_line":"            hostname\u003dhostname, host_info\u003dhost_info, pci_info\u003dpci_info,"},{"line_number":1870,"context_line":"            mdev_info\u003dmdev_info, vdpa_info\u003dvdpa_info,"}],"source_content_type":"text/x-python","patch_set":3,"id":"b720ec1c_79b547d9","line":1867,"updated":"2022-02-24 15:55:32.000000000","message":"it also has a second pf with multipel vfs on the same card as the first pf","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"523c754266ede900ed7272ad4897dd32645db176","unresolved":false,"context_lines":[{"line_number":1874,"context_line":"    def create_remote_managed_tunnel_port(self):"},{"line_number":1875,"context_line":"        dpu_tunnel_port \u003d {"},{"line_number":1876,"context_line":"            \u0027id\u0027: uuids.dpu_tunnel_port,"},{"line_number":1877,"context_line":"            \u0027network_id\u0027: self.neutron.network_3[\u0027id\u0027],"},{"line_number":1878,"context_line":"            \u0027status\u0027: \u0027ACTIVE\u0027,"},{"line_number":1879,"context_line":"            \u0027mac_address\u0027: \u0027fa:16:3e:f0:a4:bb\u0027,"},{"line_number":1880,"context_line":"            \u0027fixed_ips\u0027: ["}],"source_content_type":"text/x-python","patch_set":3,"id":"3f872888_51ca34bc","line":1877,"updated":"2022-02-24 15:55:32.000000000","message":"ack network_3 is a vxlan network","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"523c754266ede900ed7272ad4897dd32645db176","unresolved":false,"context_lines":[{"line_number":1894,"context_line":"    def create_remote_managed_physnet_port(self):"},{"line_number":1895,"context_line":"        dpu_physnet_port \u003d {"},{"line_number":1896,"context_line":"            \u0027id\u0027: uuids.dpu_physnet_port,"},{"line_number":1897,"context_line":"            \u0027network_id\u0027: self.neutron.network_4[\u0027id\u0027],"},{"line_number":1898,"context_line":"            \u0027status\u0027: \u0027ACTIVE\u0027,"},{"line_number":1899,"context_line":"            \u0027mac_address\u0027: \u0027d2:0b:fd:99:89:8b\u0027,"},{"line_number":1900,"context_line":"            \u0027fixed_ips\u0027: ["}],"source_content_type":"text/x-python","patch_set":3,"id":"3804116e_063adf9d","line":1897,"updated":"2022-02-24 15:55:32.000000000","message":"and network_4 is vlan with physnet physnet4","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"523c754266ede900ed7272ad4897dd32645db176","unresolved":false,"context_lines":[{"line_number":1939,"context_line":"            \u0027pci_slot\u0027: \u00270000:81:00.4\u0027,"},{"line_number":1940,"context_line":"            \u0027pci_vendor_info\u0027: \u002715b3:1021\u0027,"},{"line_number":1941,"context_line":"            \u0027pf_mac_address\u0027: \u002752:54:00:1e:59:01\u0027,"},{"line_number":1942,"context_line":"            \u0027physical_network\u0027: \u0027physnet4\u0027,"},{"line_number":1943,"context_line":"            \u0027vf_num\u0027: 3"},{"line_number":1944,"context_line":"        }, port[\u0027binding:profile\u0027])"},{"line_number":1945,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"f523adb4_29db8760","line":1942,"updated":"2022-02-24 15:55:32.000000000","message":"yep the phsynet alings.\n\nnormally i would perfer not to relay so much on which device woudl be selected but in this case i thihk this should be deterministic so this shoudl be fine to assert all of this info","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"523c754266ede900ed7272ad4897dd32645db176","unresolved":false,"context_lines":[{"line_number":1969,"context_line":"            \u0027pci_slot\u0027: \u00270000:82:00.4\u0027,"},{"line_number":1970,"context_line":"            \u0027pci_vendor_info\u0027: \u002715b3:101e\u0027,"},{"line_number":1971,"context_line":"            \u0027pf_mac_address\u0027: \u002752:54:00:1e:59:02\u0027,"},{"line_number":1972,"context_line":"            \u0027physical_network\u0027: None,"},{"line_number":1973,"context_line":"            \u0027vf_num\u0027: 3"},{"line_number":1974,"context_line":"        }, port[\u0027binding:profile\u0027])"},{"line_number":1975,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"92aa56bc_931fa9e4","line":1972,"updated":"2022-02-24 15:55:32.000000000","message":"yep for tunneled port this will be the python None object","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4421600990f5fd9bffc83dbfba42283bffcdfc25","unresolved":true,"context_lines":[{"line_number":1985,"context_line":"        dpu_port \u003d self.create_remote_managed_tunnel_port()"},{"line_number":1986,"context_line":"        server \u003d self._create_server(networks\u003d\u0027none\u0027)"},{"line_number":1987,"context_line":""},{"line_number":1988,"context_line":"        self._attach_interface(server, dpu_port[\u0027id\u0027])"},{"line_number":1989,"context_line":""},{"line_number":1990,"context_line":"    def _detach_port(self, instance_uuid, port_id):"},{"line_number":1991,"context_line":"        self.api.detach_interface(instance_uuid, port_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5d41052f_3bff9a4d","line":1988,"updated":"2022-02-24 15:55:56.000000000","message":"I guess we could assert the bindig profile here too","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"70ac6991bf931ce2ff54b64e149244adc2426ff8","unresolved":false,"context_lines":[{"line_number":1985,"context_line":"        dpu_port \u003d self.create_remote_managed_tunnel_port()"},{"line_number":1986,"context_line":"        server \u003d self._create_server(networks\u003d\u0027none\u0027)"},{"line_number":1987,"context_line":""},{"line_number":1988,"context_line":"        self._attach_interface(server, dpu_port[\u0027id\u0027])"},{"line_number":1989,"context_line":""},{"line_number":1990,"context_line":"    def _detach_port(self, instance_uuid, port_id):"},{"line_number":1991,"context_line":"        self.api.detach_interface(instance_uuid, port_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"d120708d_d926f509","line":1988,"in_reply_to":"5d41052f_3bff9a4d","updated":"2022-02-25 13:58:53.000000000","message":"Done","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"523c754266ede900ed7272ad4897dd32645db176","unresolved":true,"context_lines":[{"line_number":1987,"context_line":""},{"line_number":1988,"context_line":"        self._attach_interface(server, dpu_port[\u0027id\u0027])"},{"line_number":1989,"context_line":""},{"line_number":1990,"context_line":"    def _detach_port(self, instance_uuid, port_id):"},{"line_number":1991,"context_line":"        self.api.detach_interface(instance_uuid, port_id)"},{"line_number":1992,"context_line":"        self.notifier.wait_for_versioned_notifications("},{"line_number":1993,"context_line":"            \u0027instance.interface_detach.end\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"b940aaf6_e52ad83a","line":1990,"range":{"start_line":1990,"start_character":8,"end_line":1990,"end_character":20},"updated":"2022-02-24 15:55:32.000000000","message":"nit: we have a helper for this\n\nhttps://github.com/openstack/nova/blob/b2ec3cd9216ecb46d7c84393234013ea8d88eec6/nova/tests/functional/integrated_helpers.py#L486-L490\n\nyou shoudl be able to use that instead.","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"70ac6991bf931ce2ff54b64e149244adc2426ff8","unresolved":false,"context_lines":[{"line_number":1987,"context_line":""},{"line_number":1988,"context_line":"        self._attach_interface(server, dpu_port[\u0027id\u0027])"},{"line_number":1989,"context_line":""},{"line_number":1990,"context_line":"    def _detach_port(self, instance_uuid, port_id):"},{"line_number":1991,"context_line":"        self.api.detach_interface(instance_uuid, port_id)"},{"line_number":1992,"context_line":"        self.notifier.wait_for_versioned_notifications("},{"line_number":1993,"context_line":"            \u0027instance.interface_detach.end\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"c5f8d8df_523e3d29","line":1990,"range":{"start_line":1990,"start_character":8,"end_line":1990,"end_character":20},"in_reply_to":"b940aaf6_e52ad83a","updated":"2022-02-25 13:58:53.000000000","message":"Done","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4421600990f5fd9bffc83dbfba42283bffcdfc25","unresolved":true,"context_lines":[{"line_number":1993,"context_line":"            \u0027instance.interface_detach.end\u0027)"},{"line_number":1994,"context_line":""},{"line_number":1995,"context_line":"    def test_detach_interface(self):"},{"line_number":1996,"context_line":"        self._test_common(self._detach_interface, uuids.dpu_tunnel_port)"},{"line_number":1997,"context_line":""},{"line_number":1998,"context_line":"    def test_shelve(self):"},{"line_number":1999,"context_line":"        self._test_common(self._shelve_server)"}],"source_content_type":"text/x-python","patch_set":3,"id":"b9f21d5f_7a60a8fa","line":1996,"updated":"2022-02-24 15:55:56.000000000","message":"I think we can assert that the profile is cleaned after the detach","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"523c754266ede900ed7272ad4897dd32645db176","unresolved":true,"context_lines":[{"line_number":1993,"context_line":"            \u0027instance.interface_detach.end\u0027)"},{"line_number":1994,"context_line":""},{"line_number":1995,"context_line":"    def test_detach_interface(self):"},{"line_number":1996,"context_line":"        self._test_common(self._detach_interface, uuids.dpu_tunnel_port)"},{"line_number":1997,"context_line":""},{"line_number":1998,"context_line":"    def test_shelve(self):"},{"line_number":1999,"context_line":"        self._test_common(self._shelve_server)"}],"source_content_type":"text/x-python","patch_set":3,"id":"b17806b1_94bfe11d","line":1996,"range":{"start_line":1996,"start_character":31,"end_line":1996,"end_character":48},"updated":"2022-02-24 15:55:32.000000000","message":"actually you already are so i don\u0027t think you need _detach_port can you delete it","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"70ac6991bf931ce2ff54b64e149244adc2426ff8","unresolved":false,"context_lines":[{"line_number":1993,"context_line":"            \u0027instance.interface_detach.end\u0027)"},{"line_number":1994,"context_line":""},{"line_number":1995,"context_line":"    def test_detach_interface(self):"},{"line_number":1996,"context_line":"        self._test_common(self._detach_interface, uuids.dpu_tunnel_port)"},{"line_number":1997,"context_line":""},{"line_number":1998,"context_line":"    def test_shelve(self):"},{"line_number":1999,"context_line":"        self._test_common(self._shelve_server)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baf1a863_67437a04","line":1996,"range":{"start_line":1996,"start_character":31,"end_line":1996,"end_character":48},"in_reply_to":"b17806b1_94bfe11d","updated":"2022-02-25 13:58:53.000000000","message":"Done","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"70ac6991bf931ce2ff54b64e149244adc2426ff8","unresolved":false,"context_lines":[{"line_number":1993,"context_line":"            \u0027instance.interface_detach.end\u0027)"},{"line_number":1994,"context_line":""},{"line_number":1995,"context_line":"    def test_detach_interface(self):"},{"line_number":1996,"context_line":"        self._test_common(self._detach_interface, uuids.dpu_tunnel_port)"},{"line_number":1997,"context_line":""},{"line_number":1998,"context_line":"    def test_shelve(self):"},{"line_number":1999,"context_line":"        self._test_common(self._shelve_server)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3520304c_e3bd634f","line":1996,"in_reply_to":"b9f21d5f_7a60a8fa","updated":"2022-02-25 13:58:53.000000000","message":"Done","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4421600990f5fd9bffc83dbfba42283bffcdfc25","unresolved":true,"context_lines":[{"line_number":1996,"context_line":"        self._test_common(self._detach_interface, uuids.dpu_tunnel_port)"},{"line_number":1997,"context_line":""},{"line_number":1998,"context_line":"    def test_shelve(self):"},{"line_number":1999,"context_line":"        self._test_common(self._shelve_server)"},{"line_number":2000,"context_line":""},{"line_number":2001,"context_line":"    def test_suspend(self):"},{"line_number":2002,"context_line":"        self.start_compute()"}],"source_content_type":"text/x-python","patch_set":3,"id":"086ece28_51c4e957","line":1999,"updated":"2022-02-24 15:55:56.000000000","message":"We can assert the port binding profile here too","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"70ac6991bf931ce2ff54b64e149244adc2426ff8","unresolved":false,"context_lines":[{"line_number":1996,"context_line":"        self._test_common(self._detach_interface, uuids.dpu_tunnel_port)"},{"line_number":1997,"context_line":""},{"line_number":1998,"context_line":"    def test_shelve(self):"},{"line_number":1999,"context_line":"        self._test_common(self._shelve_server)"},{"line_number":2000,"context_line":""},{"line_number":2001,"context_line":"    def test_suspend(self):"},{"line_number":2002,"context_line":"        self.start_compute()"}],"source_content_type":"text/x-python","patch_set":3,"id":"ce6dd788_bddc68d5","line":1999,"in_reply_to":"086ece28_51c4e957","updated":"2022-02-25 13:58:53.000000000","message":"Done","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"523c754266ede900ed7272ad4897dd32645db176","unresolved":true,"context_lines":[{"line_number":2062,"context_line":"        port \u003d self.neutron.show_port(dpu_port[\u0027id\u0027])[\u0027port\u0027]"},{"line_number":2063,"context_line":"        self.assertNotIn(\u0027binding:profile\u0027, port)"},{"line_number":2064,"context_line":""},{"line_number":2065,"context_line":"        extra_spec \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027}"},{"line_number":2066,"context_line":"        flavor_id \u003d self._create_flavor(vcpu\u003d4, extra_spec\u003dextra_spec)"},{"line_number":2067,"context_line":"        server \u003d self._create_server("},{"line_number":2068,"context_line":"            flavor_id\u003dflavor_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ec87d572_fe4e6226","line":2065,"updated":"2022-02-24 15:55:32.000000000","message":"is there a reason you are using cpu pinning.\ni mean that is fine but you could do this in a seperate test and have this just be the basic case of live migration with sriov remote mannaged ports without numa","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"57d435d226ee6633702522ec073d55a7a87f12d4","unresolved":false,"context_lines":[{"line_number":2062,"context_line":"        port \u003d self.neutron.show_port(dpu_port[\u0027id\u0027])[\u0027port\u0027]"},{"line_number":2063,"context_line":"        self.assertNotIn(\u0027binding:profile\u0027, port)"},{"line_number":2064,"context_line":""},{"line_number":2065,"context_line":"        extra_spec \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027}"},{"line_number":2066,"context_line":"        flavor_id \u003d self._create_flavor(vcpu\u003d4, extra_spec\u003dextra_spec)"},{"line_number":2067,"context_line":"        server \u003d self._create_server("},{"line_number":2068,"context_line":"            flavor_id\u003dflavor_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac819c1_931633ac","line":2065,"in_reply_to":"031adfff_2c239357","updated":"2022-03-04 16:01:27.000000000","message":"ack","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"70ac6991bf931ce2ff54b64e149244adc2426ff8","unresolved":false,"context_lines":[{"line_number":2062,"context_line":"        port \u003d self.neutron.show_port(dpu_port[\u0027id\u0027])[\u0027port\u0027]"},{"line_number":2063,"context_line":"        self.assertNotIn(\u0027binding:profile\u0027, port)"},{"line_number":2064,"context_line":""},{"line_number":2065,"context_line":"        extra_spec \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027}"},{"line_number":2066,"context_line":"        flavor_id \u003d self._create_flavor(vcpu\u003d4, extra_spec\u003dextra_spec)"},{"line_number":2067,"context_line":"        server \u003d self._create_server("},{"line_number":2068,"context_line":"            flavor_id\u003dflavor_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"031adfff_2c239357","line":2065,"in_reply_to":"ec87d572_fe4e6226","updated":"2022-02-25 13:58:53.000000000","message":"Been looking at the SR-IOV tests above so I think I borrowed it from there. Going to drop it.","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"523c754266ede900ed7272ad4897dd32645db176","unresolved":true,"context_lines":[{"line_number":2074,"context_line":"        self.assertPCIDeviceCounts(\u0027test_compute0\u0027, total\u003d10, free\u003d8)"},{"line_number":2075,"context_line":"        self.assertPCIDeviceCounts(\u0027test_compute1\u0027, total\u003d5, free\u003d5)"},{"line_number":2076,"context_line":""},{"line_number":2077,"context_line":"        host_numa \u003d objects.NUMATopology.obj_from_db_obj("},{"line_number":2078,"context_line":"            objects.ComputeNode.get_by_nodename("},{"line_number":2079,"context_line":"                self.ctxt, \u0027test_compute0\u0027,"},{"line_number":2080,"context_line":"            ).numa_topology"},{"line_number":2081,"context_line":"        )"},{"line_number":2082,"context_line":"        self.assertEqual({0, 1, 2, 3}, host_numa.cells[0].pinned_cpus)"},{"line_number":2083,"context_line":"        self.assertEqual(set(), host_numa.cells[1].pinned_cpus)"},{"line_number":2084,"context_line":""},{"line_number":2085,"context_line":"        port \u003d self.neutron.show_port(dpu_port[\u0027id\u0027])[\u0027port\u0027]"},{"line_number":2086,"context_line":"        self.assertIn(\u0027binding:profile\u0027, port)"}],"source_content_type":"text/x-python","patch_set":3,"id":"2dc3a5e8_ba720d21","line":2083,"range":{"start_line":2077,"start_character":7,"end_line":2083,"end_character":63},"updated":"2022-02-24 15:55:32.000000000","message":"looking at how you are usign the numa info you are not really adding any assertion that benifit the test coverage so i woudl jsut remove this here and below.","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"70ac6991bf931ce2ff54b64e149244adc2426ff8","unresolved":false,"context_lines":[{"line_number":2074,"context_line":"        self.assertPCIDeviceCounts(\u0027test_compute0\u0027, total\u003d10, free\u003d8)"},{"line_number":2075,"context_line":"        self.assertPCIDeviceCounts(\u0027test_compute1\u0027, total\u003d5, free\u003d5)"},{"line_number":2076,"context_line":""},{"line_number":2077,"context_line":"        host_numa \u003d objects.NUMATopology.obj_from_db_obj("},{"line_number":2078,"context_line":"            objects.ComputeNode.get_by_nodename("},{"line_number":2079,"context_line":"                self.ctxt, \u0027test_compute0\u0027,"},{"line_number":2080,"context_line":"            ).numa_topology"},{"line_number":2081,"context_line":"        )"},{"line_number":2082,"context_line":"        self.assertEqual({0, 1, 2, 3}, host_numa.cells[0].pinned_cpus)"},{"line_number":2083,"context_line":"        self.assertEqual(set(), host_numa.cells[1].pinned_cpus)"},{"line_number":2084,"context_line":""},{"line_number":2085,"context_line":"        port \u003d self.neutron.show_port(dpu_port[\u0027id\u0027])[\u0027port\u0027]"},{"line_number":2086,"context_line":"        self.assertIn(\u0027binding:profile\u0027, port)"}],"source_content_type":"text/x-python","patch_set":3,"id":"51ff8037_90d8eceb","line":2083,"range":{"start_line":2077,"start_character":7,"end_line":2083,"end_character":63},"in_reply_to":"2dc3a5e8_ba720d21","updated":"2022-02-25 13:58:53.000000000","message":"Ack","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"523c754266ede900ed7272ad4897dd32645db176","unresolved":true,"context_lines":[{"line_number":2100,"context_line":""},{"line_number":2101,"context_line":"    def test_unshelve_server_with_neutron(self):"},{"line_number":2102,"context_line":"        def move_operation(source_server):"},{"line_number":2103,"context_line":"            self._shelve_server(source_server)"},{"line_number":2104,"context_line":"            # Disable the source compute, to force unshelving on the dest."},{"line_number":2105,"context_line":"            self.api.put_service("},{"line_number":2106,"context_line":"                self.computes[\u0027test_compute0\u0027].service_ref.uuid,"}],"source_content_type":"text/x-python","patch_set":3,"id":"97c16666_65ecff46","line":2103,"range":{"start_line":2103,"start_character":11,"end_line":2103,"end_character":46},"updated":"2022-02-24 15:55:32.000000000","message":"ack this defaults to waiting for shelve_offloaded so the unshelve will indeed change host once the source is disabeld","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"70ac6991bf931ce2ff54b64e149244adc2426ff8","unresolved":false,"context_lines":[{"line_number":2100,"context_line":""},{"line_number":2101,"context_line":"    def test_unshelve_server_with_neutron(self):"},{"line_number":2102,"context_line":"        def move_operation(source_server):"},{"line_number":2103,"context_line":"            self._shelve_server(source_server)"},{"line_number":2104,"context_line":"            # Disable the source compute, to force unshelving on the dest."},{"line_number":2105,"context_line":"            self.api.put_service("},{"line_number":2106,"context_line":"                self.computes[\u0027test_compute0\u0027].service_ref.uuid,"}],"source_content_type":"text/x-python","patch_set":3,"id":"2b7fe845_27136144","line":2103,"range":{"start_line":2103,"start_character":11,"end_line":2103,"end_character":46},"in_reply_to":"97c16666_65ecff46","updated":"2022-02-25 13:58:53.000000000","message":"Ack","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"523c754266ede900ed7272ad4897dd32645db176","unresolved":true,"context_lines":[{"line_number":2137,"context_line":"            port[\u0027binding:profile\u0027],"},{"line_number":2138,"context_line":"        )"},{"line_number":2139,"context_line":""},{"line_number":2140,"context_line":"    def test_cold_migrate_server_with_neutron(self):"},{"line_number":2141,"context_line":"        def move_operation(source_server):"},{"line_number":2142,"context_line":"            with mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver\u0027"},{"line_number":2143,"context_line":"                            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5345b486_f35cb8a9","line":2140,"updated":"2022-02-24 15:55:32.000000000","message":"it would be nice to also test revert in addtion to this confrim case.","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"172fc3103f79f8dbc874c97dcffa2f717b701b4f","unresolved":true,"context_lines":[{"line_number":2137,"context_line":"            port[\u0027binding:profile\u0027],"},{"line_number":2138,"context_line":"        )"},{"line_number":2139,"context_line":""},{"line_number":2140,"context_line":"    def test_cold_migrate_server_with_neutron(self):"},{"line_number":2141,"context_line":"        def move_operation(source_server):"},{"line_number":2142,"context_line":"            with mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver\u0027"},{"line_number":2143,"context_line":"                            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027):"}],"source_content_type":"text/x-python","patch_set":3,"id":"15dfb4fb_bc6c7018","line":2140,"in_reply_to":"08496b8f_5c35986f","updated":"2022-02-25 17:37:08.000000000","message":"Tried adding the revert to the regular SR-IOV test case. It looks like there is a problem in the test fixture in general for tests with PCI devices:\n\nhttps://paste.opendev.org/show/blQLSgsFtQbryq3q6ZJM/\n\n  File \"/home/ubuntu/src/opendev/nova/nova/tests/fixtures/libvirt.py\", line 1226, in verify_hostdevs_interface_are_vfs\n    pci_info_from_connection \u003d self._connection.pci_info.devices[\nKeyError: \u0027pci_0000_81_00_2\u0027","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"86b86d732b29ba1f244d16d70ddbf9e32b163e57","unresolved":true,"context_lines":[{"line_number":2137,"context_line":"            port[\u0027binding:profile\u0027],"},{"line_number":2138,"context_line":"        )"},{"line_number":2139,"context_line":""},{"line_number":2140,"context_line":"    def test_cold_migrate_server_with_neutron(self):"},{"line_number":2141,"context_line":"        def move_operation(source_server):"},{"line_number":2142,"context_line":"            with mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver\u0027"},{"line_number":2143,"context_line":"                            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027):"}],"source_content_type":"text/x-python","patch_set":3,"id":"85d4d92b_d4478a7b","line":2140,"in_reply_to":"08496b8f_5c35986f","updated":"2022-02-28 15:57:29.000000000","message":"Yeah I see the same issue when trying to cover this in the PF MAC update series. So I also looking into it","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"e32fa7d57954b33e295d8ef6136decce458a2aed","unresolved":true,"context_lines":[{"line_number":2137,"context_line":"            port[\u0027binding:profile\u0027],"},{"line_number":2138,"context_line":"        )"},{"line_number":2139,"context_line":""},{"line_number":2140,"context_line":"    def test_cold_migrate_server_with_neutron(self):"},{"line_number":2141,"context_line":"        def move_operation(source_server):"},{"line_number":2142,"context_line":"            with mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver\u0027"},{"line_number":2143,"context_line":"                            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027):"}],"source_content_type":"text/x-python","patch_set":3,"id":"b57b3ca0_ac450c74","line":2140,"in_reply_to":"30e08afe_f4c6594f","updated":"2022-02-28 18:10:43.000000000","message":"Ack, thanks for looking into it further!","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"70ac6991bf931ce2ff54b64e149244adc2426ff8","unresolved":true,"context_lines":[{"line_number":2137,"context_line":"            port[\u0027binding:profile\u0027],"},{"line_number":2138,"context_line":"        )"},{"line_number":2139,"context_line":""},{"line_number":2140,"context_line":"    def test_cold_migrate_server_with_neutron(self):"},{"line_number":2141,"context_line":"        def move_operation(source_server):"},{"line_number":2142,"context_line":"            with mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver\u0027"},{"line_number":2143,"context_line":"                            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027):"}],"source_content_type":"text/x-python","patch_set":3,"id":"08496b8f_5c35986f","line":2140,"in_reply_to":"5345b486_f35cb8a9","updated":"2022-02-25 13:58:53.000000000","message":"Tried using revert_resize but `_connection.pci_info.devices` is not updated back to the original host\u0027s devices for some reason. Trying to figure out where the issue is. I could do it in a follow-up if possible.","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7618c4aa20df1af7821c6df12a7342dd5eb4898d","unresolved":true,"context_lines":[{"line_number":2137,"context_line":"            port[\u0027binding:profile\u0027],"},{"line_number":2138,"context_line":"        )"},{"line_number":2139,"context_line":""},{"line_number":2140,"context_line":"    def test_cold_migrate_server_with_neutron(self):"},{"line_number":2141,"context_line":"        def move_operation(source_server):"},{"line_number":2142,"context_line":"            with mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver\u0027"},{"line_number":2143,"context_line":"                            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027):"}],"source_content_type":"text/x-python","patch_set":3,"id":"30e08afe_f4c6594f","line":2140,"in_reply_to":"85d4d92b_d4478a7b","updated":"2022-02-28 17:55:57.000000000","message":"It seems that the instance.pci_devices object is leaking between compute services in the functional test and the pci_devices list grows to hold both the source and the dest pci devices leading to the error Dmitrii copied above. In a real deployment the instance.pci_devices only holds the actual devices even during migration. So this is a functional test issue.\n\nI will continue tracking this down tomorrow.","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"e742a36af2721f0223bf29fce01e51da0a171965","unresolved":false,"context_lines":[{"line_number":2137,"context_line":"            port[\u0027binding:profile\u0027],"},{"line_number":2138,"context_line":"        )"},{"line_number":2139,"context_line":""},{"line_number":2140,"context_line":"    def test_cold_migrate_server_with_neutron(self):"},{"line_number":2141,"context_line":"        def move_operation(source_server):"},{"line_number":2142,"context_line":"            with mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver\u0027"},{"line_number":2143,"context_line":"                            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027):"}],"source_content_type":"text/x-python","patch_set":3,"id":"f7e759f4_8405d862","line":2140,"in_reply_to":"96e9877f_a24d8266","updated":"2022-03-04 15:43:06.000000000","message":"I included the fix into this change since it\u0027s a one-liner and added a test case.\n\nThanks again for looking into it!","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c35230fae3b9a1c7f34ffd5e3da0e18af762aac1","unresolved":true,"context_lines":[{"line_number":2137,"context_line":"            port[\u0027binding:profile\u0027],"},{"line_number":2138,"context_line":"        )"},{"line_number":2139,"context_line":""},{"line_number":2140,"context_line":"    def test_cold_migrate_server_with_neutron(self):"},{"line_number":2141,"context_line":"        def move_operation(source_server):"},{"line_number":2142,"context_line":"            with mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver\u0027"},{"line_number":2143,"context_line":"                            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027):"}],"source_content_type":"text/x-python","patch_set":3,"id":"96e9877f_a24d8266","line":2140,"in_reply_to":"b57b3ca0_ac450c74","updated":"2022-03-03 07:28:19.000000000","message":"I tracked down the issue to the resource tracker and migration context handling. I\u0027m not 100% sure why I we only see the problem in the func test and not in real environment but I guess that the fake RPC and the CastAsCall fixture in the func env causing the difference. So the fix is here https://review.opendev.org/c/openstack/nova/+/829248/4/nova/compute/resource_tracker.py I think making a copy for the migration context make sense even if it does not cause any visible problems in real deployments today.","commit_id":"5a5693bdcb1a5a0cda10d4ff00d9157ddd31eb19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dfadec1b631531cd3d89d95debcc42eeda2bd583","unresolved":true,"context_lines":[{"line_number":2185,"context_line":"                self.assertPCIDeviceCounts(\u0027test_compute0\u0027, total\u003d10, free\u003d8)"},{"line_number":2186,"context_line":"                self.assertPCIDeviceCounts(\u0027test_compute1\u0027, total\u003d5, free\u003d3)"},{"line_number":2187,"context_line":""},{"line_number":2188,"context_line":"                self._revert_resize(server)"},{"line_number":2189,"context_line":""},{"line_number":2190,"context_line":"                self.assertPCIDeviceCounts(\u0027test_compute0\u0027, total\u003d10, free\u003d8)"},{"line_number":2191,"context_line":"                self.assertPCIDeviceCounts(\u0027test_compute1\u0027, total\u003d5, free\u003d5)"}],"source_content_type":"text/x-python","patch_set":5,"id":"53fc62af_2cefb51d","line":2188,"updated":"2022-03-04 16:03:40.000000000","message":"+1 thanks for adding this.\nassuming zuul is happy i will likely upgrade to a +2 later\nyou have already addressed my previous feedback","commit_id":"3fd7e9489373b4690101cae64c720bf530a695bb"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"cdfe8c246fc583d447f444d6bcc3588092072ab9","unresolved":true,"context_lines":[{"line_number":2185,"context_line":"                self.assertPCIDeviceCounts(\u0027test_compute0\u0027, total\u003d10, free\u003d8)"},{"line_number":2186,"context_line":"                self.assertPCIDeviceCounts(\u0027test_compute1\u0027, total\u003d5, free\u003d3)"},{"line_number":2187,"context_line":""},{"line_number":2188,"context_line":"                self._revert_resize(server)"},{"line_number":2189,"context_line":""},{"line_number":2190,"context_line":"                self.assertPCIDeviceCounts(\u0027test_compute0\u0027, total\u003d10, free\u003d8)"},{"line_number":2191,"context_line":"                self.assertPCIDeviceCounts(\u0027test_compute1\u0027, total\u003d5, free\u003d5)"}],"source_content_type":"text/x-python","patch_set":5,"id":"c471714d_59251851","line":2188,"in_reply_to":"53fc62af_2cefb51d","updated":"2022-03-04 16:21:16.000000000","message":"ack, thanks a lot!","commit_id":"3fd7e9489373b4690101cae64c720bf530a695bb"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"5f01b94310ae8748913e7d7a9aa1e95c69107955","unresolved":false,"context_lines":[{"line_number":2185,"context_line":"                self.assertPCIDeviceCounts(\u0027test_compute0\u0027, total\u003d10, free\u003d8)"},{"line_number":2186,"context_line":"                self.assertPCIDeviceCounts(\u0027test_compute1\u0027, total\u003d5, free\u003d3)"},{"line_number":2187,"context_line":""},{"line_number":2188,"context_line":"                self._revert_resize(server)"},{"line_number":2189,"context_line":""},{"line_number":2190,"context_line":"                self.assertPCIDeviceCounts(\u0027test_compute0\u0027, total\u003d10, free\u003d8)"},{"line_number":2191,"context_line":"                self.assertPCIDeviceCounts(\u0027test_compute1\u0027, total\u003d5, free\u003d5)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ceadec75_bc4eec7e","line":2188,"in_reply_to":"c471714d_59251851","updated":"2022-03-10 09:33:06.000000000","message":"Done","commit_id":"3fd7e9489373b4690101cae64c720bf530a695bb"}]}
