From bb711f392740be5874ffaa10bf1b3dae162e6f11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Wed, 27 Nov 2013 19:12:32 -0500 Subject: [PATCH] python3: Allow passing create flags MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber Acked-by: Serge E. Hallyn --- src/python-lxc/lxc.c | 14 +++++++++----- src/python-lxc/lxc/__init__.py | 23 +++++++++++++++-------- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/src/python-lxc/lxc.c b/src/python-lxc/lxc.c index e9a3455f2..050f6ae9d 100644 --- a/src/python-lxc/lxc.c +++ b/src/python-lxc/lxc.c @@ -694,13 +694,14 @@ static PyObject * Container_create(Container *self, PyObject *args, PyObject *kwds) { char* template_name = NULL; + int flags = 0; char** create_args = {NULL}; PyObject *retval = NULL, *vargs = NULL; int i = 0; - static char *kwlist[] = {"template", "args", NULL}; + static char *kwlist[] = {"template", "flags", "args", NULL}; - if (! PyArg_ParseTupleAndKeywords(args, kwds, "s|O", kwlist, - &template_name, &vargs)) + if (! PyArg_ParseTupleAndKeywords(args, kwds, "s|iO", kwlist, + &template_name, &flags, &vargs)) return NULL; if (vargs) { @@ -716,8 +717,8 @@ Container_create(Container *self, PyObject *args, PyObject *kwds) } } - if (self->container->create(self->container, template_name, NULL, NULL, 0, - create_args)) + if (self->container->create(self->container, template_name, NULL, NULL, + flags, create_args)) retval = Py_True; else retval = Py_False; @@ -1536,6 +1537,9 @@ PyInit__lxc(void) PYLXC_EXPORT_CONST(LXC_CLONE_KEEPNAME); PYLXC_EXPORT_CONST(LXC_CLONE_SNAPSHOT); + /* create: create flags */ + PYLXC_EXPORT_CONST(LXC_CREATE_QUIET); + #undef PYLXC_EXPORT_CONST return m; diff --git a/src/python-lxc/lxc/__init__.py b/src/python-lxc/lxc/__init__.py index b900c753d..52f0fb4be 100644 --- a/src/python-lxc/lxc/__init__.py +++ b/src/python-lxc/lxc/__init__.py @@ -229,22 +229,29 @@ class Container(_lxc.Container): return _lxc.Container.set_config_item(self, key, value) - def create(self, template, args={}): + def create(self, template, flags=0, args=()): """ Create a new rootfs for the container. "template" must be a valid template name. - "args" (optional) is a dictionary of parameters and values to pass - to the template. + "flags" (optional) is an integer representing the optional + create flags to be passed. + + "args" (optional) is a tuple of arguments to pass to the + template. It can also be provided as a dict. """ - template_args = [] - for item in args.items(): - template_args.append("--%s" % item[0]) - template_args.append("%s" % item[1]) + if isinstance(args, dict): + template_args = [] + for item in args.items(): + template_args.append("--%s" % item[0]) + template_args.append("%s" % item[1]) + else: + template_args = args - return _lxc.Container.create(self, template, tuple(template_args)) + return _lxc.Container.create(self, template=template, + flags=flags, args=tuple(template_args)) def clone(self, newname, config_path=None, flags=0, bdevtype=None, bdevdata=None, newsize=0, hookargs=()):