]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
python: Add python bindings for cgroup_add_all_controllers()
authorTom Hromatka <tom.hromatka@oracle.com>
Fri, 3 Mar 2023 17:58:09 +0000 (10:58 -0700)
committerTom Hromatka <tom.hromatka@oracle.com>
Tue, 28 Mar 2023 17:08:35 +0000 (11:08 -0600)
Add python bindings for adding all controllers to a cgroup
instance via cgroup_add_all_controllers().

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
(cherry picked from commit 176c3ae82b8e5880e3baca15d7f2a26740bc8b17)

src/python/cgroup.pxd
src/python/libcgroup.pyx

index b010658381c813a6a6dbea341dc47930add48c53..1077544154c475d5d317f7efe17354b5819566a6 100644 (file)
@@ -56,6 +56,7 @@ cdef extern from "libcgroup.h":
     void cgroup_free(cgroup **cg)
 
     cgroup_controller *cgroup_add_controller(cgroup *cg, const char *name)
+    int cgroup_add_all_controllers(cgroup *cg)
     cgroup_controller *cgroup_get_controller(cgroup *cg, const char *name)
 
     int cgroup_add_value_string(cgroup_controller *cgc, const char *name,
index 239ae16830d8e21b085e63d4986248ad03768815..81456ace4bf1a0732176aa12811218d2d7da6ea8 100644 (file)
@@ -130,6 +130,28 @@ cdef class Cgroup:
 
         self.controllers[ctrl_name] = Controller(ctrl_name)
 
+    def add_all_controllers(self):
+        """Add all enabled controllers to the Cgroup instance
+
+        Description:
+        Adds all enabled controllers (i.e. all controllers in the cgroup's cgroup.controllers
+        file) to the Cgroup instance
+
+        Note:
+        Reads from the cgroup sysfs
+        """
+        ret = cgroup.cgroup_add_all_controllers(self._cgp)
+        if ret != 0:
+            raise RuntimeError("Failed to add all controllers to cgroup")
+
+        ctrl_cnt = cgroup.cgroup_get_controller_count(self._cgp)
+        for i in range(0, ctrl_cnt):
+            ctrl_ptr = cgroup.cgroup_get_controller_by_index(self._cgp, i)
+            ctrl_name = cgroup.cgroup_get_controller_name(ctrl_ptr).decode('ascii')
+            self.controllers[ctrl_name] = Controller(ctrl_name)
+
+        self._pythonize_cgroup()
+
     def add_setting(self, setting_name, setting_value=None):
         """Add a setting to the Cgroup/Controller instance