[lxc-devel] [PATCH] python3: binding update

Serge Hallyn serge.hallyn at ubuntu.com
Thu Jan 16 19:09:58 UTC 2014


Quoting Stéphane Graber (stgraber at ubuntu.com):
> This adds rename(new_name) to the binding as well as two new const,
> LXC_CLONE_KEEPBDEVTYPE and LXC_CLONE_MAYBE_SNAPSHOT.
> 
> Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
> ---
>  src/python-lxc/lxc.c           | 25 +++++++++++++++++++++++++
>  src/python-lxc/lxc/__init__.py | 14 ++++++++++++++
>  2 files changed, 39 insertions(+)
> 
> diff --git a/src/python-lxc/lxc.c b/src/python-lxc/lxc.c
> index 4381ab8..33b3e41 100644
> --- a/src/python-lxc/lxc.c
> +++ b/src/python-lxc/lxc.c
> @@ -1038,6 +1038,23 @@ Container_reboot(Container *self, PyObject *args, PyObject *kwds)
>  }
>  
>  static PyObject *
> +Container_rename(Container *self, PyObject *args, PyObject *kwds)
> +{
> +    char *new_name = NULL;
> +    static char *kwlist[] = {"new_name", NULL};
> +
> +    if (! PyArg_ParseTupleAndKeywords(args, kwds, "s|", kwlist,
> +                                      &new_name))
> +        return NULL;
> +
> +    if (self->container->rename(self->container, new_name)) {
> +        Py_RETURN_TRUE;
> +    }
> +
> +    Py_RETURN_FALSE;
> +}
> +
> +static PyObject *
>  Container_remove_device_node(Container *self, PyObject *args, PyObject *kwds)
>  {
>      static char *kwlist[] = {"src_path", "dest_path", NULL};
> @@ -1529,6 +1546,12 @@ static PyMethodDef Container_methods[] = {
>       "\n"
>       "Ask the container to reboot."
>      },
> +    {"rename", (PyCFunction)Container_rename,
> +     METH_VARARGS|METH_KEYWORDS,
> +     "rename(new_name) -> boolean\n"
> +     "\n"
> +     "Rename the container."
> +    },
>      {"remove_device_node", (PyCFunction)Container_remove_device_node,
>       METH_VARARGS|METH_KEYWORDS,
>       "remove_device_node(src_path, dest_path) -> boolean\n"
> @@ -1740,8 +1763,10 @@ PyInit__lxc(void)
>      PYLXC_EXPORT_CONST(LXC_ATTACH_SET_PERSONALITY);
>  
>      /* clone: clone flags */
> +    PYLXC_EXPORT_CONST(LXC_CLONE_KEEPBDEVTYPE);
>      PYLXC_EXPORT_CONST(LXC_CLONE_KEEPMACADDR);
>      PYLXC_EXPORT_CONST(LXC_CLONE_KEEPNAME);
> +    PYLXC_EXPORT_CONST(LXC_CLONE_MAYBE_SNAPSHOT);
>      PYLXC_EXPORT_CONST(LXC_CLONE_SNAPSHOT);
>  
>      /* create: create flags */
> diff --git a/src/python-lxc/lxc/__init__.py b/src/python-lxc/lxc/__init__.py
> index 0ca3e54..fa74297 100644
> --- a/src/python-lxc/lxc/__init__.py
> +++ b/src/python-lxc/lxc/__init__.py
> @@ -327,6 +327,18 @@ class Container(_lxc.Container):
>  
>          return ips
>  
> +    def rename(self, new_name):
> +        """
> +            Rename the container.
> +            On success, returns the new Container object.
> +            On failure, returns False.
> +        """
> +
> +        if _lxc.Container.rename(self, new_name):
> +            return Container(new_name)

Does this work?  Will python automatically set self to new_name?

> +
> +        return False
> +
>      def set_config_item(self, key, value):
>          """
>              Set a config key to a provided value.
> @@ -454,8 +466,10 @@ LXC_ATTACH_REMOUNT_PROC_SYS = _lxc.LXC_ATTACH_REMOUNT_PROC_SYS
>  LXC_ATTACH_SET_PERSONALITY = _lxc.LXC_ATTACH_SET_PERSONALITY
>  
>  # clone: clone flags
> +LXC_CLONE_KEEPBDEVTYPE = _lxc.LXC_CLONE_KEEPBDEVTYPE
>  LXC_CLONE_KEEPMACADDR = _lxc.LXC_CLONE_KEEPMACADDR
>  LXC_CLONE_KEEPNAME = _lxc.LXC_CLONE_KEEPNAME
> +LXC_CLONE_MAYBE_SNAPSHOT = _lxc.LXC_CLONE_MAYBE_SNAPSHOT
>  LXC_CLONE_SNAPSHOT = _lxc.LXC_CLONE_SNAPSHOT
>  
>  # create: create flags
> -- 
> 1.8.5.2
> 
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel


More information about the lxc-devel mailing list