mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-02-25 18:55:27 -06:00
virt-manager: Add spapr-vscsi disk type for pseries guest.
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@linux.vnet.ibm.com>
This commit is contained in:
@@ -157,6 +157,9 @@ def prettyify_disk_bus(bus):
|
||||
if bus == "virtio":
|
||||
return "VirtIO"
|
||||
|
||||
if bus == "spapr-vscsi":
|
||||
return "vSCSI"
|
||||
|
||||
return bus
|
||||
|
||||
def prettyify_disk(devtype, bus, idx):
|
||||
@@ -2210,7 +2213,11 @@ 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)
|
||||
addr = None
|
||||
if bus == "spapr-vscsi":
|
||||
bus = "scsi"
|
||||
addr = "spapr-vio"
|
||||
add_define(self.vm.define_disk_bus, dev_id_info, bus, addr)
|
||||
|
||||
return self._change_config_helper(df, da, hf, ha)
|
||||
|
||||
@@ -2796,6 +2803,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
|
||||
@@ -2819,6 +2827,9 @@ class vmmDetails(vmmGObjectUI):
|
||||
is_cdrom = (devtype == virtinst.VirtualDisk.DEVICE_CDROM)
|
||||
is_floppy = (devtype == virtinst.VirtualDisk.DEVICE_FLOPPY)
|
||||
|
||||
if addr == "spapr-vio":
|
||||
bus = "spapr-vscsi"
|
||||
|
||||
pretty_name = prettyify_disk(devtype, bus, idx)
|
||||
|
||||
self.widget("disk-source-path").set_text(path or "-")
|
||||
@@ -3284,6 +3295,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"])
|
||||
|
||||
@@ -3369,6 +3383,9 @@ class vmmDetails(vmmGObjectUI):
|
||||
elif devtype == "floppy":
|
||||
icon = "media-floppy"
|
||||
|
||||
if disk.address.type == "spapr-vio":
|
||||
bus = "spapr-vscsi"
|
||||
|
||||
label = prettyify_disk(devtype, bus, idx)
|
||||
|
||||
update_hwlist(HW_LIST_TYPE_DISK, disk, label, icon)
|
||||
|
||||
@@ -577,7 +577,7 @@ 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
|
||||
@@ -587,6 +587,7 @@ class vmmDomain(vmmLibvirtObject):
|
||||
return
|
||||
|
||||
editdev.address.clear()
|
||||
editdev.set_address(addr)
|
||||
|
||||
if oldprefix == editdev.get_target_prefix()[0]:
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user