Update xen_cpu script
authorQuentin Smith <quentin@mit.edu>
Wed, 26 Nov 2008 03:47:04 +0000 (22:47 -0500)
committerQuentin Smith <quentin@mit.edu>
Wed, 26 Nov 2008 03:47:04 +0000 (22:47 -0500)
  * Fix typos in xen_cpu script for XenAPI code
  * Bump theoretical CPU max to 64x
  * Show domain      CPU weight and cap if available

svn path=/trunk/packages/xvm-munin-config/; revision=1779

debian/changelog
host/usr/share/xvm-munin-host-config/plugins/xen_cpu

index c3c4d4e..b733887 100644 (file)
@@ -1,3 +1,11 @@
+xvm-munin-config (0.0.5) unstable; urgency=low
+
+  * Fix typos in xen_cpu script for XenAPI code
+  * Bump theoretical CPU max to 64x
+  * Show domain CPU weight and cap if available
+
+ -- Quentin Smith <quentin@mit.edu>  Tue, 25 Nov 2008 22:46:12 -0500
+
 xvm-munin-config (0.0.4) unstable; urgency=low
 
   * Pass microseconds to Munin and display as percentages on graph
index ecb68be..755c476 100755 (executable)
@@ -1,7 +1,8 @@
 #!/usr/bin/python
 
-from xen.xm.main import SERVER_LEGACY_XMLRPC, SERVER_XEN_API, parseServer
+from xen.xm.main import SERVER_LEGACY_XMLRPC, SERVER_XEN_API, parseServer, parseAuthentication
 from xen.xend import sxp
+import atexit
 
 serverType, serverURI = parseServer()
 
@@ -30,23 +31,30 @@ else:
 def getDomains():
     ret = {}
     if serverType == SERVER_XEN_API:
-        domains = server.xenapu.VM.get_all_records()
+        domains = server.xenapi.VM.get_all_records()
         metrics = server.xenapi.VM_metrics.get_all_records()
         for d in domains.values():
             ret[d['uuid'].replace('-', '_')] = {'name': d['name_label'],
                                                 'cpu_time': sum(metrics[d['metrics']]['VCPUs_utilisation'].values()),
                                                 'domid': d['domid'],
                                                 'uuid': d['uuid'],
+                                                # No equivalent
                                                 }
         return ret
     else:
         domains = server.xend.domains_with_state(True, 'all', True)
         for d in domains:
-            ret[sxp.child_value(d, 'uuid', 'NONE').replace('-', '_')] = {'name': sxp.child_value(d, 'name', 'UNKNOWN'),
-                                                                         'cpu_time': sxp.child_value(d, 'cpu_time', 0.0),
-                                                                         'domid': sxp.child_value(d, 'domid', -1),
-                                                                         'uuid': sxp.child_value(d, 'uuid', 'NONE'),
-                                                                         }
+            data = {'name': sxp.child_value(d, 'name', 'UNKNOWN'),
+                    'cpu_time': sxp.child_value(d, 'cpu_time', 0.0),
+                    'domid': sxp.child_value(d, 'domid', -1),
+                    'uuid': sxp.child_value(d, 'uuid', 'NONE'),
+                    }
+            try:
+                sched = server.xend.domain.sched_credit_get(data['name'])
+                data['sched-credit'] = sched
+            except:
+                data['sched-credit'] = None
+            ret[sxp.child_value(d, 'uuid', 'NONE').replace('-', '_')] = data
         return ret
 
 if cmd == 'config':
@@ -62,16 +70,19 @@ graph_period second"""
     for d in sorted(domains):
         name = domains[d]['name']
         if name[0:2] == 'd_':
-            name = 'user domain'
+            name = 'db domid %d' % domains[d]['domid']
         print "%s.label %s" % (d, name)
         if domains[d]['domid'] == 0:
             print "%s.draw AREA" % d
         else:
             print "%s.draw STACK" % d
-        print "%s.max 5000" % d
+        print "%s.max 19200000000" % d # 64x 100% CPU usage
         print "%s.min 0" % d
         print "%s.type DERIVE" % d
-        print "%s.info %s" % (d, domains[d]['uuid'])
+        if domains[d].get('sched-credit'):
+            print "%s.info uuid %s CPU weight %d cap %d%%" % (d, domains[d]['uuid'], domains[d]['sched-credit']['weight'], domains[d]['sched-credit']['cap'])
+        else:
+            print "%s.info uuid %s" % (d, domains[d]['uuid'])
         print "%s.cdef %s,10000,/" % (d, d)
     sys.exit(0)