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