]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
ftests: Add method to determine if a controller is enabled in a cgroup
authorTom Hromatka <tom.hromatka@oracle.com>
Fri, 27 Jan 2023 20:43:45 +0000 (13:43 -0700)
committerTom Hromatka <tom.hromatka@oracle.com>
Fri, 27 Jan 2023 20:43:45 +0000 (13:43 -0700)
Add a method, is_controller_enabled(), that will determine if a
controller is enabled in a cgroup v2 cgroup.

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
tests/ftests/cgroup.py

index d5fd1d00d9a8fe2f44e6a9afe17408e57c214ae6..9b3ecf58ccac6abc7e9b130b6499c43c252a1574 100644 (file)
@@ -1005,6 +1005,24 @@ class Cgroup(object):
         else:
             raise CgroupError('Unknown cgroup mode')
 
+    @staticmethod
+    def is_controller_enabled(config, cgroup_name, ctrl_name):
+        ctrl_path = Cgroup.__get_controller_mount_point_v2(ctrl_name)
+        parent_cgname = os.path.dirname(cgroup_name)
+
+        subtree_path = os.path.join(ctrl_path, parent_cgname, 'cgroup.subtree_control')
+        cmd = ['cat', subtree_path]
+
+        if config.args.container:
+            controllers = config.container.run(cmd, shell_bool=True)
+        else:
+            controllers = Run.run(cmd, shell_bool=True)
+
+        for controller in controllers.split():
+            if controller == ctrl_name:
+                return True
+
+        return False
 
 class CgroupError(Exception):
     def __init__(self, message):