Add support for cgxget to the Cgroup class

The pydoc for Cgroup.xget() is available by running:
        $ python -c "from cgroup import Cgroup;help(Cgroup.xget)"

Signed-off-by: Tom Hromatka <tom.hroma...@oracle.com>
---
 ftests/cgroup.py | 82 +++++++++++++++++++++++++++++++++---------------
 1 file changed, 56 insertions(+), 26 deletions(-)

diff --git a/ftests/cgroup.py b/ftests/cgroup.py
index d3a3dfc25e4f..72a200d6b135 100644
--- a/ftests/cgroup.py
+++ b/ftests/cgroup.py
@@ -232,32 +232,9 @@ class Cgroup(object):
             return Run.run(cmd)
 
     @staticmethod
-    def get(config, controller=None, cgname=None, setting=None,
-            print_headers=True, values_only=False,
-            all_controllers=False, cghelp=False):
-        """cgget equivalent method
-
-        Returns:
-        str: The stdout result of cgget
-
-        The following variants of cgget() are being tested by the
-        automated functional tests:
-
-        Command                                          Test Number
-        cgget -r cpuset.cpus mycg                                001
-        cgget -r cpuset.cpus -r cpuset.mems mycg                 008
-        cgget -g cpu mycg                                        009
-        cgget -g cpu:mycg                                        010
-        cgget -r cpuset.cpus mycg1 mycg2                         011
-        cgget -r cpuset.cpus -r cpuset.mems mycg1 mycg2          012
-        cgget -g cpu -g freezer mycg                             013
-        cgget -a mycg                                            014
-        cgget -r memory.stat mycg (multiline value read)         015
-        various invalid flag combinations                        016
-        """
-        cmd = list()
-        cmd.append(Cgroup.build_cmd_path('cgget'))
-
+    def __get(config, cmd, controller=None, cgname=None, setting=None,
+              print_headers=True, values_only=False,
+              all_controllers=False, cghelp=False):
         if not print_headers:
             cmd.append('-n')
         if values_only:
@@ -318,6 +295,59 @@ class Cgroup(object):
 
         return ret
 
+    @staticmethod
+    def get(config, controller=None, cgname=None, setting=None,
+            print_headers=True, values_only=False,
+            all_controllers=False, cghelp=False):
+        """cgget equivalent method
+
+        Returns:
+        str: The stdout result of cgget
+
+        The following variants of cgget() are being tested by the
+        automated functional tests:
+
+        Command                                          Test Number
+        cgget -r cpuset.cpus mycg                                001
+        cgget -r cpuset.cpus -r cpuset.mems mycg                 008
+        cgget -g cpu mycg                                        009
+        cgget -g cpu:mycg                                        010
+        cgget -r cpuset.cpus mycg1 mycg2                         011
+        cgget -r cpuset.cpus -r cpuset.mems mycg1 mycg2          012
+        cgget -g cpu -g freezer mycg                             013
+        cgget -a mycg                                            014
+        cgget -r memory.stat mycg (multiline value read)         015
+        various invalid flag combinations                        016
+        """
+        cmd = list()
+        cmd.append(Cgroup.build_cmd_path('cgget'))
+
+        return Cgroup.__get(config, cmd, controller, cgname, setting,
+                            print_headers, values_only, all_controllers,
+                            cghelp)
+
+    @staticmethod
+    def xget(config, controller=None, cgname=None, setting=None,
+             print_headers=True, values_only=False,
+             all_controllers=False, version=CgroupVersion.CGROUP_UNK,
+             cghelp=False):
+        """cgxget equivalent method
+
+        Returns:
+        str: The stdout result of cgxget
+        """
+        cmd = list()
+        cmd.append(Cgroup.build_cmd_path('cgxget'))
+
+        if version == CgroupVersion.CGROUP_V1:
+            cmd.append('-1')
+        elif version == CgroupVersion.CGROUP_V2:
+            cmd.append('-2')
+
+        return Cgroup.__get(config, cmd, controller, cgname, setting,
+                            print_headers, values_only, all_controllers,
+                            cghelp)
+
     @staticmethod
     def classify(config, controller, cgname, pid_list, sticky=False,
                  cancel_sticky=False):
-- 
2.25.1



_______________________________________________
Libcg-devel mailing list
Libcg-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libcg-devel

Reply via email to