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

Cole Robinson crobinso at redhat.com
Tue Feb 28 18:16:46 UTC 2012


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




More information about the virt-tools-list mailing list