From 00430f8e19cf424e3838c7bd2f9a90a7beb0e57d Mon Sep 17 00:00:00 2001
From: Iustin Pop <iustin@google.com>
Date: Fri, 21 Nov 2008 15:36:08 +0000
Subject: [PATCH] Make cli.py use FieldSet for matching fields

This changes cli.py to FieldSet usage so that gnt-instance list will
format nicely the disk.size/*, and the count of disks/nics.

Reviewed-by: ultrotter
---
 lib/cli.py           | 7 +++++--
 scripts/gnt-instance | 8 +++++---
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/lib/cli.py b/lib/cli.py
index a800bae8e..6b0283414 100644
--- a/lib/cli.py
+++ b/lib/cli.py
@@ -764,6 +764,9 @@ def GenerateTable(headers, fields, separator, data,
   if unitfields is None:
     unitfields = []
 
+  numfields = utils.FieldSet(*numfields)
+  unitfields = utils.FieldSet(*unitfields)
+
   format_fields = []
   for field in fields:
     if headers and field not in headers:
@@ -773,7 +776,7 @@ def GenerateTable(headers, fields, separator, data,
       headers[field] = field
     if separator is not None:
       format_fields.append("%s")
-    elif field in numfields:
+    elif numfields.Matches(field):
       format_fields.append("%*s")
     else:
       format_fields.append("%-*s")
@@ -786,7 +789,7 @@ def GenerateTable(headers, fields, separator, data,
 
   for row in data:
     for idx, val in enumerate(row):
-      if fields[idx] in unitfields:
+      if unitfields.Matches(fields[idx]):
         try:
           val = int(val)
         except ValueError:
diff --git a/scripts/gnt-instance b/scripts/gnt-instance
index 5d268119d..bfaa4e135 100755
--- a/scripts/gnt-instance
+++ b/scripts/gnt-instance
@@ -221,17 +221,19 @@ def ListInstances(opts, args):
       "be/memory": "Configured_memory",
       "be/vcpus": "VCPUs",
       "be/auto_balance": "Auto_balance",
+      "disk.count": "Disks",
+      "nic.count": "NICs",
       }
   else:
     headers = None
 
   if opts.human_readable:
-    unitfields = ["be/memory", "oper_ram", "sda_size", "sdb_size"]
+    unitfields = ["be/memory", "oper_ram", "sd(a|b)_size", "disk.size/.*"]
   else:
     unitfields = None
 
-  numfields = ["be/memory", "oper_ram", "sda_size", "sdb_size", "be/vcpus",
-               "serial_no"]
+  numfields = ["be/memory", "oper_ram", "sd(a|b)_size", "be/vcpus",
+               "serial_no", "(disk|nic).count", "disk.size/.*"]
 
   list_type_fields = ("tags",)
   # change raw values to nicer strings
-- 
GitLab