]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
tests/cgroup: Add None as controller get_controller_mount_point()
authorKamalesh Babulal <kamalesh.babulal@oracle.com>
Fri, 10 Feb 2023 21:50:51 +0000 (14:50 -0700)
committerTom Hromatka <tom.hromatka@oracle.com>
Fri, 10 Feb 2023 21:55:18 +0000 (14:55 -0700)
Cgroup hybrid/unified setup modes support creating cgroups without
attaching them to any controller.  Enhance get_controller_mount_point()
to support 'None' as a valid controller and return a mount point.

Hybrid Setup
------------
>>> from cgroup import Cgroup
>>> Cgroup.get_controller_mount_point(None)
'/sys/fs/cgroup/unified'

Unified Setup
-------------
>>> from cgroup import Cgroup
>>> Cgroup.get_controller_mount_point(None)
'/sys/fs/cgroup'

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

tests/ftests/cgroup.py

index 9b3ecf58ccac6abc7e9b130b6499c43c252a1574..8e27d7f25553bcc4bd6a5f2a61b3742adc9b2899 100644 (file)
@@ -723,6 +723,10 @@ class Cgroup(object):
             for line in mntf.readlines():
                 mnt_path = line.split()[1]
 
+                if ctrl_name is None:
+                    if line.split()[0] == 'cgroup2':
+                        return mnt_path
+
                 if line.split()[0] == 'cgroup':
                     for option in line.split()[3].split(','):
                         if option == ctrl_name:
@@ -740,6 +744,9 @@ class Cgroup(object):
                 mnt_path = line.split()[1]
 
                 if line.split()[0] == 'cgroup2':
+                    if ctrl_name is None:
+                        return mnt_path
+
                     ctrl_file = os.path.join(line.split()[1],
                                              'cgroup.controllers')
 
@@ -756,7 +763,16 @@ class Cgroup(object):
 
     @staticmethod
     def get_controller_mount_point(ctrl_name):
-        vers = CgroupVersion.get_version(ctrl_name)
+        if ctrl_name is None:
+            mode = int(Cgroup.get_cgroup_mode(None))
+            # map return modes:
+            # CGROUP_MODE_LEGACY/CGROUP_MODE_HYBRID ->  CgroupVersion.CGROUP_V1
+            # CGROUP_MODE_UNIFIED -> CgroupVersion.CGROUP_V2
+            if mode >= 2:
+                mode = mode - 1
+            vers = CgroupVersion(mode)
+        else:
+            vers = CgroupVersion.get_version(ctrl_name)
 
         if vers == CgroupVersion.CGROUP_V1:
             return Cgroup.__get_controller_mount_point_v1(ctrl_name)