diff options
author | Lars Wirzenius <liw@liw.fi> | 2020-04-09 14:20:28 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2020-04-09 14:20:28 +0300 |
commit | b290bdfed8232056b87d6a96c158cf31dc21b6d9 (patch) | |
tree | f28913281f5dfcf981b2174a8f33b16303f29ee3 /contractor | |
parent | ea0fdd95cbd255a7044d5fad10b0772fb93393c8 (diff) | |
download | ick-contractor-b290bdfed8232056b87d6a96c158cf31dc21b6d9.tar.gz |
Change: return class with results
Diffstat (limited to 'contractor')
-rwxr-xr-x | contractor | 21 |
1 files changed, 17 insertions, 4 deletions
@@ -15,6 +15,18 @@ import yaml +class ExecResult: + + def __init__(self, stdout, stderr, exit_code): + self.stdout = stdout + self.stderr = stderr + self.exit_code = exit_code + logging.debug('RESULT: {} {!r} {!r}'.format(stdout, stderr, exit_code)) + + def failed(self): + return self.exit_code != 0 + + def ssh(target, argv, quiet=False): argv = ['ssh', '--', target] + [shlex.quote(arg) for arg in argv] logging.info('SSH: {!r}'.format(argv)) @@ -26,14 +38,15 @@ def ssh(target, argv, quiet=False): argv, stdout, STDOUT)) p = subprocess.Popen(argv, stderr=STDOUT, stdout=stdout) out, err = p.communicate() - logging.debug('RESULT: {} {!r} {!r}'.format(p.returncode, out, err)) - return out, err, p.returncode + return ExecResult(out, err, p.returncode) def rsync(filename, target): argv = ['rsync', '-aHSs', '--delete', '--', filename, target] logging.info('RSYNC: {!r}'.format(argv)) - return subprocess.call(argv, stderr=STDOUT, stdout=None) + p = subprocess.Popen(argv, stderr=STDOUT, stdout=PIPE) + out, err = p.communicate() + return ExecResult(out, err, p.returncode) class ContractorApplication(cliapp.Application): @@ -128,7 +141,7 @@ class ContractorApplication(cliapp.Application): def cmd_manager_status(self, args): m = self.manager() - if m.ssh(['true']) != 0: + if m.ssh(['true']).failed(): self.error('Manager VM is NOT available') sys.exit(1) self.verbose('Manager VM is available') |