From 89da2ff320301e17437fa0dcd329440128dc72f0 Mon Sep 17 00:00:00 2001 From: Guido Trotter <ultrotter@google.com> Date: Thu, 8 Dec 2011 13:56:06 +0000 Subject: [PATCH] kvm: get more accurate info from qmp, if possible Signed-off-by: Guido Trotter <ultrotter@google.com> Reviewed-by: Iustin Pop <iustin@google.com> --- lib/hypervisor/hv_kvm.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/hypervisor/hv_kvm.py b/lib/hypervisor/hv_kvm.py index 1e51c3547..59994cd29 100644 --- a/lib/hypervisor/hv_kvm.py +++ b/lib/hypervisor/hv_kvm.py @@ -202,6 +202,8 @@ class QmpConnection: _FIRST_MESSAGE_KEY = "QMP" _EVENT_KEY = "event" _ERROR_KEY = "error" + _RETURN_KEY = RETURN_KEY = "return" + _ACTUAL_KEY = ACTUAL_KEY = "actual" _ERROR_CLASS_KEY = "class" _ERROR_DATA_KEY = "data" _ERROR_DESC_KEY = "desc" @@ -916,6 +918,17 @@ class KVMHypervisor(hv_base.BaseHypervisor): istat = "---b-" times = "0" + try: + qmp = QmpConnection(self._InstanceQmpMonitor(instance_name)) + qmp.connect() + vcpus = len(qmp.Execute("query-cpus")[qmp.RETURN_KEY]) + # Will fail if ballooning is not enabled, but we can then just resort to + # the value above. + mem_bytes = qmp.Execute("query-balloon")[qmp.RETURN_KEY][qmp.ACTUAL_KEY] + memory = mem_bytes / 1048576 + except errors.HypervisorError: + pass + return (instance_name, pid, memory, vcpus, istat, times) def GetAllInstancesInfo(self): -- GitLab