[virt-tools-list] [virt-manager PATCH] virtManager/addhardware: get supported disk bus types from libvirt
Pavel Hrdina
phrdina at redhat.com
Fri Jan 20 15:21:00 UTC 2017
Libvirt provides domain capabilities where supported disk bus types are
listed. Virt-manager should try to get those bus types. The old code
remains as fallback if domain capabilities doesn't contain the disk
bus types.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1387218
Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
---
virtManager/addhardware.py | 49 +++++++++++++++++++++++++++++-----------------
1 file changed, 31 insertions(+), 18 deletions(-)
diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py
index aab90957..e63ad3d0 100644
--- a/virtManager/addhardware.py
+++ b/virtManager/addhardware.py
@@ -690,25 +690,38 @@ class vmmAddHardware(vmmGObjectUI):
@staticmethod
def populate_disk_bus_combo(vm, devtype, model):
+ # try to get supported disk bus types from domain capabilities
+ domcaps = vm.get_domain_capabilities()
+ disk_bus_types = None
+ if "bus" in domcaps.devices.disk.enum_names():
+ disk_bus_types = domcaps.devices.disk.get_enum("bus").get_values()
+
+ # if there are no disk bus types in domain capabilities fallback to
+ # old code
+ if not disk_bus_types:
+ disk_bus_types = []
+ if vm.is_hvm():
+ if not vm.get_xmlobj().os.is_q35():
+ disk_bus_types.append("ide")
+ disk_bus_types.append("sata")
+ disk_bus_types.append("fdc")
+
+ if not vm.stable_defaults():
+ disk_bus_types.append("scsi")
+ disk_bus_types.append("usb")
+
+ if vm.get_hv_type() in ["qemu", "kvm", "test"]:
+ disk_bus_types.append("sd")
+ disk_bus_types.append("virtio")
+ if "scsi" not in disk_bus_types:
+ disk_bus_types.append("scsi")
+
+ if vm.conn.is_xen() or vm.conn.is_test_conn():
+ disk_bus_types.append("xen")
+
rows = []
- if vm.is_hvm():
- if not vm.get_xmlobj().os.is_q35():
- rows.append(["ide", "IDE"])
- rows.append(["sata", "SATA"])
- rows.append(["fdc", _("Floppy")])
-
- if not vm.stable_defaults():
- rows.append(["scsi", "SCSI"])
- rows.append(["usb", "USB"])
-
- if vm.get_hv_type() in ["qemu", "kvm", "test"]:
- rows.append(["sd", "SD"])
- rows.append(["virtio", "VirtIO"])
- if not rows.count(["scsi", "SCSI"]):
- rows.append(["scsi", "SCSI"])
-
- if vm.conn.is_xen() or vm.conn.is_test_conn():
- rows.append(["xen", "Xen"])
+ for bus in disk_bus_types:
+ rows.append([bus, virtinst.VirtualDisk.pretty_disk_bus(bus)])
model.clear()
--
2.11.0
More information about the virt-tools-list
mailing list