diff --git a/lib/cmdlib.py b/lib/cmdlib.py index b6d223378b27e029337f86d453b8aa107edff9ea..ec700a6980ab16a4da6e9c25a0ca9dd2117d0d4d 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -2052,7 +2052,8 @@ class LUQueryInstances(NoHooksLU): self.dynamic_fields = frozenset(["oper_state", "oper_ram"]) _CheckOutputFields(static=["name", "os", "pnode", "snodes", "admin_state", "admin_ram", - "disk_template", "ip", "mac", "bridge"], + "disk_template", "ip", "mac", "bridge", + "sda_size", "sdb_size"], dynamic=self.dynamic_fields, selected=self.op.output_fields) @@ -2126,6 +2127,12 @@ class LUQueryInstances(NoHooksLU): val = instance.nics[0].bridge elif field == "mac": val = instance.nics[0].mac + elif field == "sda_size" or field == "sdb_size": + disk = instance.FindDisk(field[:3]) + if disk is None: + val = "N/A" + else: + val = disk.size else: raise errors.ParameterError(field) val = str(val) diff --git a/lib/objects.py b/lib/objects.py index 23167fc1056f76744c6e6f27ccb8745674239879..de33eb8eb69c9578e3e4639152f3faf03deaf31a 100644 --- a/lib/objects.py +++ b/lib/objects.py @@ -379,6 +379,18 @@ class Instance(ConfigObject, TaggableObject): return ret + def FindDisk(self, name): + """Find a disk given having a specified name. + + This will return the disk which has the given iv_name. + + """ + for disk in self.disks: + if disk.iv_name == name: + return disk + + return None + class OS(ConfigObject): """Config object representing an operating system.""" diff --git a/scripts/gnt-instance b/scripts/gnt-instance index 6c46b37ce1efd99367062f8c0bb2b648a35e4391..d0dc22c55d25b195a9ca7f220396b4de90681fa2 100755 --- a/scripts/gnt-instance +++ b/scripts/gnt-instance @@ -50,16 +50,17 @@ def ListInstances(opts, args): "oper_state": "Status", "admin_ram": "Configured_memory", "oper_ram": "Memory", "disk_template": "Disk_template", "ip": "IP Address", "mac": "MAC Address", - "bridge": "Bridge"} + "bridge": "Bridge", + "sda_size": "Disk/0", "sdb_size": "Disk/1"} else: headers = None if opts.human_readable: - unitfields = ["admin_ram", "oper_ram"] + unitfields = ["admin_ram", "oper_ram", "sda_size", "sdb_size"] else: unitfields = None - numfields = ["admin_ram", "oper_ram"] + numfields = ["admin_ram", "oper_ram", "sda_size", "sdb_size"] data = GenerateTable(separator=opts.separator, headers=headers, fields=selected_fields, unitfields=unitfields,