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):
"""
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)
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
# 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