]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
qa/cephfs: move run_shell and related methods to mount.py
authorRishabh Dave <ridave@redhat.com>
Fri, 24 Jan 2020 10:40:58 +0000 (16:10 +0530)
committerRishabh Dave <ridave@redhat.com>
Thu, 19 Mar 2020 20:41:54 +0000 (02:11 +0530)
LocalFuseMout and LocalKernelMount can directly inherit these methods
from CephFSMount via FuseMount and KernelMount respectively. Moving
would avoid duplication and would make these methods more accessible
for reusing via inheritance.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
qa/tasks/cephfs/mount.py
qa/tasks/vstart_runner.py

index b48be1d2dddd20e3dbd68e945f2bcc25ba2da26d..3511515fda5be233a95a8a6e5426efc43934c67b 100644 (file)
@@ -193,15 +193,55 @@ class CephFSMount(object):
         return six.ensure_str(p.stdout.getvalue().strip())
 
     def run_shell(self, args, wait=True, stdin=None, check_status=True,
-                  omit_sudo=True):
+                  cwd=None, omit_sudo=True):
+        args = args.split() if isinstance(args, str) else args
+        if not cwd:
+            cwd = self.mountpoint
+
+        return self.client_remote.run(args=args, stdin=stdin, wait=wait,
+                                      stdout=BytesIO(), stderr=BytesIO(),
+                                      cwd=cwd, check_status=check_status)
+
+    def run_as_user(self, args, user, wait=True, stdin=None,
+                    check_status=True, cwd=None):
+        if isinstance(args, str):
+            args = 'sudo -u %s -s /bin/bash -c %s' % (user, args)
+        elif isinstance(args, list):
+            cmdlist = args
+            cmd = ''
+            for i in cmdlist:
+                cmd = cmd + i + ' '
+            args = ['sudo', '-u', user, '-s', '/bin/bash', '-c']
+            args.append(cmd)
+        if not cwd:
+            cwd = self.mountpoint
+
+        return self.client_remote.run(args=args, wait=wait, stdin=stdin,
+                                      stdout=BytesIO(), stderr=BytesIO(),
+                                      check_status=check_status, cwd=cwd)
+
+    def run_as_root(self, args, wait=True, stdin=None, check_status=True,
+                    cwd=None):
         if isinstance(args, str):
-            args = args.split()
+            args = 'sudo ' + args
+        if isinstance(args, list):
+            args.insert(0, 'sudo')
+        if not cwd:
+            cwd = self.mountpoint
+
+        return self.client_remote.run(args=args, wait=wait, stdin=stdin,
+                                      stdout=BytesIO(), stderr=BytesIO(),
+                                      check_status=check_status, cwd=cwd)
+
+    def testcmd(self, args, wait=True, stdin=None, cwd=None, omit_sudo=True):
+        return self.run_shell(args=args, wait=wait, stdin=stdin, cwd=cwd)
+
+    def testcmd_as_user(self, args, user, wait=True, stdin=None, cwd=None):
+        return self.run_as_user(args=args, user=user, wait=wait, stdin=stdin,
+                                cwd=cwd)
 
