diff --git a/nova/tests/unit/virt/libvirt/test_config.py b/nova/tests/unit/virt/libvirt/test_config.py index 50816938ce3e..bdfcfc7bbac5 100644 --- a/nova/tests/unit/virt/libvirt/test_config.py +++ b/nova/tests/unit/virt/libvirt/test_config.py @@ -1058,6 +1058,42 @@ class LibvirtConfigGuestDiskTest(LibvirtConfigBaseTest):
""", obj.to_xml()) + def test_config_disk_device_address_pci(self): + obj = config.LibvirtConfigGuestDeviceAddressPCI() + obj.domain = 1 + obj.bus = 2 + obj.slot = 3 + obj.function = 4 + + xml = """ +
+ """ + self.assertXmlEqual(xml, obj.to_xml()) + + def test_config_disk_device_address_pci_added(self): + obj = config.LibvirtConfigGuestDisk() + obj.source_type = "network" + obj.source_name = "volumes/volume-0" + obj.source_protocol = "rbd" + obj.source_hosts = ["192.168.1.1"] + obj.source_ports = ["1234"] + obj.target_dev = "hdb" + obj.target_bus = "virtio" + obj.device_addr = config.LibvirtConfigGuestDeviceAddressPCI() + obj.device_addr.domain = 1 + obj.device_addr.bus = 2 + obj.device_addr.slot = 3 + obj.device_addr.function = 4 + + self.assertXmlEqual(""" + + + + + +
+ """, obj.to_xml()) + def test_config_disk_device_address_type_virtio_mmio(self): xml = """ diff --git a/nova/virt/libvirt/config.py b/nova/virt/libvirt/config.py index 5239e4c4b34e..997efd79136a 100644 --- a/nova/virt/libvirt/config.py +++ b/nova/virt/libvirt/config.py @@ -1201,6 +1201,20 @@ class LibvirtConfigGuestDeviceAddressPCI(LibvirtConfigGuestDeviceAddress): self.slot = None self.function = None + def format_dom(self): + xml = super(LibvirtConfigGuestDeviceAddressPCI, self).format_dom() + + if self.domain is not None: + xml.set("domain", str(self.domain)) + if self.bus is not None: + xml.set("bus", str(self.bus)) + if self.slot is not None: + xml.set("slot", str(self.slot)) + if self.function is not None: + xml.set("function", str(self.function)) + + return xml + def parse_dom(self, xmldoc): self.domain = xmldoc.get('domain') self.bus = xmldoc.get('bus')