summaryrefslogtreecommitdiff
path: root/contractor
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2020-04-09 14:20:28 +0300
committerLars Wirzenius <liw@liw.fi>2020-04-09 14:20:28 +0300
commitb290bdfed8232056b87d6a96c158cf31dc21b6d9 (patch)
treef28913281f5dfcf981b2174a8f33b16303f29ee3 /contractor
parentea0fdd95cbd255a7044d5fad10b0772fb93393c8 (diff)
downloadick-contractor-b290bdfed8232056b87d6a96c158cf31dc21b6d9.tar.gz
Change: return class with results
Diffstat (limited to 'contractor')
-rwxr-xr-xcontractor21
1 files changed, 17 insertions, 4 deletions
diff --git a/contractor b/contractor
index ca83fd4..b7de8fe 100755
--- a/contractor
+++ b/contractor
@@ -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')