mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
Fix state in xm list; add state to VM_metrics class.
Signed-off-by: Tom Wilkie <tom.wilkie@gmail.com>
This commit is contained in:
1 parent
a24516689f
commit
761bc92430
3 files changed
+41
-1
No files matched your search
@@ -1608,6 +1608,7 @@ class XendAPI(object):
|
||||
'VCPUs_CPU',
|
||||
'VCPUs_flags',
|
||||
'VCPUs_params',
|
||||
'state',
|
||||
'start_time']
|
||||
VM_metrics_attr_rw = []
|
||||
VM_metrics_methods = []
|
||||
@@ -1642,6 +1643,9 @@ class XendAPI(object):
|
||||
def VM_metrics_get_start_time(self, _, ref):
|
||||
return xen_api_success(self._VM_metrics_get(ref).get_start_time())
|
||||
|
||||
def VM_metrics_get_state(self, _, ref):
|
||||
return xen_api_success(self._VM_metrics_get(ref).get_state())
|
||||
|
||||
|
||||
# Xen API: Class VBD
|
||||
# ----------------------------------------------------------------
|
||||
|
||||
@@ -97,6 +97,30 @@ class XendVMMetrics:
|
||||
else:
|
||||
return {}
|
||||
|
||||
def get_state(self):
|
||||
try:
|
||||
domid = self.xend_domain_instance.getDomid()
|
||||
domlist = xc.domain_getinfo(domid, 1)
|
||||
if domlist and domid == domlist[0]['domid']:
|
||||
dominfo = domlist[0]
|
||||
|
||||
states = []
|
||||
def addState(key):
|
||||
if dominfo[key] == 1:
|
||||
states.append(key)
|
||||
|
||||
addState("running")
|
||||
addState("blocked")
|
||||
addState("paused")
|
||||
addState("dying")
|
||||
addState("crashed")
|
||||
addState("shutdown")
|
||||
return ",".join(states)
|
||||
except Exception, err:
|
||||
# ignore missing domain
|
||||
log.trace("domain_getinfo(%d) failed, ignoring: %s", domid, str(err))
|
||||
return ""
|
||||
|
||||
def get_VCPUs_params(self):
|
||||
domid = self.xend_domain_instance.getDomid()
|
||||
if domid is not None:
|
||||
@@ -125,4 +149,5 @@ class XendVMMetrics:
|
||||
'VCPUs_flags' : self.get_VCPUs_flags(),
|
||||
'VCPUs_params' : self.get_VCPUs_params(),
|
||||
'start_time' : self.get_start_time(),
|
||||
'state' : self.get_state(),
|
||||
}
|
||||
@@ -715,10 +715,21 @@ def getDomains(domain_names, state, full = 0):
|
||||
dom_rec = server.xenapi.VM.get_record(dom_ref)
|
||||
dom_metrics_ref = server.xenapi.VM.get_metrics(dom_ref)
|
||||
dom_metrics = server.xenapi.VM_metrics.get_record(dom_metrics_ref)
|
||||
|
||||
states = ('running', 'blocked', 'paused', 'shutdown',
|
||||
'crashed', 'dying')
|
||||
def state_on_off(state):
|
||||
if dom_metrics['state'].find(state) > -1:
|
||||
return state[0]
|
||||
else:
|
||||
return "-"
|
||||
state_str = "".join([state_on_off(state)
|
||||
for state in states])
|
||||
|
||||
dom_rec.update({'name': dom_rec['name_label'],
|
||||
'memory_actual': int(dom_metrics['memory_actual'])/1024,
|
||||
'vcpus': dom_metrics['VCPUs_number'],
|
||||
'state': '-----',
|
||||
'state': state_str,
|
||||
'cpu_time': dom_metrics['VCPUs_utilisation'],
|
||||
'start_time': dom_metrics['start_time']})
|
||||
|
||||
|
||||