[virt-tools-list] [PATCHv3]virt-manager: Add spapr-vscsi disk type for pseries guest.

Li Zhang zhlcindy at linux.vnet.ibm.com
Wed Feb 29 08:49:52 UTC 2012


On 02/29/2012 02:16 AM, Cole Robinson wrote:
> 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 at linux.vnet.ibm.com>
>> ---
>>   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
>

Got it. Thanks for comments. :)
Li




More information about the virt-tools-list mailing list