2
0
mirror of https://github.com/xcat2/confluent.git synced 2024-12-25 12:41:39 +00:00

Fix error handling in nodeshell

nodeshell needed to process errors correctly, and not assume databynode would be there.
This commit is contained in:
Jarrod Johnson 2017-08-03 08:39:04 -04:00
parent dbcc33629a
commit 5d7df6dceb

View File

@ -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: