2
0
mirror of https://github.com/xcat2/confluent.git synced 2025-01-11 10:18:00 +00:00

Fix nodeconfig handling of general errors

nodeconfig was not handling errors in results well, fix this by
refactoring the nodefirmware facility into it.
This commit is contained in:
Jarrod Johnson 2018-05-16 11:21:26 -04:00
parent 7909f9e003
commit 6cba560f6a
3 changed files with 19 additions and 15 deletions

View File

@ -187,8 +187,10 @@ if setmode:
for path in updatebypath:
for fr in session.update('/noderange/{0}/{1}'.format(noderange, path),
updatebypath[path]):
for node in fr['databynode']:
rcode |= client.printerror(fr)
for node in fr.get('databynode', []):
r = fr['databynode'][node]
exitcode |= client.printerror(r, node)
if 'error' in r:
sys.stderr.write(node + ': ' + r['error'] + '\n')
if 'errorcode' in r:

View File

@ -35,18 +35,6 @@ import confluent.screensqueeze as sq
exitcode = 0
def printerror(res, node=None):
global exitcode
if 'errorcode' in res:
exitcode = res['errorcode']
if 'error' in res:
if node:
sys.stderr.write('{0}: {1}\n'.format(node, res['error']))
else:
sys.stderr.write('{0}\n'.format(res['error']))
if 'errorcode' not in res:
exitcode = 1
def printfirm(node, prefix, data):
if 'model' in data:
@ -144,11 +132,11 @@ def show_firmware(session):
for res in session.read(
'/noderange/{0}/inventory/firmware/all/{1}'.format(
noderange, component)):
printerror(res)
exitcode |= client.printerror(res)
if 'databynode' not in res:
continue
for node in res['databynode']:
printerror(res['databynode'][node], node)
exitcode |= client.printerror(res['databynode'][node], node)
if 'firmware' not in res['databynode'][node]:
continue
for inv in res['databynode'][node]['firmware']:

View File

@ -33,6 +33,20 @@ _attraliases = {
'bmcpass': 'secret.hardwaremanagementpassword',
}
def printerror(res, node=None):
if 'errorcode' in res:
exitcode = res['errorcode']
if 'error' in res:
if node:
sys.stderr.write('{0}: {1}\n'.format(node, res['error']))
else:
sys.stderr.write('{0}\n'.format(res['error']))
if 'errorcode' not in res:
exitcode = 1
return exitcode
def cprint(txt):
print(txt)
sys.stdout.flush()