mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
examples: Add script to parse topology from capabilities output
Add a demo script originally written by Amador Pahim to parse topology of the host from data provided in the capabilities XML.
This commit is contained in:
parent
3e29c77a26
commit
5c6ff42254
@ -17,4 +17,5 @@
|
||||
EXTRA_DIST= \
|
||||
README \
|
||||
consolecallback.py \
|
||||
topoology.py \
|
||||
dominfo.py domrestore.py domsave.py domstart.py esxlist.py
|
||||
|
45
examples/python/topology.py
Executable file
45
examples/python/topology.py
Executable file
@ -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
|
Loading…
Reference in New Issue
Block a user