From 644eeef916c9ef56cc4f95028db9d20f7a9393ee Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Mon, 20 Aug 2007 12:17:50 +0000 Subject: [PATCH] Add support for listing instance disk sizes. Reviewed-by: imsnah --- lib/cmdlib.py | 9 ++++++++- lib/objects.py | 12 ++++++++++++ scripts/gnt-instance | 7 ++++--- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/lib/cmdlib.py b/lib/cmdlib.py index b6d223378..ec700a698 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 23167fc10..de33eb8eb 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 6c46b37ce..d0dc22c55 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, -- GitLab