From 81ce2b240a41b3d548222fac1efb95c27e48ee4a Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Fri, 3 Apr 2020 01:09:21 +0000 Subject: [PATCH] Revert "qa/cephfs: move run_shell and related methods to mount.py" This reverts commit 751d432a8696c7fdceb9d9707c2b3331878342ea. Signed-off-by: Greg Farnum --- qa/tasks/cephfs/mount.py | 54 +++-------------- qa/tasks/vstart_runner.py | 122 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 129 insertions(+), 47 deletions(-) diff --git a/qa/tasks/cephfs/mount.py b/qa/tasks/cephfs/mount.py index 3511515fda5..b48be1d2ddd 100644 --- a/qa/tasks/cephfs/mount.py +++ b/qa/tasks/cephfs/mount.py @@ -193,55 +193,15 @@ class CephFSMount(object): return six.ensure_str(p.stdout.getvalue().strip()) def run_shell(self, args, wait=True, stdin=None, check_status=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): + omit_sudo=True): if isinstance(args, str): - 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 = args.split() - 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) + 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 open_no_data(self, basename): """ diff --git a/qa/tasks/vstart_runner.py b/qa/tasks/vstart_runner.py index b14966a1de0..3f5bf141a8a 100644 --- a/qa/tasks/vstart_runner.py +++ b/qa/tasks/vstart_runner.py @@ -502,6 +502,7 @@ 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) @@ -521,6 +522,67 @@ 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 @@ -649,6 +711,66 @@ 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 -- 2.39.5