[libvirt] Python listDefinedDomains broken?

Marc Richter mr at in-telegence.net
Wed Jun 1 12:49:26 UTC 2016


Hi everyone,

please, don't roast me if I'm asking stupid things or fail to provide 
info, since I'm a freshman, using libvirt.

I have two servers, both running the following versions:

Compiled against library: libvirt 1.3.1
Using library: libvirt 1.3.1
Using API: QEMU 1.3.1
Running hypervisor: QEMU 0.14.0

I'm trying to create a Python program, which gets a list of all defined 
domains for each host and give a list for domains only defined on one of 
these hosts. This Python script is running on a third host (my 
workstation), using these versions:

Python: 3.5.1
libvirt-python: 1.3.1

When I'm running virsh on my workstation (version 1.3.1), like this:

virsh -c 
"qemu+ssh://root@host1/system?keyfile=/home/user/.ssh/id_rsa_libvirt" 
--readonly list --all

Then a domain named "winxp_ausgeschaltet" is within that list:


  Id    Name                           State
----------------------------------------------------
...
  -     winxp_ausgeschaltet            shut off


When I do the same for the second host, it is also in that list:


  Id    Name                           State
----------------------------------------------------
...
  7     winxp_ausgeschaltet            running


When I do the following in Python, this domain is listed for the first 
host (where it's state is "shut off"), but not for the second one:


import libvirt
import sys

class kvmhost:
     def __init__(self, host, keyfile):
         self.conn = self.connect_kvm(host, keyfile)
         self.doms = sorted(self.get_doms())
     def connect_kvm(self, host, keyfile):
         try:
             conn = libvirt.openReadOnly('qemu+ssh://root@' + host + 
'/system?keyfile=' + keyfile)
         except libvirt.libvirtError as lve:
             print('Error: ' + str(lve))
             sys.exit(1)
         return conn
     def get_doms(self):
         try:
             alldoms = self.conn.listDefinedDomains()
         except libvirt.libvirtError as lve:
             print('Error: ' + str(lve))
             self.conn.close()
             sys.exit(1)
         return alldoms

host1 = kvmhost('host1', '/path/to/ssh_keyfile')
host2 = kvmhost('host2', '/path/to/ssh_keyfile')

print(host1.doms)
print(host2.doms)


What am I doing wrong here or: is there a missbehavior in libvirt or the 
python module?

Using listAllDomains instead of listDefinedDomains gives:

libvirt: Remote Driver error : unknown procedure: 273

What is the difference between listAllDomains and listDefinedDomains at all?

Thanks for your help.

Marc




More information about the libvir-list mailing list