]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
cgroup.py: Add support for cgexec
authorTom Hromatka <tom.hromatka@oracle.com>
Mon, 17 May 2021 14:04:37 +0000 (14:04 +0000)
committerTom Hromatka <tom.hromatka@oracle.com>
Mon, 24 May 2021 15:42:20 +0000 (09:42 -0600)
Add support for cgexec to the Cgroup class.

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
ftests/cgroup.py

index 31e06bd79b4a0039c5a275ba1e2f9d09e128fc9b..32b9530ead3180a5c0c59b605043c503919b7bf1 100644 (file)
@@ -783,3 +783,34 @@ class Cgroup(object):
                     raise re
 
         return ret
+
+    # exec is a keyword in python, so let's name this function cgexec
+    @staticmethod
+    def cgexec(config, controller, cgname, cmdline, sticky=False,
+               cghelp=False):
+        """cgexec equivalent method
+        """
+        cmd = list()
+
+        if not config.args.container:
+            cmd.append('sudo')
+        cmd.append(Cgroup.build_cmd_path('cgexec'))
+        cmd.append('-g')
+        cmd.append('{}:{}'.format(controller, cgname))
+
+        if sticky:
+            cmd.append('--sticky')
+
+        if isinstance(cmdline, str):
+            cmd.append(cmdline)
+        elif isinstance(cmdline, list):
+            for entry in cmdline:
+                cmd.append(entry)
+
+        if cghelp:
+            cmd.append('-h')
+
+        if config.args.container:
+            return config.container.run(cmd, shell_bool=True)
+        else:
+            return Run.run(cmd, shell_bool=True)