)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2a2926c0c7e1cf5c71bbe729b1bdbb6496e80576","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch tests cold migration, unshelve and evacuate in a situation"},{"line_number":10,"context_line":"where the existing port binding\u0027s pci_slot would cause a conflict on"},{"line_number":11,"context_line":"the destination compute node. While cold migration and evcacuation"},{"line_number":12,"context_line":"work correctly, in the unshelve case the pci_slot is not updated,"},{"line_number":13,"context_line":"resulting in two instances attempting to consume the same PCI device."},{"line_number":14,"context_line":"This \"passed\" in the functional tests, but with a real libvirt this"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"96f10faf_ecda44c6","line":11,"range":{"start_line":11,"start_character":57,"end_line":11,"end_character":58},"updated":"2021-04-15 10:44:32.000000000","message":"drop","commit_id":"7be925fa574267901d2f95e31d791157908ef4f9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a319b45c39692998c6b2eb5a93bf6edc16ef1b14","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch tests cold migration, unshelve and evacuate in a situation"},{"line_number":10,"context_line":"where the existing port binding\u0027s pci_slot would cause a conflict on"},{"line_number":11,"context_line":"the destination compute node. While cold migration and evcacuation"},{"line_number":12,"context_line":"work correctly, in the unshelve case the pci_slot is not updated,"},{"line_number":13,"context_line":"resulting in two instances attempting to consume the same PCI device."},{"line_number":14,"context_line":"This \"passed\" in the functional tests, but with a real libvirt this"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ec2af0fc_6d486612","line":11,"range":{"start_line":11,"start_character":57,"end_line":11,"end_character":58},"in_reply_to":"96f10faf_ecda44c6","updated":"2021-04-15 15:21:43.000000000","message":"Done","commit_id":"7be925fa574267901d2f95e31d791157908ef4f9"}],"nova/tests/functional/libvirt/base.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ac0df203cd75e47030879a39d6108dc0e6560241","unresolved":true,"context_lines":[{"line_number":309,"context_line":"        \u0027id\u0027: \u00274a0e3b05-4704-4adb-bfb1-f31f0e4d1bdc\u0027,"},{"line_number":310,"context_line":"        \u0027network_id\u0027: network_4[\u0027id\u0027],"},{"line_number":311,"context_line":"        \u0027status\u0027: \u0027ACTIVE\u0027,"},{"line_number":312,"context_line":"        \u0027mac_address\u0027: \u0027b5:bc:2e:e7:51:ee\u0027,"},{"line_number":313,"context_line":"        \u0027fixed_ips\u0027: ["},{"line_number":314,"context_line":"            {"},{"line_number":315,"context_line":"                \u0027ip_address\u0027: \u0027192.168.4.6\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"d8d0c30b_a3cc400d","line":312,"range":{"start_line":312,"start_character":24,"end_line":312,"end_character":41},"updated":"2021-03-31 23:57:30.000000000","message":"can you change this mac so its not the same network_4_port_1, neutron does nto allow that","commit_id":"638c2e72c3ddb7208dc97c7acfe020ba1adc507e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f3bccaba66c830c0b41e49485509d8213a81b93c","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        \u0027id\u0027: \u00274a0e3b05-4704-4adb-bfb1-f31f0e4d1bdc\u0027,"},{"line_number":310,"context_line":"        \u0027network_id\u0027: network_4[\u0027id\u0027],"},{"line_number":311,"context_line":"        \u0027status\u0027: \u0027ACTIVE\u0027,"},{"line_number":312,"context_line":"        \u0027mac_address\u0027: \u0027b5:bc:2e:e7:51:ee\u0027,"},{"line_number":313,"context_line":"        \u0027fixed_ips\u0027: ["},{"line_number":314,"context_line":"            {"},{"line_number":315,"context_line":"                \u0027ip_address\u0027: \u0027192.168.4.6\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ee9f8c27_1a5a6cb7","line":312,"range":{"start_line":312,"start_character":24,"end_line":312,"end_character":41},"in_reply_to":"d8d0c30b_a3cc400d","updated":"2021-04-01 16:23:31.000000000","message":"Done","commit_id":"638c2e72c3ddb7208dc97c7acfe020ba1adc507e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ac0df203cd75e47030879a39d6108dc0e6560241","unresolved":true,"context_lines":[{"line_number":312,"context_line":"        \u0027mac_address\u0027: \u0027b5:bc:2e:e7:51:ee\u0027,"},{"line_number":313,"context_line":"        \u0027fixed_ips\u0027: ["},{"line_number":314,"context_line":"            {"},{"line_number":315,"context_line":"                \u0027ip_address\u0027: \u0027192.168.4.6\u0027,"},{"line_number":316,"context_line":"                \u0027subnet_id\u0027: subnet_4[\u0027id\u0027]"},{"line_number":317,"context_line":"            }"},{"line_number":318,"context_line":"        ],"}],"source_content_type":"text/x-python","patch_set":4,"id":"d27366a2_3a5f2cce","line":315,"range":{"start_line":315,"start_character":31,"end_line":315,"end_character":42},"updated":"2021-03-31 23:57:30.000000000","message":"same for the ip","commit_id":"638c2e72c3ddb7208dc97c7acfe020ba1adc507e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f3bccaba66c830c0b41e49485509d8213a81b93c","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        \u0027mac_address\u0027: \u0027b5:bc:2e:e7:51:ee\u0027,"},{"line_number":313,"context_line":"        \u0027fixed_ips\u0027: ["},{"line_number":314,"context_line":"            {"},{"line_number":315,"context_line":"                \u0027ip_address\u0027: \u0027192.168.4.6\u0027,"},{"line_number":316,"context_line":"                \u0027subnet_id\u0027: subnet_4[\u0027id\u0027]"},{"line_number":317,"context_line":"            }"},{"line_number":318,"context_line":"        ],"}],"source_content_type":"text/x-python","patch_set":4,"id":"b3b4bae2_f5964efb","line":315,"range":{"start_line":315,"start_character":31,"end_line":315,"end_character":42},"in_reply_to":"d27366a2_3a5f2cce","updated":"2021-04-01 16:23:31.000000000","message":"Done","commit_id":"638c2e72c3ddb7208dc97c7acfe020ba1adc507e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ac0df203cd75e47030879a39d6108dc0e6560241","unresolved":true,"context_lines":[{"line_number":324,"context_line":"        \u0027id\u0027: \u0027fb2de1a1-d096-41be-9dbe-43066da64804\u0027,"},{"line_number":325,"context_line":"        \u0027network_id\u0027: network_4[\u0027id\u0027],"},{"line_number":326,"context_line":"        \u0027status\u0027: \u0027ACTIVE\u0027,"},{"line_number":327,"context_line":"        \u0027mac_address\u0027: \u0027b5:bc:2e:e7:51:ee\u0027,"},{"line_number":328,"context_line":"        \u0027fixed_ips\u0027: ["},{"line_number":329,"context_line":"            {"},{"line_number":330,"context_line":"                \u0027ip_address\u0027: \u0027192.168.4.6\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"af80d482_60595ccc","line":327,"range":{"start_line":327,"start_character":24,"end_line":327,"end_character":41},"updated":"2021-03-31 23:57:30.000000000","message":"same here","commit_id":"638c2e72c3ddb7208dc97c7acfe020ba1adc507e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f3bccaba66c830c0b41e49485509d8213a81b93c","unresolved":false,"context_lines":[{"line_number":324,"context_line":"        \u0027id\u0027: \u0027fb2de1a1-d096-41be-9dbe-43066da64804\u0027,"},{"line_number":325,"context_line":"        \u0027network_id\u0027: network_4[\u0027id\u0027],"},{"line_number":326,"context_line":"        \u0027status\u0027: \u0027ACTIVE\u0027,"},{"line_number":327,"context_line":"        \u0027mac_address\u0027: \u0027b5:bc:2e:e7:51:ee\u0027,"},{"line_number":328,"context_line":"        \u0027fixed_ips\u0027: ["},{"line_number":329,"context_line":"            {"},{"line_number":330,"context_line":"                \u0027ip_address\u0027: \u0027192.168.4.6\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf453cfe_371c7684","line":327,"range":{"start_line":327,"start_character":24,"end_line":327,"end_character":41},"in_reply_to":"af80d482_60595ccc","updated":"2021-04-01 16:23:31.000000000","message":"Done","commit_id":"638c2e72c3ddb7208dc97c7acfe020ba1adc507e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ac0df203cd75e47030879a39d6108dc0e6560241","unresolved":true,"context_lines":[{"line_number":327,"context_line":"        \u0027mac_address\u0027: \u0027b5:bc:2e:e7:51:ee\u0027,"},{"line_number":328,"context_line":"        \u0027fixed_ips\u0027: ["},{"line_number":329,"context_line":"            {"},{"line_number":330,"context_line":"                \u0027ip_address\u0027: \u0027192.168.4.6\u0027,"},{"line_number":331,"context_line":"                \u0027subnet_id\u0027: subnet_4[\u0027id\u0027]"},{"line_number":332,"context_line":"            }"},{"line_number":333,"context_line":"        ],"}],"source_content_type":"text/x-python","patch_set":4,"id":"fff727c2_17a33cb2","line":330,"range":{"start_line":330,"start_character":31,"end_line":330,"end_character":42},"updated":"2021-03-31 23:57:30.000000000","message":"and here","commit_id":"638c2e72c3ddb7208dc97c7acfe020ba1adc507e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f3bccaba66c830c0b41e49485509d8213a81b93c","unresolved":false,"context_lines":[{"line_number":327,"context_line":"        \u0027mac_address\u0027: \u0027b5:bc:2e:e7:51:ee\u0027,"},{"line_number":328,"context_line":"        \u0027fixed_ips\u0027: ["},{"line_number":329,"context_line":"            {"},{"line_number":330,"context_line":"                \u0027ip_address\u0027: \u0027192.168.4.6\u0027,"},{"line_number":331,"context_line":"                \u0027subnet_id\u0027: subnet_4[\u0027id\u0027]"},{"line_number":332,"context_line":"            }"},{"line_number":333,"context_line":"        ],"}],"source_content_type":"text/x-python","patch_set":4,"id":"fc92909e_06f7ad50","line":330,"range":{"start_line":330,"start_character":31,"end_line":330,"end_character":42},"in_reply_to":"fff727c2_17a33cb2","updated":"2021-04-01 16:23:31.000000000","message":"Done","commit_id":"638c2e72c3ddb7208dc97c7acfe020ba1adc507e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2a2926c0c7e1cf5c71bbe729b1bdbb6496e80576","unresolved":true,"context_lines":[{"line_number":334,"context_line":"        \u0027binding:vif_details\u0027: {\u0027vlan\u0027: 42},"},{"line_number":335,"context_line":"        \u0027binding:vif_type\u0027: \u0027hw_veb\u0027,"},{"line_number":336,"context_line":"        \u0027binding:vnic_type\u0027: \u0027direct\u0027,"},{"line_number":337,"context_line":"    }"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def __init__(self, test):"},{"line_number":340,"context_line":"        super(LibvirtNeutronFixture, self).__init__(test)"}],"source_content_type":"text/x-python","patch_set":5,"id":"e2e1673b_bcb2a95c","line":337,"updated":"2021-04-15 10:44:32.000000000","message":"I started requesting that we provide custom fixture subclasses for specific tests (or add some \u0027add_port\u0027 calls to \u0027setUp\u0027) since these fixtures have a tendency to explode in size otherwise due to all the test-specific networks/ports/subnets. This is already a subclass so that lessens the impact somewhat, but a couple of \u0027self.neutron.add_port\u0027 calls in the \u0027setUp\u0027 function of the offending test would achieve the same effect, right?","commit_id":"7be925fa574267901d2f95e31d791157908ef4f9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a319b45c39692998c6b2eb5a93bf6edc16ef1b14","unresolved":true,"context_lines":[{"line_number":334,"context_line":"        \u0027binding:vif_details\u0027: {\u0027vlan\u0027: 42},"},{"line_number":335,"context_line":"        \u0027binding:vif_type\u0027: \u0027hw_veb\u0027,"},{"line_number":336,"context_line":"        \u0027binding:vnic_type\u0027: \u0027direct\u0027,"},{"line_number":337,"context_line":"    }"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def __init__(self, test):"},{"line_number":340,"context_line":"        super(LibvirtNeutronFixture, self).__init__(test)"}],"source_content_type":"text/x-python","patch_set":5,"id":"4b16bac8_9532b1ca","line":337,"in_reply_to":"e2e1673b_bcb2a95c","updated":"2021-04-15 15:21:43.000000000","message":"There\u0027s no neutron.add_port() - these are just the JSON port definitions that we use when we call neutron.create_port() (neutron then keeps track of them in self._ports, but you already knew that). I could inline them in the test method itself, but that also uses network_4_port_1, which is used by other tests.","commit_id":"7be925fa574267901d2f95e31d791157908ef4f9"}],"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":"870219cb15ce22af379c3ae9673e2e96af093090","unresolved":true,"context_lines":[{"line_number":378,"context_line":""},{"line_number":379,"context_line":"        self._shelve_server(source_server)"},{"line_number":380,"context_line":"        self.api.put_service(self.computes[\u0027source\u0027].service_ref.uuid,"},{"line_number":381,"context_line":"                             {\u0027status\u0027: \u0027disabled\u0027})"},{"line_number":382,"context_line":"        # FIMXME(artom) This obviously should not raise a KeyError."},{"line_number":383,"context_line":"        ex \u003d self.assertRaises(client.OpenStackApiException,"},{"line_number":384,"context_line":"                               self._unshelve_server, source_server)"}],"source_content_type":"text/x-python","patch_set":1,"id":"cb1d48e9_608bf9a2","line":381,"updated":"2021-03-25 19:59:45.000000000","message":"why are you disabling the compute service?\nthat is not related to this bug.","commit_id":"326f1b771d1b1a512f6bebdbaf9350d670946a25"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"961ae55c2f1bae76c7f70dbdd1d23d068bd8e2a5","unresolved":true,"context_lines":[{"line_number":379,"context_line":"        self._shelve_server(source_server)"},{"line_number":380,"context_line":"        self.api.put_service(self.computes[\u0027source\u0027].service_ref.uuid,"},{"line_number":381,"context_line":"                             {\u0027status\u0027: \u0027disabled\u0027})"},{"line_number":382,"context_line":"        # FIMXME(artom) This obviously should not raise a KeyError."},{"line_number":383,"context_line":"        ex \u003d self.assertRaises(client.OpenStackApiException,"},{"line_number":384,"context_line":"                               self._unshelve_server, source_server)"},{"line_number":385,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"b5571eaa_c3036575","line":382,"updated":"2021-03-25 19:26:10.000000000","message":"What this raises is actually:\n\n    File \"/home/artom/src/nova/nova/compute/manager.py\", line 6579, in _unshelve_instance\n    self.driver.spawn(context, instance, image_meta,\n  File \"/home/artom/src/nova/nova/virt/libvirt/driver.py\", line 3877, in spawn\n    xml \u003d self._get_guest_xml(context, instance, network_info,\n  File \"/home/artom/src/nova/nova/virt/libvirt/driver.py\", line 6721, in _get_guest_xml\n    conf \u003d self._get_guest_config(instance, network_info, image_meta,\n  File \"/home/artom/src/nova/nova/virt/libvirt/driver.py\", line 6350, in _get_guest_config\n    config \u003d self.vif_driver.get_config(\n  File \"/home/artom/src/nova/nova/virt/libvirt/vif.py\", line 586, in get_config\n    return self.get_config_hw_veb(*args)\n  File \"/home/artom/src/nova/nova/virt/libvirt/vif.py\", line 362, in get_config_hw_veb\n    conf, net_type, profile[\u0027pci_slot\u0027],\n  KeyError: \u0027pci_slot\u0027","commit_id":"326f1b771d1b1a512f6bebdbaf9350d670946a25"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"895a1cbe8677f6b69f363ae627b978a6d9a22f74","unresolved":true,"context_lines":[{"line_number":379,"context_line":"        self._shelve_server(source_server)"},{"line_number":380,"context_line":"        self.api.put_service(self.computes[\u0027source\u0027].service_ref.uuid,"},{"line_number":381,"context_line":"                             {\u0027status\u0027: \u0027disabled\u0027})"},{"line_number":382,"context_line":"        # FIMXME(artom) This obviously should not raise a KeyError."},{"line_number":383,"context_line":"        ex \u003d self.assertRaises(client.OpenStackApiException,"},{"line_number":384,"context_line":"                               self._unshelve_server, source_server)"},{"line_number":385,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"f69fe5c6_c3924575","line":382,"in_reply_to":"b5571eaa_c3036575","updated":"2021-03-25 19:27:59.000000000","message":"this is not what happens in reality\nthis is a sideffect of our neutron fixutre.","commit_id":"326f1b771d1b1a512f6bebdbaf9350d670946a25"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fc82c99deb1c2ca3ae08abf896c272cab7aec776","unresolved":true,"context_lines":[{"line_number":379,"context_line":"        self._shelve_server(source_server)"},{"line_number":380,"context_line":"        self.api.put_service(self.computes[\u0027source\u0027].service_ref.uuid,"},{"line_number":381,"context_line":"                             {\u0027status\u0027: \u0027disabled\u0027})"},{"line_number":382,"context_line":"        # FIMXME(artom) This obviously should not raise a KeyError."},{"line_number":383,"context_line":"        ex \u003d self.assertRaises(client.OpenStackApiException,"},{"line_number":384,"context_line":"                               self._unshelve_server, source_server)"},{"line_number":385,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"8430d5de_3692a12c","line":382,"in_reply_to":"f69fe5c6_c3924575","updated":"2021-03-25 19:28:57.000000000","message":"the issue with unshelve in not that the pci_slot is unest in the port porfile.\nits that its not updated withthe valdue that was claimed in the pci tracket before the xml is generated.","commit_id":"326f1b771d1b1a512f6bebdbaf9350d670946a25"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ac0df203cd75e47030879a39d6108dc0e6560241","unresolved":true,"context_lines":[{"line_number":363,"context_line":"        self.start_compute("},{"line_number":364,"context_line":"            hostname\u003d\u0027source\u0027,"},{"line_number":365,"context_line":"            pci_info\u003dfakelibvirt.HostPCIDevicesInfo("},{"line_number":366,"context_line":"                num_pfs\u003d1, num_vfs\u003d1, numa_node\u003d0))"},{"line_number":367,"context_line":"        self.start_compute("},{"line_number":368,"context_line":"            hostname\u003d\u0027dest\u0027,"},{"line_number":369,"context_line":"            pci_info\u003dfakelibvirt.HostPCIDevicesInfo("}],"source_content_type":"text/x-python","patch_set":4,"id":"73931665_a5f87d5d","line":366,"range":{"start_line":366,"start_character":37,"end_line":366,"end_character":49},"updated":"2021-03-31 23:57:30.000000000","message":"nit: technically i dont think this is needed you vm does not have a numa toplogy and\nit wont change the pci address  assinged in the fixture.","commit_id":"638c2e72c3ddb7208dc97c7acfe020ba1adc507e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f3bccaba66c830c0b41e49485509d8213a81b93c","unresolved":false,"context_lines":[{"line_number":363,"context_line":"        self.start_compute("},{"line_number":364,"context_line":"            hostname\u003d\u0027source\u0027,"},{"line_number":365,"context_line":"            pci_info\u003dfakelibvirt.HostPCIDevicesInfo("},{"line_number":366,"context_line":"                num_pfs\u003d1, num_vfs\u003d1, numa_node\u003d0))"},{"line_number":367,"context_line":"        self.start_compute("},{"line_number":368,"context_line":"            hostname\u003d\u0027dest\u0027,"},{"line_number":369,"context_line":"            pci_info\u003dfakelibvirt.HostPCIDevicesInfo("}],"source_content_type":"text/x-python","patch_set":4,"id":"417df5f8_1bc3ad76","line":366,"range":{"start_line":366,"start_character":37,"end_line":366,"end_character":49},"in_reply_to":"73931665_a5f87d5d","updated":"2021-04-01 16:23:31.000000000","message":"Done","commit_id":"638c2e72c3ddb7208dc97c7acfe020ba1adc507e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ac0df203cd75e47030879a39d6108dc0e6560241","unresolved":true,"context_lines":[{"line_number":452,"context_line":"            self._shelve_server(source_server)"},{"line_number":453,"context_line":"            # Disable the source compute, to force unshelving on the dest."},{"line_number":454,"context_line":"            self.api.put_service(self.computes[\u0027source\u0027].service_ref.uuid,"},{"line_number":455,"context_line":"                                 {\u0027status\u0027: \u0027disabled\u0027})"},{"line_number":456,"context_line":"            self._unshelve_server(source_server)"},{"line_number":457,"context_line":"        self._test_neutron_pci_slot_conflict(move_operation, expect_fail\u003dTrue)"},{"line_number":458,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"a8f40e6a_16a22004","line":455,"updated":"2021-03-31 23:57:30.000000000","message":"ya ok disableing is need since we dont support requesting a host on unshelve.\ncustomer have asked for that so we might want to consider that at some point but cool\nyou have noted why you are doing this in a comment too since this is a littel unusual\nbut i dont see a better way to do this.","commit_id":"638c2e72c3ddb7208dc97c7acfe020ba1adc507e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ac0df203cd75e47030879a39d6108dc0e6560241","unresolved":true,"context_lines":[{"line_number":463,"context_line":"            with mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver\u0027"},{"line_number":464,"context_line":"                            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027):"},{"line_number":465,"context_line":"                self._migrate_server(source_server)"},{"line_number":466,"context_line":"        self._test_neutron_pci_slot_conflict(move_operation)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    def test_evacuate_with_neutron_pci_slot_conflict(self):"},{"line_number":469,"context_line":"        def move_operation(source_server):"}],"source_content_type":"text/x-python","patch_set":4,"id":"60dc7820_1e49e8e5","line":466,"updated":"2021-03-31 23:57:30.000000000","message":"it would be nice if you also did\nself._confirm_resize(source_server) before you run the test since its technially still in resize verify at thsi point.\n\nthat it should have done the claims extra at this point so the test is still valid.","commit_id":"638c2e72c3ddb7208dc97c7acfe020ba1adc507e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f3bccaba66c830c0b41e49485509d8213a81b93c","unresolved":false,"context_lines":[{"line_number":463,"context_line":"            with mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver\u0027"},{"line_number":464,"context_line":"                            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027):"},{"line_number":465,"context_line":"                self._migrate_server(source_server)"},{"line_number":466,"context_line":"        self._test_neutron_pci_slot_conflict(move_operation)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    def test_evacuate_with_neutron_pci_slot_conflict(self):"},{"line_number":469,"context_line":"        def move_operation(source_server):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fc84520_a13576e0","line":466,"in_reply_to":"60dc7820_1e49e8e5","updated":"2021-04-01 16:23:31.000000000","message":"Done","commit_id":"638c2e72c3ddb7208dc97c7acfe020ba1adc507e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a319b45c39692998c6b2eb5a93bf6edc16ef1b14","unresolved":true,"context_lines":[{"line_number":359,"context_line":"        self.assertIn(\u0027NoValidHost\u0027, str(ex))"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    def _test_neutron_pci_slot_conflict(self, move_operation,"},{"line_number":362,"context_line":"                                        expect_fail\u003dFalse):"},{"line_number":363,"context_line":"        self.start_compute("},{"line_number":364,"context_line":"            hostname\u003d\u0027source\u0027,"},{"line_number":365,"context_line":"            pci_info\u003dfakelibvirt.HostPCIDevicesInfo("}],"source_content_type":"text/x-python","patch_set":5,"id":"3faadc08_6eb04fc0","line":362,"updated":"2021-04-15 15:21:43.000000000","message":"Inline the port JSON here is what I meant.","commit_id":"7be925fa574267901d2f95e31d791157908ef4f9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2a2926c0c7e1cf5c71bbe729b1bdbb6496e80576","unresolved":true,"context_lines":[{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    def _test_neutron_pci_slot_conflict(self, move_operation,"},{"line_number":362,"context_line":"                                        expect_fail\u003dFalse):"},{"line_number":363,"context_line":"        self.start_compute("},{"line_number":364,"context_line":"            hostname\u003d\u0027source\u0027,"},{"line_number":365,"context_line":"            pci_info\u003dfakelibvirt.HostPCIDevicesInfo("},{"line_number":366,"context_line":"                num_pfs\u003d1, num_vfs\u003d1))"}],"source_content_type":"text/x-python","patch_set":5,"id":"3e998ea0_929931ce","line":363,"updated":"2021-04-15 10:44:32.000000000","message":"nit: Some comments about why you\u0027re creating computes with varying numbers of PFs/VFs would be helpful. Maybe it\u0027s tough to summarize though.","commit_id":"7be925fa574267901d2f95e31d791157908ef4f9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a319b45c39692998c6b2eb5a93bf6edc16ef1b14","unresolved":false,"context_lines":[{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    def _test_neutron_pci_slot_conflict(self, move_operation,"},{"line_number":362,"context_line":"                                        expect_fail\u003dFalse):"},{"line_number":363,"context_line":"        self.start_compute("},{"line_number":364,"context_line":"            hostname\u003d\u0027source\u0027,"},{"line_number":365,"context_line":"            pci_info\u003dfakelibvirt.HostPCIDevicesInfo("},{"line_number":366,"context_line":"                num_pfs\u003d1, num_vfs\u003d1))"}],"source_content_type":"text/x-python","patch_set":5,"id":"8a9932a2_e7246ee6","line":363,"in_reply_to":"3e998ea0_929931ce","updated":"2021-04-15 15:21:43.000000000","message":"Done","commit_id":"7be925fa574267901d2f95e31d791157908ef4f9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2a2926c0c7e1cf5c71bbe729b1bdbb6496e80576","unresolved":true,"context_lines":[{"line_number":391,"context_line":"        # Find the server on the dest compute that\u0027s using the same pci_slot as"},{"line_number":392,"context_line":"        # the server on the source compute, and delete the other one to make"},{"line_number":393,"context_line":"        # room."},{"line_number":394,"context_line":"        source_pci_slot \u003d source_port[\u0027port\u0027][\u0027binding:profile\u0027][\u0027pci_slot\u0027]"},{"line_number":395,"context_line":"        if (dest_port1[\u0027port\u0027][\u0027binding:profile\u0027][\u0027pci_slot\u0027] \u003d\u003d"},{"line_number":396,"context_line":"                source_pci_slot"},{"line_number":397,"context_line":"        ):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7ee6bf3b_e724880a","line":394,"updated":"2021-04-15 10:44:32.000000000","message":"nit: can you add\n\n  dest_pci_slot \u003d ...\n\ntoo, to avoid the ugly wrapping below","commit_id":"7be925fa574267901d2f95e31d791157908ef4f9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a319b45c39692998c6b2eb5a93bf6edc16ef1b14","unresolved":false,"context_lines":[{"line_number":391,"context_line":"        # Find the server on the dest compute that\u0027s using the same pci_slot as"},{"line_number":392,"context_line":"        # the server on the source compute, and delete the other one to make"},{"line_number":393,"context_line":"        # room."},{"line_number":394,"context_line":"        source_pci_slot \u003d source_port[\u0027port\u0027][\u0027binding:profile\u0027][\u0027pci_slot\u0027]"},{"line_number":395,"context_line":"        if (dest_port1[\u0027port\u0027][\u0027binding:profile\u0027][\u0027pci_slot\u0027] \u003d\u003d"},{"line_number":396,"context_line":"                source_pci_slot"},{"line_number":397,"context_line":"        ):"}],"source_content_type":"text/x-python","patch_set":5,"id":"42dc7d8b_51b7f3a3","line":394,"in_reply_to":"7ee6bf3b_e724880a","updated":"2021-04-15 15:21:43.000000000","message":"Done","commit_id":"7be925fa574267901d2f95e31d791157908ef4f9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2a2926c0c7e1cf5c71bbe729b1bdbb6496e80576","unresolved":true,"context_lines":[{"line_number":404,"context_line":"        # Before moving, explictly assert that the servers on source and dest"},{"line_number":405,"context_line":"        # have the same pci_slot in their port\u0027s binding profile"},{"line_number":406,"context_line":"        self.assertEqual(source_port[\u0027port\u0027][\u0027binding:profile\u0027][\u0027pci_slot\u0027],"},{"line_number":407,"context_line":"                        same_slot_port[\u0027port\u0027][\u0027binding:profile\u0027][\u0027pci_slot\u0027])"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        # Before moving, assert that the servers on source and dest have the"},{"line_number":410,"context_line":"        # same PCI source address in their XML for their SRIOV nic."}],"source_content_type":"text/x-python","patch_set":5,"id":"fc06c5c1_274d33ab","line":407,"updated":"2021-04-15 10:44:32.000000000","message":"nit:\n\n  for port in (dest_port1, dest_port2):\n      if port[\u0027port\u0027][\u0027binding:profile\u0027][\u0027pci_slot\u0027] \u003d\u003d source_pci_slot:\n          same_slot_port \u003d port\n          break\n  else:\n      raise Exception(\u0027Failed to find matching port\u0027)\n\n?","commit_id":"7be925fa574267901d2f95e31d791157908ef4f9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a319b45c39692998c6b2eb5a93bf6edc16ef1b14","unresolved":true,"context_lines":[{"line_number":404,"context_line":"        # Before moving, explictly assert that the servers on source and dest"},{"line_number":405,"context_line":"        # have the same pci_slot in their port\u0027s binding profile"},{"line_number":406,"context_line":"        self.assertEqual(source_port[\u0027port\u0027][\u0027binding:profile\u0027][\u0027pci_slot\u0027],"},{"line_number":407,"context_line":"                        same_slot_port[\u0027port\u0027][\u0027binding:profile\u0027][\u0027pci_slot\u0027])"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        # Before moving, assert that the servers on source and dest have the"},{"line_number":410,"context_line":"        # same PCI source address in their XML for their SRIOV nic."}],"source_content_type":"text/x-python","patch_set":5,"id":"2d3f4a89_4a4c5339","line":407,"in_reply_to":"fc06c5c1_274d33ab","updated":"2021-04-15 15:21:43.000000000","message":"This is meant to replace L394-L407? But we also have to delete the second server (the one using the different pci_slot) to make room for the migration...","commit_id":"7be925fa574267901d2f95e31d791157908ef4f9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2a2926c0c7e1cf5c71bbe729b1bdbb6496e80576","unresolved":true,"context_lines":[{"line_number":447,"context_line":"            self.assertNotEqual(vms[0][\u0027devices\u0027][\u0027nics\u0027][0][\u0027source\u0027],"},{"line_number":448,"context_line":"                                vms[1][\u0027devices\u0027][\u0027nics\u0027][0][\u0027source\u0027])"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"    def test_unshelve_with_neutron_pci_slot_conflict(self):"},{"line_number":451,"context_line":"        def move_operation(source_server):"},{"line_number":452,"context_line":"            self._shelve_server(source_server)"},{"line_number":453,"context_line":"            # Disable the source compute, to force unshelving on the dest."}],"source_content_type":"text/x-python","patch_set":5,"id":"3e07702a_a031e1d3","line":450,"range":{"start_line":450,"start_character":8,"end_line":450,"end_character":52},"updated":"2021-04-15 10:44:32.000000000","message":"Maybe\n\n  test_unshelve_server_with_neutron\n\ninstead? Ditto below. What we\u0027re testing is behavior of the operation with a neutron-provision SR-IOV interface. Due to a bug, it\u0027s hitting a PCI slot conflict, however, if that bug wasn\u0027t there you obviously wouldn\u0027t see this.","commit_id":"7be925fa574267901d2f95e31d791157908ef4f9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a319b45c39692998c6b2eb5a93bf6edc16ef1b14","unresolved":false,"context_lines":[{"line_number":447,"context_line":"            self.assertNotEqual(vms[0][\u0027devices\u0027][\u0027nics\u0027][0][\u0027source\u0027],"},{"line_number":448,"context_line":"                                vms[1][\u0027devices\u0027][\u0027nics\u0027][0][\u0027source\u0027])"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"    def test_unshelve_with_neutron_pci_slot_conflict(self):"},{"line_number":451,"context_line":"        def move_operation(source_server):"},{"line_number":452,"context_line":"            self._shelve_server(source_server)"},{"line_number":453,"context_line":"            # Disable the source compute, to force unshelving on the dest."}],"source_content_type":"text/x-python","patch_set":5,"id":"ec5e7e5d_97af9636","line":450,"range":{"start_line":450,"start_character":8,"end_line":450,"end_character":52},"in_reply_to":"3e07702a_a031e1d3","updated":"2021-04-15 15:21:43.000000000","message":"Done","commit_id":"7be925fa574267901d2f95e31d791157908ef4f9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2a2926c0c7e1cf5c71bbe729b1bdbb6496e80576","unresolved":true,"context_lines":[{"line_number":464,"context_line":"                            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027):"},{"line_number":465,"context_line":"                self._migrate_server(source_server)"},{"line_number":466,"context_line":"            self._confirm_resize(source_server)"},{"line_number":467,"context_line":"        self._test_neutron_pci_slot_conflict(move_operation)"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    def test_evacuate_with_neutron_pci_slot_conflict(self):"},{"line_number":470,"context_line":"        def move_operation(source_server):"}],"source_content_type":"text/x-python","patch_set":5,"id":"f80ab873_1e5b8047","line":467,"updated":"2021-04-15 10:44:32.000000000","message":"Should you add a FIXME here, since you intend to fix this behavior I imagine?","commit_id":"7be925fa574267901d2f95e31d791157908ef4f9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a319b45c39692998c6b2eb5a93bf6edc16ef1b14","unresolved":true,"context_lines":[{"line_number":464,"context_line":"                            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027):"},{"line_number":465,"context_line":"                self._migrate_server(source_server)"},{"line_number":466,"context_line":"            self._confirm_resize(source_server)"},{"line_number":467,"context_line":"        self._test_neutron_pci_slot_conflict(move_operation)"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    def test_evacuate_with_neutron_pci_slot_conflict(self):"},{"line_number":470,"context_line":"        def move_operation(source_server):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3c572b05_b5c001ed","line":467,"in_reply_to":"f80ab873_1e5b8047","updated":"2021-04-15 15:21:43.000000000","message":"The FIXME would be on L457, but yeah.","commit_id":"7be925fa574267901d2f95e31d791157908ef4f9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2a2926c0c7e1cf5c71bbe729b1bdbb6496e80576","unresolved":true,"context_lines":[{"line_number":473,"context_line":"                                 {\u0027forced_down\u0027: True})"},{"line_number":474,"context_line":"            self.computes[\u0027source\u0027].stop()"},{"line_number":475,"context_line":"            self._evacuate_server(source_server)"},{"line_number":476,"context_line":"        self._test_neutron_pci_slot_conflict(move_operation)"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"    def test_live_migrate_server_with_neutron(self):"},{"line_number":479,"context_line":"        \"\"\"Live migrate an instance using a neutron-provisioned SR-IOV VIF."}],"source_content_type":"text/x-python","patch_set":5,"id":"8ed38f35_5d489613","line":476,"updated":"2021-04-15 10:44:32.000000000","message":"Ditto","commit_id":"7be925fa574267901d2f95e31d791157908ef4f9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a319b45c39692998c6b2eb5a93bf6edc16ef1b14","unresolved":false,"context_lines":[{"line_number":473,"context_line":"                                 {\u0027forced_down\u0027: True})"},{"line_number":474,"context_line":"            self.computes[\u0027source\u0027].stop()"},{"line_number":475,"context_line":"            self._evacuate_server(source_server)"},{"line_number":476,"context_line":"        self._test_neutron_pci_slot_conflict(move_operation)"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"    def test_live_migrate_server_with_neutron(self):"},{"line_number":479,"context_line":"        \"\"\"Live migrate an instance using a neutron-provisioned SR-IOV VIF."}],"source_content_type":"text/x-python","patch_set":5,"id":"b06d7ba1_a8d0910d","line":476,"in_reply_to":"8ed38f35_5d489613","updated":"2021-04-15 15:21:43.000000000","message":"Done","commit_id":"7be925fa574267901d2f95e31d791157908ef4f9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"791a2ee96e29fdf64abd8b4186a85cb7c2ad44a9","unresolved":true,"context_lines":[{"line_number":362,"context_line":"                                          expect_fail\u003dFalse):"},{"line_number":363,"context_line":"        # The purpose here is to force an observable PCI slot update when"},{"line_number":364,"context_line":"        # moving from source to dest. This is accomplished by having a single"},{"line_number":365,"context_line":"        # PCI device on the source, 2 PCI devices on the test, and relying on"},{"line_number":366,"context_line":"        # the fact that our fake HostPCIDevicesInfo creates predictable PCI"},{"line_number":367,"context_line":"        # addresses. The PCI device on source and the first PCI device on dest"},{"line_number":368,"context_line":"        # will have identical PCI addresses. By sticking a \"placeholder\""}],"source_content_type":"text/x-python","patch_set":6,"id":"bf176466_71c3a73a","line":365,"range":{"start_line":365,"start_character":57,"end_line":365,"end_character":61},"updated":"2021-04-30 15:13:53.000000000","message":"dest?","commit_id":"bea06123dbba82851fd17a41cc93ab4a519f8bfe"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8702b60b8b31a5e9ab7deffc30c1fd0d18de4585","unresolved":true,"context_lines":[{"line_number":466,"context_line":"            self.api.put_service(self.computes[\u0027source\u0027].service_ref.uuid,"},{"line_number":467,"context_line":"                                 {\u0027status\u0027: \u0027disabled\u0027})"},{"line_number":468,"context_line":"            self._unshelve_server(source_server)"},{"line_number":469,"context_line":"        # FIXME(artom) Bug 1851545 means we explain failure here: the pci_slot"},{"line_number":470,"context_line":"        # and XML will not get updated."},{"line_number":471,"context_line":"        self._test_move_operation_with_neutron(move_operation,"},{"line_number":472,"context_line":"                                               expect_fail\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"d49373b0_d1c63f96","line":469,"range":{"start_line":469,"start_character":44,"end_line":469,"end_character":51},"updated":"2021-04-27 16:51:28.000000000","message":"expect?","commit_id":"bea06123dbba82851fd17a41cc93ab4a519f8bfe"}]}
