Add support for cgxset to the Cgroup class

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

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

diff --git a/ftests/cgroup.py b/ftests/cgroup.py
index 72a200d6b135..06ca45693ae9 100644
--- a/ftests/cgroup.py
+++ b/ftests/cgroup.py
@@ -173,29 +173,8 @@ class Cgroup(object):
             Run.run(cmd)
 
     @staticmethod
-    def set(config, cgname=None, setting=None, value=None, copy_from=None,
-            cghelp=False):
-        """cgset equivalent method
-
-        The following variants of cgset are being tested by the
-        automated functional tests:
-
-        Command                                          Test Number
-        cgset -r setting=value cgname                        various
-        cgset -r setting1=val1 -r setting2=val2
-              -r setting3=val2 cgname                            022
-        cgset --copy_from foo bar                                023
-        cgset --copy_from foo bar1 bar2                          024
-        cgset -r setting=value foo bar                           025
-        cgset -r setting1=value1 setting2=value2 foo bar         026
-        various invalid flag combinations                        027
-        """
-        cmd = list()
-
-        if not config.args.container:
-            cmd.append('sudo')
-        cmd.append(Cgroup.build_cmd_path('cgset'))
-
+    def __set(config, cmd, cgname=None, setting=None, value=None,
+              copy_from=None, cghelp=False):
         if setting is not None or value is not None:
             if isinstance(setting, str) and isinstance(value, str):
                 cmd.append('-r')
@@ -231,6 +210,50 @@ class Cgroup(object):
         else:
             return Run.run(cmd)
 
+    @staticmethod
+    def set(config, cgname=None, setting=None, value=None, copy_from=None,
+            cghelp=False):
+        """cgset equivalent method
+
+        The following variants of cgset are being tested by the
+        automated functional tests:
+
+        Command                                          Test Number
+        cgset -r setting=value cgname                        various
+        cgset -r setting1=val1 -r setting2=val2
+              -r setting3=val2 cgname                            022
+        cgset --copy_from foo bar                                023
+        cgset --copy_from foo bar1 bar2                          024
+        cgset -r setting=value foo bar                           025
+        cgset -r setting1=value1 setting2=value2 foo bar         026
+        various invalid flag combinations                        027
+        """
+        cmd = list()
+        if not config.args.container:
+            cmd.append('sudo')
+        cmd.append(Cgroup.build_cmd_path('cgset'))
+
+        return Cgroup.__set(config, cmd, cgname, setting, value, copy_from,
+                            cghelp)
+
+    @staticmethod
+    def xset(config, cgname=None, setting=None, value=None, copy_from=None,
+             version=CgroupVersion.CGROUP_UNK, cghelp=False):
+        """cgxset equivalent method
+        """
+        cmd = list()
+        if not config.args.container:
+            cmd.append('sudo')
+        cmd.append(Cgroup.build_cmd_path('cgxset'))
+
+        if version == CgroupVersion.CGROUP_V1:
+            cmd.append('-1')
+        elif version == CgroupVersion.CGROUP_V2:
+            cmd.append('-2')
+
+        return Cgroup.__set(config, cmd, cgname, setting, value, copy_from,
+                            cghelp)
+
     @staticmethod
     def __get(config, cmd, controller=None, cgname=None, setting=None,
               print_headers=True, values_only=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