From 34a0ade4cc15f0bb2303c461b99bd481ed907a0f Mon Sep 17 00:00:00 2001 From: Sahid Orentino Ferdjaoui Date: Tue, 25 Apr 2017 05:55:18 -0400 Subject: [PATCH] libvirt: set full description of the controller used by disk Adds to LibvirtConfigGuestDisk the ability to handle object to provide full description of the controller which should be used. Closes-Bug: #1686116 Change-Id: Id796d9129ff850abd209f4e9e4e54ea77c477acf (cherry picked from commit 74ece03d70fac926a5e25eb0663da098e44cbaa2) --- nova/tests/unit/virt/libvirt/test_config.py | 19 +++++++++++++++++++ nova/virt/libvirt/config.py | 3 +++ 2 files changed, 22 insertions(+) diff --git a/nova/tests/unit/virt/libvirt/test_config.py b/nova/tests/unit/virt/libvirt/test_config.py index 7aad1c9ea154..50816938ce3e 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 2547607bdfca..5239e4c4b34e 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):