mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 02:30:03 +01:00
Add *.get_all_records to XenAPI, make use of this for xm list
signed-off-by: Tom Wilkie <tom.wilkie@gmail.com>
This commit is contained in:
1 parent
5d44f92367
commit
0035808bef
2 files changed
+18
-7
No files matched your search
@@ -575,15 +575,25 @@ class XendAPI(object):
|
||||
|
||||
get_by_uuid = '%s_get_by_uuid' % api_cls
|
||||
get_uuid = '%s_get_uuid' % api_cls
|
||||
get_all_records = '%s_get_all_records' % api_cls
|
||||
|
||||
def _get_by_uuid(_1, _2, ref):
|
||||
return xen_api_success(ref)
|
||||
|
||||
def _get_uuid(_1, _2, ref):
|
||||
return xen_api_success(ref)
|
||||
|
||||
def unpack(v):
|
||||
return v['Value']
|
||||
|
||||
def _get_all_records(_api_cls):
|
||||
return lambda s, session: \
|
||||
xen_api_success([unpack(getattr(cls, '%s_get_record' % _api_cls)(s, session, ref))\
|
||||
for ref in unpack(getattr(cls, '%s_get_all' % _api_cls)(s, session))])
|
||||
|
||||
setattr(cls, get_by_uuid, _get_by_uuid)
|
||||
setattr(cls, get_uuid, _get_uuid)
|
||||
|
||||
setattr(cls, get_all_records, _get_all_records(api_cls))
|
||||
|
||||
# Autoplugging classes
|
||||
# --------------------
|
||||
@@ -721,7 +731,7 @@ class XendAPI(object):
|
||||
Base_attr_ro = ['uuid']
|
||||
Base_attr_rw = []
|
||||
Base_methods = [('get_record', 'Struct')]
|
||||
Base_funcs = [('get_all', 'Set'), ('get_by_uuid', None)]
|
||||
Base_funcs = [('get_all', 'Set'), ('get_by_uuid', None), ('get_all_records', 'Set')]
|
||||
|
||||
# Xen API: Class Session
|
||||
# ----------------------------------------------------------------
|
||||
|
||||
@@ -741,11 +741,12 @@ def getDomains(domain_names, state, full = 0):
|
||||
if serverType == SERVER_XEN_API:
|
||||
doms_sxp = []
|
||||
doms_dict = []
|
||||
dom_refs = server.xenapi.VM.get_all()
|
||||
for dom_ref in dom_refs:
|
||||
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)
|
||||
|
||||
dom_recs = server.xenapi.VM.get_all_records()
|
||||
dom_metrics_recs = dict(map(lambda x: (x['uuid'], x), server.xenapi.VM_metrics.get_all_records()))
|
||||
|
||||
for dom_rec in dom_recs:
|
||||
dom_metrics = dom_metrics_recs[dom_rec['metrics']]
|
||||
|
||||
states = ('running', 'blocked', 'paused', 'shutdown',
|
||||
'crashed', 'dying')
|
||||
|
||||