Signed-off-by: Christian Seiler <[email protected]>
---
src/python-lxc/lxc.c | 36 ++++++++++++++++++++++++++++--------
src/python-lxc/lxc/__init__.py | 6 ++++++
2 files changed, 34 insertions(+), 8 deletions(-)
diff --git a/src/python-lxc/lxc.c b/src/python-lxc/lxc.c
index f4de169..b2abf38 100644
--- a/src/python-lxc/lxc.c
+++ b/src/python-lxc/lxc.c
@@ -25,6 +25,7 @@
#include "structmember.h"
#include <lxc/lxccontainer.h>
#include <lxc/utils.h>
+#include <lxc/namespace.h>
#include <stdio.h>
#include <sys/wait.h>
@@ -718,6 +719,8 @@ static int lxc_attach_python_exec(void* _payload)
return -1;
}
+static void lxc_attach_free_options(lxc_attach_options_t *options);
+
static lxc_attach_options_t *lxc_attach_parse_options(PyObject *kwds)
{
static char *kwlist[] = {"attach_flags", "namespaces", "personality",
"initial_cwd", "uid", "gid", "env_policy", "extra_env_vars", "extra_keep_env",
"stdin", "stdout", "stderr", NULL};
@@ -1170,14 +1173,31 @@ PyInit__lxc(void)
/* add constants */
d = PyModule_GetDict(m);
- PyDict_SetItemString(d, "LXC_ATTACH_KEEP_ENV",
PyLong_FromLong(LXC_ATTACH_KEEP_ENV));
- PyDict_SetItemString(d, "LXC_ATTACH_CLEAR_ENV",
PyLong_FromLong(LXC_ATTACH_CLEAR_ENV));
- PyDict_SetItemString(d, "LXC_ATTACH_MOVE_TO_CGROUP",
PyLong_FromLong(LXC_ATTACH_MOVE_TO_CGROUP));
- PyDict_SetItemString(d, "LXC_ATTACH_DROP_CAPABILITIES",
PyLong_FromLong(LXC_ATTACH_DROP_CAPABILITIES));
- PyDict_SetItemString(d, "LXC_ATTACH_SET_PERSONALITY",
PyLong_FromLong(LXC_ATTACH_SET_PERSONALITY));
- PyDict_SetItemString(d, "LXC_ATTACH_APPARMOR",
PyLong_FromLong(LXC_ATTACH_APPARMOR));
- PyDict_SetItemString(d, "LXC_ATTACH_REMOUNT_PROC_SYS",
PyLong_FromLong(LXC_ATTACH_REMOUNT_PROC_SYS));
- PyDict_SetItemString(d, "LXC_ATTACH_DEFAULT",
PyLong_FromLong(LXC_ATTACH_DEFAULT));
+
+ #define PYLXC_EXPORT_CONST(c) PyDict_SetItemString(d, #c,
PyLong_FromLong(c))
+
+ /* environment variable handling */
+ PYLXC_EXPORT_CONST(LXC_ATTACH_KEEP_ENV);
+ PYLXC_EXPORT_CONST(LXC_ATTACH_CLEAR_ENV);
+
+ /* attach options */
+ PYLXC_EXPORT_CONST(LXC_ATTACH_MOVE_TO_CGROUP);
+ PYLXC_EXPORT_CONST(LXC_ATTACH_DROP_CAPABILITIES);
+ PYLXC_EXPORT_CONST(LXC_ATTACH_SET_PERSONALITY);
+ PYLXC_EXPORT_CONST(LXC_ATTACH_APPARMOR);
+ PYLXC_EXPORT_CONST(LXC_ATTACH_REMOUNT_PROC_SYS);
+ PYLXC_EXPORT_CONST(LXC_ATTACH_DEFAULT);
+
+ /* namespace flags (no other python lib exports this) */
+ PYLXC_EXPORT_CONST(CLONE_NEWUTS);
+ PYLXC_EXPORT_CONST(CLONE_NEWIPC);
+ PYLXC_EXPORT_CONST(CLONE_NEWUSER);
+ PYLXC_EXPORT_CONST(CLONE_NEWPID);
+ PYLXC_EXPORT_CONST(CLONE_NEWNET);
+ PYLXC_EXPORT_CONST(CLONE_NEWNS);
+
+ #undef PYLXC_EXPORT_CONST
+
return m;
}
diff --git a/src/python-lxc/lxc/__init__.py b/src/python-lxc/lxc/__init__.py
index 1748bac..95d33e5 100644
--- a/src/python-lxc/lxc/__init__.py
+++ b/src/python-lxc/lxc/__init__.py
@@ -459,3 +459,9 @@ LXC_ATTACH_SET_PERSONALITY = _lxc.LXC_ATTACH_SET_PERSONALITY
LXC_ATTACH_APPARMOR = _lxc.LXC_ATTACH_APPARMOR
LXC_ATTACH_REMOUNT_PROC_SYS = _lxc.LXC_ATTACH_REMOUNT_PROC_SYS
LXC_ATTACH_DEFAULT = _lxc.LXC_ATTACH_DEFAULT
+CLONE_NEWUTS = _lxc.CLONE_NEWUTS
+CLONE_NEWIPC = _lxc.CLONE_NEWIPC
+CLONE_NEWUSER = _lxc.CLONE_NEWUSER
+CLONE_NEWPID = _lxc.CLONE_NEWPID
+CLONE_NEWNET = _lxc.CLONE_NEWNET
+CLONE_NEWNS = _lxc.CLONE_NEWNS
--
1.7.10.4
------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
_______________________________________________
Lxc-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/lxc-devel