mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 02:30:03 +01:00
[XEND] make *.get_all_records return dict of ref->record
Also clean up some handling of uuids and refs in xm signed-of-by: Tom Wilkie <tom.wilkie@gmail.com>
This commit is contained in:
1 parent
cee87f9f44
commit
1341c96dca
3 files changed
+27
-33
No files matched your search
@@ -553,8 +553,8 @@ class XendAPI(object):
|
||||
|
||||
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))])
|
||||
xen_api_success(dict([(ref, 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)
|
||||
|
||||
@@ -118,8 +118,8 @@ class XendBase:
|
||||
raise "Big Error.. TODO!"
|
||||
|
||||
def get_all_records(cls):
|
||||
return [inst.get_record()
|
||||
for inst in XendAPIStore.get_all(cls.getClass())]
|
||||
return dict([(inst.get_uuid(), inst.get_record())
|
||||
for inst in XendAPIStore.get_all(cls.getClass())])
|
||||
|
||||
get_all = classmethod(get_all)
|
||||
get_by_uuid = classmethod(get_by_uuid)
|
||||
|
||||
+23
-29
@@ -569,14 +569,14 @@ def get_single_vm(dom):
|
||||
|
||||
try:
|
||||
domid = int(dom)
|
||||
uuids = [server.xenapi.VM.get_domid(vm_ref)
|
||||
for vm_ref in server.xenapi.VM.get_all()
|
||||
if int(server.xenapi.VM.get_domid(vm_ref)) == domid]
|
||||
refs = [vm_ref
|
||||
for vm_ref in server.xenapi.VM.get_all()
|
||||
if int(server.xenapi.VM.get_domid(vm_ref)) == domid]
|
||||
except:
|
||||
pass
|
||||
|
||||
if len(uuids) > 0:
|
||||
return uuids[0]
|
||||
if len(refs) > 0:
|
||||
return refs[0]
|
||||
|
||||
raise OptionError("Domain '%s' not found." % dom)
|
||||
else:
|
||||
@@ -747,15 +747,15 @@ def getDomains(domain_names, state, full = 0):
|
||||
doms_dict = []
|
||||
|
||||
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()))
|
||||
dom_metrics_recs = server.xenapi.VM_metrics.get_all_records()
|
||||
|
||||
for dom_rec in dom_recs:
|
||||
dom_metrics = dom_metrics_recs[dom_rec['metrics']]
|
||||
for dom_ref, dom_rec in dom_recs.items():
|
||||
dom_metrics_rec = dom_metrics_recs[dom_rec['metrics']]
|
||||
|
||||
states = ('running', 'blocked', 'paused', 'shutdown',
|
||||
'crashed', 'dying')
|
||||
def state_on_off(state):
|
||||
if state in dom_metrics['state']:
|
||||
if state in dom_metrics_rec['state']:
|
||||
return state[0]
|
||||
else:
|
||||
return "-"
|
||||
@@ -763,12 +763,12 @@ def getDomains(domain_names, state, full = 0):
|
||||
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'],
|
||||
'memory_actual': int(dom_metrics_rec['memory_actual'])/1024,
|
||||
'vcpus': dom_metrics_rec['VCPUs_number'],
|
||||
'state': state_str,
|
||||
'cpu_time': dom_metrics['VCPUs_utilisation'],
|
||||
'cpu_time': dom_metrics_rec['VCPUs_utilisation'],
|
||||
'start_time': datetime_to_secs(
|
||||
dom_metrics['start_time'])})
|
||||
dom_metrics_rec['start_time'])})
|
||||
|
||||
doms_sxp.append(['domain'] + map2sxp(dom_rec))
|
||||
doms_dict.append(dom_rec)
|
||||
@@ -2075,9 +2075,9 @@ def xm_network_attach(args):
|
||||
|
||||
def get_net_from_bridge(bridge):
|
||||
# In OSS, we just assert network.name_label == bridge name
|
||||
networks = dict([(record['name_label'], record['uuid'])
|
||||
for record in server.xenapi.network
|
||||
.get_all_records()])
|
||||
networks = dict([(record['name_label'], ref)
|
||||
for ref, record in server.xenapi.network
|
||||
.get_all_records().items()])
|
||||
if bridge not in networks.keys():
|
||||
raise "Unknown bridge name!"
|
||||
return networks[bridge]
|
||||
@@ -2251,35 +2251,29 @@ def xm_network_del(args):
|
||||
arg_check(args, "network-del", 1)
|
||||
network = args[0]
|
||||
|
||||
networks = dict([(record['name_label'], record['uuid'])
|
||||
for record in
|
||||
server.xenapi.network.get_all_records()])
|
||||
networks = dict([(record['name_label'], ref)
|
||||
for ref, record in
|
||||
server.xenapi.network.get_all_records().items()])
|
||||
|
||||
if network not in networks.keys():
|
||||
raise ValueError("'%s' is not a valid network name" % network)
|
||||
|
||||
server.xenapi.network.destroy(networks[network])
|
||||
|
||||
def uuid_dict_trans(records):
|
||||
return dict([(record['uuid'], record)
|
||||
for record in records])
|
||||
|
||||
def xm_network_show(args):
|
||||
xenapi_only()
|
||||
arg_check(args, "network-show", 0)
|
||||
|
||||
networks = server.xenapi.network.get_all_records()
|
||||
pifs = uuid_dict_trans(
|
||||
server.xenapi.PIF.get_all_records())
|
||||
vifs = uuid_dict_trans(
|
||||
server.xenapi.VIF.get_all_records())
|
||||
pifs = server.xenapi.PIF.get_all_records()
|
||||
vifs = server.xenapi.VIF.get_all_records()
|
||||
|
||||
print '%-20s %-40s %-10s' % \
|
||||
('Name', 'VIFs', 'PIFs')
|
||||
|
||||
format2 = "%(name_label)-20s %(vif)-40s %(pif)-10s"
|
||||
|
||||
for network in networks:
|
||||
for network_ref, network in networks.items():
|
||||
for i in range(max(len(network['PIFs']),
|
||||
len(network['VIFs']), 1)):
|
||||
if i < len(network['PIFs']):
|
||||
@@ -2292,7 +2286,7 @@ def xm_network_show(args):
|
||||
else:
|
||||
vif_uuid = None
|
||||
|
||||
pif = pifs.get(pif_uuid, {'device':''})
|
||||
pif = pifs.get(pif_uuid, None)
|
||||
vif = vifs.get(vif_uuid, None)
|
||||
|
||||
if vif:
|
||||
|
||||