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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@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


Got it. Thanks for comments. :)
Li


[Index of Archives]     [Linux Virtualization]     [KVM Development]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux