Absolutely, especially the Python bit!  I wrote a psuedo-OO wrapper
for OpenVZ (basically makes a bunch of vzctl calls at a higher layer
of abstraction so you can/start/stop/configure large numbers of
containers) and was thinking about writing something similar for LXC
that called the lxc-* BUT always I'm always a feel a little weird
about calling .sh from .py so the .c wrappers would be awesome.

- mdf

On Thu, Jun 7, 2012 at 5:57 PM, Serge Hallyn <serge.hal...@canonical.com> wrote:
> Hi,
>
> we've been talking (including a session at UDS) about getting a nice
> API out of liblxc, with exports to python etc.  This could be used: to
> easily replace some of the tools which are currently scripts;  to
> increase code sharing with other projects - most immediately arkose and
> libvirt;  and to make automated testing easier.
>
> I tried my hand at implementing the start of that at
> https://code.launchpad.net/~serge-hallyn/+junk/lxcwithapi .
> The api is in src/lxc/lxccontainer.h, and the testcases in src/tests show
> how to use it.  For instance, you could
>
>        struct lxc_container *c;
>        c = lxc_container_new("p1");
>        if (!c->load_config(c, NULL)) {
>                EXIT_FAIL("Loading configuration file %s for %s\n",
>                    c->configfile, c->name);
>        }
>
>        c->want_daemonize(c);
>        if (!c->start(c, 0, NULL)) {
>                EXIT_FAIL("failed to start container %s\n", c->name);
>        }
>
>        if (!c->wait(c, "RUNNING")) {
>                EXIT_FAIL("failed waiting for %s to be RUNNING\n",
>                c->name);
>        }
>
>        INFO("container %s is running\n", c->name);
>        lxc_container_put(c);
>
> or, presumably in python (once the wrappers are there)
>
>        c = LXC.lxc()
>        c->want_daemonize()
>        c->start()
>        c->wait("RUNNING")
>
> The bits of the api i've implemented may be all we need for arkose to
> switch from using lxc-start etc binaries to using the api (not sure,
> Stéphane can yell at me if not).
>
> I had to do a little bit of shuffling liblxc code around to let me
> reuse it, but far less so than I'd expected!
>
> Does this seem worthwhile?  Comments - or competing implementations -
> greatly appreciated.
>
> thanks,
> -serge
>
> ------------------------------------------------------------------------------
> Live Security Virtual Conference
> Exclusive live event will cover all the ways today's security and
> threat landscape has changed and how IT managers can respond. Discussions
> will include endpoint security, mobile security and the latest in malware
> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
> _______________________________________________
> Lxc-devel mailing list
> Lxc-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lxc-devel



-- 
--
Matthew Franz
mdfr...@gmail.com

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to