-        args = ["cd", self.mountpoint, run.Raw('&&'), "sudo"] + args
-        return self.client_remote.run(args=args, stdout=BytesIO(),
-                                      stderr=BytesIO(), wait=wait,
-                                      stdin=stdin, check_status=check_status,
-                                      omit_sudo=omit_sudo)
+    def testcmd_as_root(self, args, wait=True, stdin=None, cwd=None):
+        return self.run_as_root(args=args, wait=wait, stdin=stdin, cwd=cwd)
 
     def open_no_data(self, basename):
         """
index 7055ebb7c9d8d71fe8eb5285704932e584e9c97b..ff71eafdda1d83a48c28593bb0423cda3a79dddd 100644 (file)
@@ -500,7 +500,6 @@ def safe_kill(pid):
         else:
             raise
 
-
 class LocalKernelMount(KernelMount):
     def __init__(self, ctx, test_dir, client_id):
         super(LocalKernelMount, self).__init__(ctx, test_dir, client_id, LocalRemote(), None, None, None)
@@ -520,67 +519,6 @@ class LocalKernelMount(KernelMount):
         else:
             return keyring_path
 
-    def run_shell(self, args, wait=True, stdin=None, check_status=True,
-                  omit_sudo=False):
-        # FIXME maybe should add a pwd arg to teuthology.orchestra so that
-        # the "cd foo && bar" shenanigans isn't needed to begin with and
-        # then we wouldn't have to special case this
-        return self.client_remote.run(args=args, wait=wait, cwd=self.mountpoint,
-                                      stdin=stdin, check_status=check_status,
-                                      omit_sudo=omit_sudo)
-
-    def run_as_user(self, args, user, wait=True, stdin=None, check_status=True):
-        # FIXME maybe should add a pwd arg to teuthology.orchestra so that
-        # the "cd foo && bar" shenanigans isn't needed to begin with and
-        # then we wouldn't have to special case this
-        if isinstance(args, str):
-            args = 'sudo -u %s -s /bin/bash -c %s' % (user, args)
-        elif isinstance(args, list):
-            cmdlist = args
-            cmd = ''
-            for i in cmdlist:
-                cmd = cmd + i + ' '
-            args = ['sudo', '-u', user, '-s', '/bin/bash', '-c']
-            args.append(cmd)
-
-        return self.client_remote.run(args=args, wait=wait, cwd=self.mountpoint,
-                                      check_status=check_status, stdin=stdin,
-                                      omit_sudo=False)
-
-    def run_as_root(self, args, wait=True, stdin=None, check_status=True):
-        # FIXME maybe should add a pwd arg to teuthology.orchestra so that
-        # the "cd foo && bar" shenanigans isn't needed to begin with and
-        # then we wouldn't have to special case this
-        if isinstance(args, str):
-            args = 'sudo ' + args
-        if isinstance(args, list):
-            args.insert(0, 'sudo')
-
-        return self.client_remote.run(args=args, wait=wait, cwd=self.mountpoint,
-                                      check_status=check_status,
-                                      omit_sudo=False)
-
-    def testcmd(self, args, wait=True, stdin=None, omit_sudo=False):
-        # FIXME maybe should add a pwd arg to teuthology.orchestra so that
-        # the "cd foo && bar" shenanigans isn't needed to begin with and
-        # then we wouldn't have to special case this
-        return self.run_shell(args, wait=wait, stdin=stdin, check_status=False,
-                              omit_sudo=omit_sudo)
-
-    def testcmd_as_user(self, args, user, wait=True, stdin=None):
-        # FIXME maybe should add a pwd arg to teuthology.orchestra so that
-        # the "cd foo && bar" shenanigans isn't needed to begin with and
-        # then we wouldn't have to special case this
-        return self.run_as_user(args, user=user, wait=wait, stdin=stdin,
-                                check_status=False)
-
-    def testcmd_as_root(self, args, wait=True, stdin=None):
-        # FIXME maybe should add a pwd arg to teuthology.orchestra so that
-        # the "cd foo && bar" shenanigans isn't needed to begin with and
-        # then we wouldn't have to special case this
-        return self.run_as_root(args, wait=wait, stdin=stdin,
-                                check_status=False)
-
     def setupfs(self, name=None):
         if name is None and self.fs is not None:
             # Previous mount existed, reuse the old name
@@ -709,66 +647,6 @@ class LocalFuseMount(FuseMount):
         # to avoid assumptions about daemons' pwd
         return os.path.abspath("./client.{0}.keyring".format(self.client_id))
 
-    def run_shell(self, args, wait=True, stdin=None, check_status=True, omit_sudo=True):
-        # FIXME maybe should add a pwd arg to teuthology.orchestra so that
-        # the "cd foo && bar" shenanigans isn't needed to begin with and
-        # then we wouldn't have to special case this
-        return self.client_remote.run(args=args, wait=wait, cwd=self.mountpoint,
-                                      stdin=stdin, check_status=check_status,
-                                      omit_sudo=omit_sudo)
-
-    def run_as_user(self, args, user, wait=True, stdin=None, check_status=True):
-        # FIXME maybe should add a pwd arg to teuthology.orchestra so that
-        # the "cd foo && bar" shenanigans isn't needed to begin with and
-        # then we wouldn't have to special case this
-        if isinstance(args, str):
-            args = 'sudo -u %s -s /bin/bash -c %s' % (user, args)
-        elif isinstance(args, list):
-            cmdlist = args
-            cmd = ''
-            for i in cmdlist:
-                cmd = cmd + i + ' '
-            args = ['sudo', '-u', user, '-s', '/bin/bash', '-c']
-            args.append(cmd)
-
-        return self.client_remote.run(args=args, wait=wait, cwd=self.mountpoint,
-                                      check_status=check_status, stdin=stdin,
-                                      omit_sudo=False)
-
-    def run_as_root(self, args, wait=True, stdin=None, check_status=True):
-        # FIXME maybe should add a pwd arg to teuthology.orchestra so that
-        # the "cd foo && bar" shenanigans isn't needed to begin with and
-        # then we wouldn't have to special case this
-        if isinstance(args, str):
-            args = 'sudo ' + args
-        if isinstance(args, list):
-            args.insert(0, 'sudo')
-
-        return self.client_remote.run(args=args, wait=wait, cwd=self.mountpoint,
-                                      check_status=check_status,
-                                      omit_sudo=False)
-
-    def testcmd(self, args, wait=True, stdin=None, omit_sudo=True):
-        # FIXME maybe should add a pwd arg to teuthology.orchestra so that
-        # the "cd foo && bar" shenanigans isn't needed to begin with and
-        # then we wouldn't have to special case this
-        return self.run_shell(args, wait=wait, stdin=stdin, check_status=False,
-                              omit_sudo=omit_sudo)
-
-    def testcmd_as_user(self, args, user, wait=True, stdin=None):
-        # FIXME maybe should add a pwd arg to teuthology.orchestra so that
-        # the "cd foo && bar" shenanigans isn't needed to begin with and
-        # then we wouldn't have to special case this
-        return self.run_as_user(args, user=user, wait=wait, stdin=stdin,
-                                check_status=False)
-
-    def testcmd_as_root(self, args, wait=True, stdin=None):
-        # FIXME maybe should add a pwd arg to teuthology.orchestra so that
-        # the "cd foo && bar" shenanigans isn't needed to begin with and
-        # then we wouldn't have to special case this
-        return self.run_as_root(args, wait=wait, stdin=stdin,
-                                check_status=False)
-
     def setupfs(self, name=None):
         if name is None and self.fs is not None:
             # Previous mount existed, reuse the old name