[libvirt] [PATCH 0/7] Expose QEMU APIs to Python binding
Daniel P. Berrange
berrange at redhat.com
Mon Sep 12 14:29:32 UTC 2011
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 :|
More information about the libvir-list
mailing list