setns.chcontext('/proc/%s/ns/net'%pid)
if (not options.mntns):
- open('/proc/lxcsu','w').write(pid)
+ setns.chcontext('/proc/%s/ns/mnt'%pid)
if (not options.pidns):
- open('/proc/pidsu','w').write(pid)
+ setns.chcontext('/proc/%s/ns/pid'%pid)
+
+ if (!os.access('/proc/self'):
+ setns.proc_mount()
# cgroups is not yet LXC-safe, so we need to use the course grained access control
# strategy of unmounting the filesystem
#include <fcntl.h>
#include <stdio.h>
#include <asm-generic/unistd.h>
+#include <sys/mount.h>
static PyObject *
chfscontext(PyObject *self, PyObject *args)
out:
return Py_BuildValue("i", sts);
}
+
+static PyObject *
+proc_mount(PyObject *self, PyObject *args)
+{
+ int sts;
+ sts = mount("none","/proc","procfs",0,NULL);
+
+ return Py_BuildValue("i", sts);
+}
+
static PyObject *
chcontext(PyObject *self, PyObject *args)
{
static PyMethodDef SetnsMethods[] =
{
+ {"proc_mount", proc_mount, METH_VARARGS, "Mount a volume via the mount system call."},
{"chcontext", chcontext, METH_VARARGS, "Switch into an lxc container."},
{"chfscontext", chfscontext, METH_VARARGS, "Switch into an lxc container."},
{NULL, NULL, 0, NULL}