diff options
author | Daniel P. Berrange <berrange@redhat.com> | 2013-11-22 15:55:39 +0000 |
---|---|---|
committer | Daniel P. Berrange <berrange@redhat.com> | 2013-11-22 15:55:39 +0000 |
commit | 34aa32ba8a4d3373ce01f999021e58638c4c3324 (patch) | |
tree | 3bba26150dff600f9f1ca99a34e5397c4c786c66 /examples/topology.py | |
parent | 70b8c9a2a3fe293aa055fde0d8a9df13263c3fd8 (diff) | |
download | libvirt-python-34aa32ba8a4d3373ce01f999021e58638c4c3324.tar.gz |
Move python example programs into python/examples/ subdirectory
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Diffstat (limited to 'examples/topology.py')
-rwxr-xr-x | examples/topology.py | 45 |
1 files changed, 45 insertions, 0 deletions
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 <apahim@redhat.com> +# Peter Krempa <pkrempa@redhat.com> + +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 |