Dealing with iSCSI pools in terms of "unit:0:0:1"-type volume names is
fraught with the threat of catastrophic error if a LUN is attached to
the wrong VM. But there aren't many ways to communicate more info about
an underlying iSCSI volume to virt-manager's storage browser.
One way that does exist, however, is the volume key, which is, it seems,
equivalent to "1" followed by the SCSI ID set on the iSCSI target--the
same value found under /dev/disk/by-id/ with a "scsi_" prefix. Since i
explicitly set the SCSI ID to a useful value in my tgt configuration, i
thought it would be useful to present it in the virt-manager storage
view using this vector.
So here's a small patch against the virt-manager-0.9.0-19.el6 SRPM for
CentOS 6.5 that does it. Instead of displaying simply "unit:0:0:1", it
instead displays something like "unit:0:0:1 (1vg1_foo.vda)" where, for
example, i have tgtd configured to set the SCSI ID for the given volume
to "vg1/foo.vda", i.e. the LVM path of the backing store for the given LUN.
Makes it a helluva lot easier to pick the right LUN, for me, anyway.
I hope attachments are okay. Not sure tbird won't muck with it if i
include it inline.
Thoughts?
--
Jefferson Ogata <Jefferson.Ogata@xxxxxxxx>
National Oceanographic Data Center
You can't step into the same river twice. -- Herakleitos
--- a/src/virtManager/storagevol.py.nodc 2011-07-22 22:59:14.000000000 +0000
+++ b/src/virtManager/storagevol.py 2013-12-04 00:29:52.000000000 +0000
@@ -37,6 +37,9 @@
def get_path(self):
return self.vol.path()
+ def get_key(self):
+ return self.vol.key()
+
def get_pool(self):
pobj = self.vol.storagePoolLookupByVolume()
return self.conn.get_pool_by_name(pobj.name())
--- a/src/virtManager/storagebrowse.py.nodc 2013-12-04 00:16:32.000000000 +0000
+++ b/src/virtManager/storagebrowse.py 2013-12-04 00:42:11.000000000 +0000
@@ -315,11 +315,17 @@
pool = self.current_pool()
if not pool:
return
+ pool_type = pool.get_type()
vols = pool.get_volumes()
for key in vols.keys():
vol = vols[key]
sensitive = True
+ name = vol.get_name()
+ if pool_type == "iscsi":
+ vol_key = vol.get_key()
+ if vol_key:
+ name += " (%s)" % vol_key
path = vol.get_target_path()
fmt = vol.get_format() or ""
namestr = None
@@ -341,7 +347,7 @@
if fmt == "vmdk":
sensitive = False
- model.append([key, vol.get_name(), vol.get_pretty_capacity(),
+ model.append([key, name, vol.get_pretty_capacity(),
fmt, namestr, sensitive])
def show_err(self, info, details=None):
--- a/src/virtManager/host.py.nodc 2013-12-04 00:16:32.000000000 +0000
+++ b/src/virtManager/host.py 2013-12-04 00:39:35.000000000 +0000
@@ -870,12 +870,18 @@
def populate_storage_volumes(self):
pool = self.current_pool()
+ pool_type = pool.get_type()
model = self.widget("vol-list").get_model()
model.clear()
vols = pool.get_volumes()
for key in vols.keys():
vol = vols[key]
+ name = vol.get_name()
+ if pool_type == "iscsi":
+ vol_key = vol.get_key()
+ if vol_key:
+ name += " (%s)" % vol_key
path = vol.get_target_path()
namestr = None
try:
@@ -887,7 +893,7 @@
except:
logging.exception("Failed to determine if storage volume in "
"use.")
- model.append([key, vol.get_name(), vol.get_pretty_capacity(),
+ model.append([key, name, vol.get_pretty_capacity(),
vol.get_format() or "", namestr])
_______________________________________________
virt-tools-list mailing list
virt-tools-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/virt-tools-list