diff --git a/lib/cmdlib.py b/lib/cmdlib.py index 9ef79ede9586c1e2aaef935612c715bd3e1a88f0..40c8a539dc0562933a62459d45b3b7acecef78b9 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -6293,22 +6293,31 @@ class LUQueryInstanceData(NoHooksLU): in self.wanted_names] return + def _ComputeBlockdevStatus(self, node, instance_name, dev): + """Returns the status of a block device + + """ + if self.op.static: + return None + + self.cfg.SetDiskID(dev, node) + + result = self.rpc.call_blockdev_find(node, dev) + if result.offline: + return None + + result.Raise("Can't compute disk status for %s" % instance_name) + + status = result.payload + + return (status.dev_path, status.major, status.minor, + status.sync_percent, status.estimated_time, + status.is_degraded, status.ldisk_degraded) + def _ComputeDiskStatus(self, instance, snode, dev): """Compute block device status. """ - static = self.op.static - if not static: - self.cfg.SetDiskID(dev, instance.primary_node) - dev_pstatus = self.rpc.call_blockdev_find(instance.primary_node, dev) - if dev_pstatus.offline: - dev_pstatus = None - else: - dev_pstatus.Raise("Can't compute disk status for %s" % instance.name) - dev_pstatus = dev_pstatus.payload.ToLegacyStatus() - else: - dev_pstatus = None - if dev.dev_type in constants.LDS_DRBD: # we change the snode then (otherwise we use the one passed in) if dev.logical_id[0] == instance.primary_node: @@ -6316,16 +6325,9 @@ class LUQueryInstanceData(NoHooksLU): else: snode = dev.logical_id[0] - if snode and not static: - self.cfg.SetDiskID(dev, snode) - dev_sstatus = self.rpc.call_blockdev_find(snode, dev) - if dev_sstatus.offline: - dev_sstatus = None - else: - dev_sstatus.Raise("Can't compute disk status for %s" % instance.name) - dev_sstatus = dev_sstatus.payload.ToLegacyStatus() - else: - dev_sstatus = None + dev_pstatus = self._ComputeBlockdevStatus(instance.primary_node, + instance.name, dev) + dev_sstatus = self._ComputeBlockdevStatus(snode, instance.name, dev) if dev.children: dev_children = [self._ComputeDiskStatus(instance, snode, child) diff --git a/lib/objects.py b/lib/objects.py index 5c879069b1288f6ea7338cae305595ae2cf4819b..07453f0424ec8c2eabd7f57d52d5d5552c6fa860 100644 --- a/lib/objects.py +++ b/lib/objects.py @@ -877,14 +877,6 @@ class BlockDevStatus(ConfigObject): "ldisk_degraded", ] - def ToLegacyStatus(self): - """Converts the device status to a legacy tuple. - - """ - return (self.dev_path, self.major, self.minor, - self.sync_percent, self.estimated_time, - self.is_degraded, self.ldisk_degraded) - class SerializableConfigParser(ConfigParser.SafeConfigParser): """Simple wrapper over ConfigParse that allows serialization. diff --git a/scripts/gnt-instance b/scripts/gnt-instance index ef4ee2b80583588428af9b7e249ee282f8e0aa73..8dabc3bcc17d0c00e1b7f752cc090300129a04c2 100755 --- a/scripts/gnt-instance +++ b/scripts/gnt-instance @@ -1102,6 +1102,7 @@ def _FormatList(buf, data, indent_level): elif isinstance(elem, list): _FormatList(buf, elem, indent_level+1) + def ShowInstanceConfig(opts, args): """Compute instance run-time status.