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

Stéphane Graber stgraber at ubuntu.com
Thu Jan 16 18:14:22 UTC 2014


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)
+
+        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



More information about the lxc-devel mailing list