libvirt/python
Daniel P. Berrange 3d1596b048 Introduce an LXC specific public API & library
This patch introduces support for LXC specific public APIs. In
common with what was done for QEMU, this creates a libvirt_lxc.so
library and libvirt/libvirt-lxc.h header file.

The actual APIs are

  int virDomainLxcOpenNamespace(virDomainPtr domain,
                                int **fdlist,
                                unsigned int flags);

  int virDomainLxcEnterNamespace(virDomainPtr domain,
                                 unsigned int nfdlist,
                                 int *fdlist,
                                 unsigned int *noldfdlist,
                                 int **oldfdlist,
                                 unsigned int flags);

which provide a way to use the setns() system call to move the
calling process into the container's namespace. It is not
practical to write in a generically applicable manner. The
nearest that we could get to such an API would be an API which
allows to pass a command + argv to be executed inside a
container. Even if we had such a generic API, this LXC specific
API is still useful, because it allows the caller to maintain
the current process context, in particular any I/O streams they
have open.

NB the virDomainLxcEnterNamespace() API is special in that it
runs client side, so does not involve the internal driver API.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2013-01-14 13:58:34 +00:00
..
tests python: Fix doc directory name for stable releases 2012-04-27 12:41:05 -04:00
Makefile.am Introduce an LXC specific public API & library 2013-01-14 13:58:34 +00:00
README Re-arrange python generator to make it clear what's auto-generated 2009-09-21 14:41:46 +01:00
TODO syntax-check: enforce the no-cvs-keywords prohibition 2008-12-15 10:24:54 +00:00
generator.py Introduce an LXC specific public API & library 2013-01-14 13:58:34 +00:00
libvirt-lxc-override-api.xml Introduce an LXC specific public API & library 2013-01-14 13:58:34 +00:00
libvirt-lxc-override.c Introduce an LXC specific public API & library 2013-01-14 13:58:34 +00:00
libvirt-override-api.xml virNodeGetCPUMap: Add python binding 2012-10-25 11:34:35 -06:00
libvirt-override-virConnect.py Bind connection close callback APIs to python binding 2012-12-04 13:50:11 +00:00
libvirt-override-virDomain.py list: provide python bindings for snapshots 2012-06-19 13:50:03 -06:00
libvirt-override-virDomainSnapshot.py list: provide python bindings for snapshots 2012-06-19 13:50:03 -06:00
libvirt-override-virStoragePool.py list: Expose virStoragePoolListAllVolumes to Python binding 2012-09-10 10:41:18 +08:00
libvirt-override-virStream.py python: correct a copy-paste error 2012-02-01 10:26:57 +01:00
libvirt-override.c Rename util.{c,h} to virutil.{c,h} 2012-12-21 11:19:49 +00:00
libvirt-override.py Fix two comments related to error handling 2011-10-17 17:21:56 +02:00
libvirt-qemu-override-api.xml agent: add python module support 2012-08-23 19:07:53 +08:00
libvirt-qemu-override.c agent: add python module support 2012-08-23 19:07:53 +08:00
typewrappers.c Rename memory.{c,h} to viralloc.{c,h} 2012-12-21 11:17:14 +00:00
typewrappers.h python: Add new helper functions for python to C integral conversion 2012-03-28 08:42:40 -06:00

README

    libvirt Python Bindings README
    ==============================

Most of the libvirt python binding code is automatically generated
using the script  generator.py, and the API description from
docs/libvirt-api.xml


Manually written files:

 - libvirt-override.c: methods where the C binding needs to be hand crafted
 - libvirt-override.py: global methods where the C and python bindings have different args
 - libvirt-override-api.xml: methods where the auto-extracted API docs are not
   suitable for python auto-generator. Overriding this if the method is going
   into libvirt-override.c, but we still want auto-generated libvirt-override.py
 - libvirt-override-virConnect.py: virConnect class methods
 - typewrappers.h,.c: Python object wrappers for each libvirt C object


Auto-generated files:

  - libvirt.py: The main python binding. Comprises auto-generated code, along
    with contents from libvirt-override.py and libvirt-override-virConnect.py
  - libvirt.c, libvirt.h: The C glue layer for the python binding. Comprises
    auto-generated code, along with libvirt-override.c
  - libvirt-export.c: List of auto-generated C methods, included into
    the libvirt-override.c method table