diff --git a/confluent_client/bin/nodeshell b/confluent_client/bin/nodeshell index b418eb73..40b78b78 100755 --- a/confluent_client/bin/nodeshell +++ b/confluent_client/bin/nodeshell @@ -55,10 +55,15 @@ def run(): all = set([]) pipedesc = {} pendingexecs = deque() + exitcode = 0 + for exp in c.create('/noderange/{0}/attributes/expression'.format(args[0]), {'expression': cmdstr}): - ex = exp['databynode'] + if 'error' in exp: + sys.stderr.write(exp['error'] + '\n') + exitcode |= exp.get('errorcode', 1) + ex = exp.get('databynode', ()) for node in ex: cmd = ex[node]['value'].encode('utf-8') cmdv = ['ssh', node, cmd] @@ -67,8 +72,10 @@ def run(): run_cmdv(node, cmdv, all, pipedesc) else: pendingexecs.append((node, cmdv)) - - exitcode = 0 + if not all: + sys.exit(exitcode) + if exitcode: + sys.exit(exitcode) rdy, _, _ = select.select(all, [], [], 10) while all: for r in rdy: