From 3d9e3178c4d2e18425ba6df23f27ee7b1da07453 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Fri, 22 Nov 2013 14:36:37 +0000 Subject: Move python example programs into python/examples/ subdirectory Signed-off-by: Daniel P. Berrange --- examples/topology.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100755 examples/topology.py (limited to 'examples/topology.py') diff --git a/examples/topology.py b/examples/topology.py new file mode 100755 index 0000000..62effe3 --- /dev/null +++ b/examples/topology.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python +# Parse topology information from the capabilities XML and use +# them to calculate host topology +# +# Authors: +# Amador Pahim +# Peter Krempa + +import libvirt +import sys +from xml.dom import minidom + +try: + conn = libvirt.openReadOnly(None) +except libvirt.libvirtError: + print 'Failed to connect to the hypervisor' + sys.exit(1) + +try: + capsXML = conn.getCapabilities() +except libvirt.libvirtError: + print 'Failed to request capabilities' + sys.exit(1) + +caps = minidom.parseString(capsXML) +host = caps.getElementsByTagName('host')[0] +cells = host.getElementsByTagName('cells')[0] +total_cpus = cells.getElementsByTagName('cpu').length + +socketIds = [] +siblingsIds = [] + +socketIds = [ proc.getAttribute('socket_id') + for proc in cells.getElementsByTagName('cpu') + if proc.getAttribute('socket_id') not in socketIds ] + +siblingsIds = [ proc.getAttribute('siblings') + for proc in cells.getElementsByTagName('cpu') + if proc.getAttribute('siblings') not in siblingsIds ] + +print "Host topology" +print "NUMA nodes:", cells.getAttribute('num') +print " Sockets:", len(set(socketIds)) +print " Cores:", len(set(siblingsIds)) +print " Threads:", total_cpus -- cgit