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):