This patch adds spapr-vscsi disk type on disk GUI page. It provides an options to user to select the scsi disk which is based on spapr-vio address type for pseries guest. Signed-off-by: Li Zhang <zhlcindy@xxxxxxxxxxxxxxxxxx> --- src/virtManager/details.py | 23 ++++++++++++++++++++--- src/virtManager/domain.py | 6 ++++-- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/virtManager/details.py b/src/virtManager/details.py index 55ea957..ad9bead 100644 --- a/src/virtManager/details.py +++ b/src/virtManager/details.py @@ -2205,7 +2205,10 @@ class vmmDetails(vmmGObjectUI): # Do this last since it can change uniqueness info of the dev if self.editted(EDIT_DISK_BUS): bus = self.get_combo_label_value("disk-bus") - add_define(self.vm.define_disk_bus, dev_id_info, bus) + if bus == "spapr-vscsi": + add_define(self.vm.define_disk_bus, dev_id_info, "scsi", "spapr-vio") + else: + add_define(self.vm.define_disk_bus, dev_id_info, bus, None) return self._change_config_helper(df, da, hf, ha) @@ -2791,6 +2794,7 @@ class vmmDetails(vmmGObjectUI): ro = disk.read_only share = disk.shareable bus = disk.bus + addr = disk.address.type idx = disk.disk_bus_index cache = disk.driver_cache io = disk.driver_io @@ -2814,7 +2818,10 @@ class vmmDetails(vmmGObjectUI): is_cdrom = (devtype == virtinst.VirtualDisk.DEVICE_CDROM) is_floppy = (devtype == virtinst.VirtualDisk.DEVICE_FLOPPY) - pretty_name = prettyify_disk(devtype, bus, idx) + if addr == "spapr-vio": + pretty_name = "vSCSI %s" % idx + else: + pretty_name = prettyify_disk(devtype, bus, idx) self.widget("disk-source-path").set_text(path or "-") self.widget("disk-target-type").set_text(pretty_name) @@ -2832,6 +2839,10 @@ class vmmDetails(vmmGObjectUI): no_default = not self.is_customize_dialog self.populate_disk_bus_combo(devtype, no_default) + + if addr == "spapr-vio": + bus = "spapr-vscsi" + self.set_combo_label("disk-bus", bus) self.widget("disk-serial").set_text(serial or "") @@ -3279,6 +3290,9 @@ class vmmDetails(vmmGObjectUI): if self.vm.get_hv_type() in ["kvm", "test"]: buses.append(["sata", "SATA"]) buses.append(["virtio", "Virtio"]) + if (self.vm.get_hv_type() == "kvm" and + self.vm.get_machtype() == "pseries"): + buses.append(["spapr-vscsi", "sPAPR-vSCSI"]) if self.vm.conn.is_xen() or self.vm.get_hv_type() == "test": buses.append(["xen", "Xen"]) @@ -3364,7 +3378,10 @@ class vmmDetails(vmmGObjectUI): elif devtype == "floppy": icon = "media-floppy" - label = prettyify_disk(devtype, bus, idx) + if disk.address.type == "spapr-vio": + label = "vSCSI %s" % idx + else: + label = prettyify_disk(devtype, bus, idx) update_hwlist(HW_LIST_TYPE_DISK, disk, label, icon) diff --git a/src/virtManager/domain.py b/src/virtManager/domain.py index 7f382e0..0116421 100644 --- a/src/virtManager/domain.py +++ b/src/virtManager/domain.py @@ -577,16 +577,18 @@ class vmmDomain(vmmLibvirtObject): def change(editdev): editdev.driver_type = new_driver_type or None return self._redefine_device(change, devobj) - def define_disk_bus(self, devobj, newval): + def define_disk_bus(self, devobj, newval, addr): def change(editdev): oldprefix = editdev.get_target_prefix()[0] oldbus = editdev.bus - editdev.bus = newval if oldbus == newval: return editdev.address.clear() + editdev.bus = newval + if addr is not None: + editdev.set_address(addr) if oldprefix == editdev.get_target_prefix()[0]: return -- 1.7.5.4