On Tue, Feb 07, 2006 at 04:21:08PM +0000, Angus Thomas wrote: > Against the current CVS version, the python method libvir.open() is > failing because it requires "name" as a parameter, but in src/libvir.c, > virConnectOpen returns NULL if name is set. Very simple patch attached. I prefer the current behaviour as I expect name to be significant in the future and NULL (or None from python) to mean local Xen access. > Also attached is a simple script to test reporting of domain state via > the python bindings. Hopefully useful as a test of the python > bindings/simple example of how to use them. It generates output like this: Okay I had something similar but less complete in my tree. I need to incorporate more examples, I started with a C file but I will need to add python examples too. > [root@chaka ~]# ./libver-python-test > Attached to a hypervisor of type - Xen > There are currently 2 domains running > > Domain ID 0 is named Domain-0 > State is Running > maxMem is -4 this is a bit bizarre, that how the hypervisor direct call report 'unlimited' maxMem. If you run the same as an user the information extracted from xend will usually be equal to the 'memory' value. > memory is 262224 > nrVirtCpu is 1 > cpuTime is 2294771524162 running as root allow direct hypercall, and hence the maximum precision provided by the Xen hypervisor for time consumption > Domain ID 2 is named guest1 > State is Blocked > maxMem is 131072 > memory is 131052 > nrVirtCpu is 1 > cpuTime is 34682760385 > [...] > #!/usr/bin/env python > # > # Simple script to test libver-python reporting > # > # Copyright 2005-2006 Red Hat, Inc. > # Angus Thomas <athomas@xxxxxxxxxx> > # > # This software may be freely redistributed under the terms of the GNU > # general public license. > # > # You should have received a copy of the GNU General Public License > # along with this program; if not, write to the Free Software > # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. > > domain_states="No State", "Running", "Blocked", "Paused", "Shutdown", "Shutoff", "Crashed" > > import libvir Now 'import libvirt' with 0.0.4 you can do something like try: import libvirt except: import libvir libvirt = libvir if you want to be able to still use both > virt=libvir.open("Xen"); Use libvirt.open(None) And the ; separator at the end of line is C, though legal in Python it looks a bit strange :-) > print ("Attached to a hypervisor of type - %s" % (virt.getType())); > > print ("There are currently %s domains running" % (virt.numOfDomains())); > > id_list=virt.listDomainsID(); > for dom_id in id_list: > dom=virt.lookupByID(dom_id); > print ("\nDomain ID %s is named %s" % (dom_id, dom.name())); > dom_info=dom.info(); > # print ("\tState is %s" % (dom_info[0])); > print ("\tState is %s" % (domain_states[dom_info[0]])); > print ("\tmaxMem is %s" % (dom_info[1])); > print ("\tmemory is %s" % (dom_info[2])); > print ("\tnrVirtCpu is %s" % (dom_info[3])); > print ("\tcpuTime is %s" % (dom_info[4])); thanks, and sorry for the delay when answering ! Daniel -- Daniel Veillard | Red Hat http://redhat.com/ veillard@xxxxxxxxxx | libxml GNOME XML XSLT toolkit http://xmlsoft.org/ http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/