On 02/28/2012 02:23 AM, Li Zhang wrote: > 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) > Let's just have one call to add_define and conditonalize the data addr = None if bus == "spapr-vscsi": bus = "scsi" addr = "spapr-vio" add_define(func, dev_id_info, bus, addr) > 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) > Please move this into prettify_disk as previously requested. > 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 > As mentioned before we want to keep this part here... > if oldbus == newval: > return > > editdev.address.clear() > + editdev.bus = newval > + if addr is not None: > + editdev.set_address(addr) > You can probably just move this change about the 'if' conditional. - Cole