From 024e157f5122f45bd2796265c2e25a1bdfa99ad6 Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Mon, 9 Feb 2009 14:04:08 +0000 Subject: [PATCH] =?UTF-8?q?Add=20a=20new=20instance=20query=20flag=20?= =?UTF-8?q?=E2=80=98disk=5Fusage=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch adds a new instance query flag called disk_usage that retrieves the overall space used by an instance on each of its nodes. This can be used when balancing the cluster or checking N+1 status. The flag is also exported in RAPI. Note the flag is currently broken for file-based instances, as it represents the amount of space in the cluster volume group. Reviewed-by: ultrotter --- lib/cmdlib.py | 5 ++++- lib/rapi/rlib2.py | 2 +- scripts/gnt-instance | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/cmdlib.py b/lib/cmdlib.py index 3f974ee53..bf66dda73 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -3087,7 +3087,7 @@ class LUQueryInstances(NoHooksLU): "sda_size", "sdb_size", "vcpus", "tags", "network_port", "beparams", "(disk).(size)/([0-9]+)", - "(disk).(sizes)", + "(disk).(sizes)", "disk_usage", "(nic).(mac|ip|bridge)/([0-9]+)", "(nic).(macs|ips|bridges)", "(disk|nic).(count)", @@ -3244,6 +3244,9 @@ class LUQueryInstances(NoHooksLU): val = instance.FindDisk(idx).size except errors.OpPrereqError: val = None + elif field == "disk_usage": # total disk usage per node + disk_sizes = [{'size': disk.size} for disk in instance.disks] + val = _ComputeDiskSize(instance.disk_template, disk_sizes) elif field == "tags": val = list(instance.GetTags()) elif field == "serial_no": diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py index 67d802d10..a84ce3257 100644 --- a/lib/rapi/rlib2.py +++ b/lib/rapi/rlib2.py @@ -34,7 +34,7 @@ I_FIELDS = ["name", "admin_state", "os", "pnode", "snodes", "disk_template", "nic.ips", "nic.macs", "nic.bridges", - "disk.sizes", + "disk.sizes", "disk_usage", "beparams", "hvparams", "oper_state", "oper_ram", "status", "tags"] diff --git a/scripts/gnt-instance b/scripts/gnt-instance index b09f4d760..4cbc30b9b 100755 --- a/scripts/gnt-instance +++ b/scripts/gnt-instance @@ -226,6 +226,7 @@ def ListInstances(opts, args): "ip": "IP_address", "mac": "MAC_address", "bridge": "Bridge", "sda_size": "Disk/0", "sdb_size": "Disk/1", + "disk_usage": "DiskUsage", "status": "Status", "tags": "Tags", "network_port": "Network_port", "hv/kernel_path": "Kernel_path", -- GitLab