3 from xen.xm.main import SERVER_LEGACY_XMLRPC, SERVER_XEN_API, parseServer
4 from xen.xend import sxp
6 serverType, serverURI = parseServer()
8 if serverType == SERVER_XEN_API:
9 from xen.xm import XenAPI
10 server = XenAPI.Session(serverURI)
11 username, password = parseAuthentication()
12 server.login_with_password(username, password)
15 server.xenapi.session.logout()
18 atexit.register(logout)
20 from xen.util.xmlrpcclient import ServerProxy
21 server = ServerProxy(serverURI)
32 if serverType == SERVER_XEN_API:
33 domains = server.xenapu.VM.get_all_records()
34 metrics = server.xenapi.VM_metrics.get_all_records()
35 for d in domains.values():
36 ret[d['uuid'].replace('-', '_')] = {'name': d['name_label'],
37 'cpu_time': sum(metrics[d['metrics']]['VCPUs_utilisation'].values()),
43 domains = server.xend.domains_with_state(True, 'all', True)
45 ret[sxp.child_value(d, 'uuid', 'NONE').replace('-', '_')] = {'name': sxp.child_value(d, 'name', 'UNKNOWN'),
46 'cpu_time': sxp.child_value(d, 'cpu_time', 0.0),
47 'domid': sxp.child_value(d, 'domid', -1),
48 'uuid': sxp.child_value(d, 'uuid', 'NONE'),
54 graph_title Xen domain CPU usage
55 graph_args --base 1000 -r --lower-limit 0 --upper-limit 800
58 graph_info This graph shows how CPU time is spent by Xen domains.
60 graph_period second"""
61 domains = getDomains()
62 for d in sorted(domains):
63 name = domains[d]['name']
66 print "%s.label %s" % (d, name)
67 if domains[d]['domid'] == 0:
68 print "%s.draw AREA" % d
70 print "%s.draw STACK" % d
71 print "%s.max 5000" % d
73 print "%s.type DERIVE" % d
74 print "%s.info %s" % (d, domains[d]['uuid'])
75 print "%s.cdef %s,10000,/" % (d, d)
78 domains = getDomains()
79 for d in sorted(domains):
80 print "%s.value %s" % (d, long(domains[d]['cpu_time']*1000000))