Reintroduce setname/getname functions that are used by PlanetFlow
authorAndy Bavier <acb@cs.princeton.edu>
Thu, 3 Dec 2009 16:03:40 +0000 (16:03 +0000)
committerAndy Bavier <acb@cs.princeton.edu>
Thu, 3 Dec 2009 16:03:40 +0000 (16:03 +0000)
python/vserver.py
python/vserverimpl.c

index ed83670..75172c2 100644 (file)
@@ -425,7 +425,12 @@ class VServer:
         subprocess.call("/usr/sbin/vserver %s stop" % self.name, shell=True)
 
     def setname(self, slice_id):
-        pass
+        '''Set vcVHI_CONTEXT field in kernel to slice_id'''
+        vserverimpl.setname(self.ctx, slice_id)
+
+    def getname(self):
+        '''Get vcVHI_CONTEXT field in kernel'''
+        return vserverimpl.getname(self.ctx)
 
 
 def create(vm_name, static = False, ctor = VServer):
index 9d51c58..2232f73 100644 (file)
@@ -640,6 +640,39 @@ vserver_set_runlevel(PyObject *self, PyObject *args)
   return NONE;
 }
 
+static PyObject *
+vserver_set_name(PyObject *self, PyObject *args)
+{
+  xid_t       ctx, slice_id;
+  PyObject    *ret;
+
+  if (!PyArg_ParseTuple(args, "II", &ctx, &slice_id))
+    return NULL;
+
+  if (vc_set_vhi_name(ctx, vcVHI_CONTEXT, (char *)&slice_id, sizeof(slice_id)) != 0 && errno != ESRCH) {
+    return PyErr_SetFromErrno(PyExc_OSError);
+  } else {
+    return NONE;
+  }
+}
+
+static PyObject *
+vserver_get_name(PyObject *self, PyObject *args)
+{
+  xid_t       ctx, slice_id;
+  PyObject    *ret;
+
+  if (!PyArg_ParseTuple(args, "I", &ctx))
+    return NULL;
+
+  if (vc_get_vhi_name(ctx, vcVHI_CONTEXT, (char *)&slice_id, sizeof(slice_id)) != 0) {
+    ret = PyErr_SetFromErrno(PyExc_OSError);
+  } else {
+    ret = Py_BuildValue("i", slice_id);
+  }
+  return ret;
+}
+
 
 static PyMethodDef  methods[] = {
   { "setdlimit", vserver_set_dlimit, METH_VARARGS,
@@ -678,6 +711,10 @@ static PyMethodDef  methods[] = {
     "Perform the umount2() system call" },
   { "setrunlevel", vserver_set_runlevel, METH_VARARGS,
     "Set the runlevel in utmp" },
+  { "setname", vserver_set_name, METH_VARARGS,
+    "Set the vcVHI_CONTEXT for a xid." },
+  { "getname", vserver_get_name, METH_VARARGS,
+    "Get the vcVHI_CONTEXT for a xid." },
   { NULL, NULL, 0, NULL }
 };