summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2020-04-12 14:23:40 +0000
committerLars Wirzenius <liw@liw.fi>2020-04-12 14:23:40 +0000
commit68aef5bc4228b07c5bec44b86819ff8aa85e4ea9 (patch)
tree42cfbfcceeb2da1a047d6687f52865c7af2c73be
parent5ec8a0e5cadd31473c8f44dd703ccf25d73845f9 (diff)
parent5e9f6341eaeae7a58ca96e8e4055be8aaa718622 (diff)
downloadvmdb2-68aef5bc4228b07c5bec44b86819ff8aa85e4ea9.tar.gz
Merge branch 'subprocess' into 'master'
Change: use subprocess directly, not via cliapp.runcmd Closes #17 See merge request larswirzenius/vmdb2!18
-rw-r--r--vmdb/runcmd.py14
1 files changed, 10 insertions, 4 deletions
diff --git a/vmdb/runcmd.py b/vmdb/runcmd.py
index fb0d8b3..ae4a6d0 100644
--- a/vmdb/runcmd.py
+++ b/vmdb/runcmd.py
@@ -43,14 +43,20 @@ def progress(msg):
sys.stdout.write('{}\n'.format(msg))
-def runcmd(argv, *argvs, **kwargs):
+def runcmd(argv, **kwargs):
progress('Exec: %r' % (argv,))
- kwargs['stdout_callback'] = _log_stdout
- kwargs['stderr_callback'] = _log_stderr
env = kwargs.get('env', os.environ.copy())
env['LC_ALL'] = 'C'
kwargs['env'] = env
- return cliapp.runcmd(argv, *argvs, **kwargs)
+ kwargs['stdout'] = kwargs.get('stdout', subprocess.PIPE)
+ kwargs['stderr'] = kwargs.get('stderr', subprocess.PIPE)
+ p = subprocess.Popen(argv, **kwargs)
+ out, err = p.communicate()
+ logging.debug('STDOUT: %s', out.decode('UTF8'))
+ logging.debug('STDERR: %s', err.decode('UTF8'))
+ if p.returncode != 0:
+ raise cliapp.AppException('Command failed: {}'.format(p.returncode))
+ return out
def runcmd_chroot(chroot, argv, *argvs, **kwargs):