From 9022440794e12563045a37b47eb6b0957f48f7ac Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Tue, 12 Oct 2010 17:33:53 +0200 Subject: [PATCH] Export more information via LUQueryInstances/RAPI Currently, the custom instance parameters (hv, be, nicp) are only queryable via LUQueryInstanceData. LUQueryInstance returns only the filled parameters, thus its users (especially RAPI) have no way to know if a parameter is custom or the default value. This patch adds three new parameters: custom_hvparams, custom_beparams, custom_nicparams, that are also exported in RAPI. Signed-off-by: Iustin Pop <iustin@google.com> Reviewed-by: Michael Hanselmann <hansmi@google.com> --- lib/cmdlib.py | 9 ++++++++- lib/rapi/rlib2.py | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/cmdlib.py b/lib/cmdlib.py index dba7038ec..bf273dc0a 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -5151,7 +5151,8 @@ class LUQueryInstances(NoHooksLU): r"(nic)\.(bridge)/([0-9]+)", r"(nic)\.(macs|ips|modes|links|bridges)", r"(disk|nic)\.(count)", - "hvparams", + "hvparams", "custom_hvparams", + "custom_beparams", "custom_nicparams", ] + _SIMPLE_FIELDS + ["hv/%s" % name for name in constants.HVS_PARAMETERS @@ -5329,6 +5330,8 @@ class LUQueryInstances(NoHooksLU): val = instance.nics[0].mac else: val = None + elif field == "custom_nicparams": + val = [nic.nicparams for nic in instance.nics] elif field == "sda_size" or field == "sdb_size": idx = ord(field[2]) - ord('a') try: @@ -5340,12 +5343,16 @@ class LUQueryInstances(NoHooksLU): val = _ComputeDiskSize(instance.disk_template, disk_sizes) elif field == "tags": val = list(instance.GetTags()) + elif field == "custom_hvparams": + val = instance.hvparams # not filled! elif field == "hvparams": val = i_hv elif (field.startswith(HVPREFIX) and field[len(HVPREFIX):] in constants.HVS_PARAMETERS and field[len(HVPREFIX):] not in constants.HVC_GLOBALS): val = i_hv.get(field[len(HVPREFIX):], None) + elif field == "custom_beparams": + val = instance.beparams elif field == "beparams": val = i_be elif (field.startswith(BEPREFIX) and diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py index 0d8367ae4..f15d94d7b 100644 --- a/lib/rapi/rlib2.py +++ b/lib/rapi/rlib2.py @@ -59,6 +59,7 @@ I_FIELDS = ["name", "admin_state", "os", "disk.sizes", "disk_usage", "beparams", "hvparams", "oper_state", "oper_ram", "oper_vcpus", "status", + "custom_hvparams", "custom_beparams", "custom_nicparams", ] + _COMMON_FIELDS N_FIELDS = ["name", "offline", "master_candidate", "drained", -- GitLab