Re: [PATCH] examples: Add script to parse topology from capabilities output

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 09/02/2013 04:57 PM, Peter Krempa wrote:
> Add a demo script originally written by Amador Pahim to parse topology
> of the host from data provided in the capabilities XML.
> ---
>  examples/python/topology.py | 45 +++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 45 insertions(+)
>  create mode 100755 examples/python/topology.py
> 
> diff --git a/examples/python/topology.py b/examples/python/topology.py
> new file mode 100755
> index 0000000..1b678bc
> --- /dev/null
> +++ b/examples/python/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@xxxxxxxxxx>
> +#   Peter Krempa <pkrempa@xxxxxxxxxx>
> +
> +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
> 

I won't get into details like len() vs. .length, string formatting, etc.
;-)  But please add a space after these commas.

Even though I don't know how this will turn out on those weird
multi-processor per core and similar architectures/processors, it should
turn out OK since you're the one who should know how those will look in
the capabilities XML.

It would be also worth adding it into specfile like other python
examples (I'm guessing those are in libvirt-python).

ACK with those two things fixed,
Martin

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]