[lxc-devel] [PATCH] python3: Allow passing create flags

Stéphane Graber stgraber at ubuntu.com
Thu Nov 28 00:21:29 UTC 2013


Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 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 e9a3455..050f6ae 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 b900c75..52f0fb4 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=()):
-- 
1.8.4.4





More information about the lxc-devel mailing list