
On Fri, Sep 09, 2011 at 07:24:40PM +0800, Osier Yang wrote:
This patchset is to expose QEMU APIs to Python binding, as we don't intend to support the QEMU APIs officially, it's exposed seperately with general libvirt APIs with standalone libvirt_qemu.py and libvirtmod_qemu.so. And there is no class for QEMU APIs, there are written directly as function in libvirt_qemu.py.
How to use the APIs.
#! /usr/bin/python -u import libvirt import libvirt_qemu
conn = libvirt.open(None) dom = conn.lookupByName('test')
print libvirt_qemu.qemuMonitorCommand(dom, 'info blockstats', 1) libvirt_qemu.qemuAttach(conn, 2307, 0)
This feels like rather a strange way to expose this in Python. We currently have 'libvirt.Connection' and 'libvirt.Domain' objects in the Python binding.
conn = libvirt.open(None)
This is giving us a libvirt.Connection object.
dom = conn.lookupByName('test')
This is giving us a libvirt.Domain object.
print libvirt_qemu.qemuMonitorCommand(dom, 'info blockstats', 1)
And this is just wierd. What I think is that we should have a 'libvirt_qemu.QemuConnection' object which is a subclass of 'libvirt.Connection', and 'libvirt_qemu.QemuDomain' object which is a subclass of libvirt.Domain' which adds the new QEMU specific method 'qemuMonitorCommand'. So the example usage would end up being
#! /usr/bin/python -u import libvirt import libvirt_qemu
conn = libvirt_qemu.open(None)
This would be a libvirt_qemu.QemuConnection object.
dom = conn.lookupByName('test')
And this would thus now be a libvirt_qemu.QemuDomain object, so that finally you can simply do
dom.qemuMonitorCommand('info blockstats', 1)
# cat libvirt_qemu.py def open(name) ....call libvirt.open and turn the result into a libvirt_qemu.QemuConnection object class QemuConnection(libvirt.Connection): def __init__(....) ... def lookupByName(name) ...call original lookupByName method and turn the result into a libvirt_qemu.Domain object instead class QemuDomain(libvirt.Domain): def __init__(....) ... def qemuMonitorCommand(cmd, flags) ... Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|