From dbb24ec70b027c7df7576eb8b3b060ab43f5c343 Mon Sep 17 00:00:00 2001
From: Iustin Pop <iustin@google.com>
Date: Sat, 12 Jun 2010 08:49:29 +0200
Subject: [PATCH] Show OS parameters in cluster/instance info

Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>
---
 lib/cmdlib.py        |  3 +++
 scripts/gnt-cluster  |  5 ++++-
 scripts/gnt-instance | 23 +++++++++++++++++------
 3 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index ee0e3b456..e921553e5 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -3778,6 +3778,7 @@ class LUQueryClusterInfo(NoHooksLU):
                         for hypervisor_name in cluster.enabled_hypervisors]),
       "os_hvp": os_hvp,
       "beparams": cluster.beparams,
+      "osparams": cluster.osparams,
       "nicparams": cluster.nicparams,
       "candidate_pool_size": cluster.candidate_pool_size,
       "master_netdev": cluster.master_netdev,
@@ -8250,6 +8251,8 @@ class LUQueryInstanceData(NoHooksLU):
         "hv_actual": cluster.FillHV(instance, skip_globals=True),
         "be_instance": instance.beparams,
         "be_actual": cluster.FillBE(instance),
+        "os_instance": instance.osparams,
+        "os_actual": cluster.SimpleFillOS(instance.os, instance.osparams),
         "serial_no": instance.serial_no,
         "mtime": instance.mtime,
         "ctime": instance.ctime,
diff --git a/scripts/gnt-cluster b/scripts/gnt-cluster
index bf160cdb0..da982ceb7 100755
--- a/scripts/gnt-cluster
+++ b/scripts/gnt-cluster
@@ -274,9 +274,12 @@ def ShowClusterConfig(opts, args):
   ToStdout("Hypervisor parameters:")
   _PrintGroupedParams(result["hvparams"])
 
-  ToStdout("OS specific hypervisor parameters:")
+  ToStdout("OS-specific hypervisor parameters:")
   _PrintGroupedParams(result["os_hvp"])
 
+  ToStdout("OS parameters:")
+  _PrintGroupedParams(result["osparams"])
+
   ToStdout("Cluster parameters:")
   ToStdout("  - candidate pool size: %s",
             compat.TryToRoman(result["candidate_pool_size"],
diff --git a/scripts/gnt-instance b/scripts/gnt-instance
index 710fb4dab..2b68d10a5 100755
--- a/scripts/gnt-instance
+++ b/scripts/gnt-instance
@@ -1111,6 +1111,21 @@ def _FormatList(buf, data, indent_level):
       _FormatList(buf, elem, indent_level+1)
 
 
+def _FormatParameterDict(buf, per_inst, actual):
+  """Formats a parameter dictionary.
+
+  @type buf: L{StringIO}
+  @param buf: the buffer into which to write
+  @type per_inst: dict
+  @param per_inst: the instance's own parameters
+  @type actual: dict
+  @param actual: the current parameter set (including defaults)
+
+  """
+  for key in sorted(actual):
+    val = per_inst.get(key, "default (%s)" % actual[key])
+    buf.write("    - %s: %s\n" % (key, val))
+
 def ShowInstanceConfig(opts, args):
   """Compute instance run-time status.
 
@@ -1159,6 +1174,7 @@ def ShowInstanceConfig(opts, args):
     buf.write("    - primary: %s\n" % instance["pnode"])
     buf.write("    - secondaries: %s\n" % utils.CommaJoin(instance["snodes"]))
     buf.write("  Operating system: %s\n" % instance["os"])
+    _FormatParameterDict(buf, instance["os_instance"], instance["os_actual"])
     if instance.has_key("network_port"):
       buf.write("  Allocated network port: %s\n" %
                 compat.TryToRoman(instance["network_port"],
@@ -1185,12 +1201,7 @@ def ShowInstanceConfig(opts, args):
                                       vnc_bind_address)
       buf.write("    - console connection: vnc to %s\n" % vnc_console_port)
 
-    for key in sorted(instance["hv_actual"]):
-      if key in instance["hv_instance"]:
-        val = instance["hv_instance"][key]
-      else:
-        val = "default (%s)" % instance["hv_actual"][key]
-      buf.write("    - %s: %s\n" % (key, val))
+    _FormatParameterDict(buf, instance["hv_instance"], instance["hv_actual"])
     buf.write("  Hardware:\n")
     buf.write("    - VCPUs: %s\n" %
               compat.TryToRoman(instance["be_actual"][constants.BE_VCPUS],
-- 
GitLab