diff --git a/nova/tests/unit/virt/libvirt/test_config.py b/nova/tests/unit/virt/libvirt/test_config.py index 7552266b8c79..01f1a0f3186b 100644 --- a/nova/tests/unit/virt/libvirt/test_config.py +++ b/nova/tests/unit/virt/libvirt/test_config.py @@ -1039,6 +1039,25 @@ class LibvirtConfigGuestDiskTest(LibvirtConfigBaseTest): """ self.assertXmlEqual(xml, obj.to_xml()) + def test_config_disk_device_address_drive_added(self): + obj = config.LibvirtConfigGuestDisk() + obj.source_type = "file" + obj.source_path = "/tmp/hello" + obj.target_dev = "/dev/hda" + obj.target_bus = "scsi" + obj.device_addr = config.LibvirtConfigGuestDeviceAddressDrive() + obj.device_addr.controller = 1 + obj.device_addr.bus = 2 + obj.device_addr.target = 3 + obj.device_addr.unit = 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 3656c31ea0d6..f28bfbf0792f 100644 --- a/nova/virt/libvirt/config.py +++ b/nova/virt/libvirt/config.py @@ -824,6 +824,9 @@ class LibvirtConfigGuestDisk(LibvirtConfigGuestDevice): if self.boot_order: dev.append(etree.Element("boot", order=self.boot_order)) + if self.device_addr: + dev.append(self.device_addr.format_dom()) + return dev def parse_dom(self, xmldoc):