[lxc-devel] [PATCH] python3: Allow passing create flags
Serge Hallyn
serge.hallyn at ubuntu.com
Thu Nov 28 03:10:54 UTC 2013
Quoting Stéphane Graber (stgraber at ubuntu.com):
> Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn 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
>
>
> ------------------------------------------------------------------------------
> Rapidly troubleshoot problems before they affect your business. Most IT
> organizations don't have a clear picture of how application performance
> affects their revenue. With AppDynamics, you get 100% visibility into your
> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
> http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
> _______________________________________________
> Lxc-devel mailing list
> Lxc-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lxc-devel
More information about the lxc-devel
mailing list