2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2025-05-29 17:23:08 +00:00

Enhance rpower bmcreboot, clear dumps if reboot to new firmware

This commit is contained in:
XuWei 2018-03-15 04:22:46 -04:00
parent cf71168bbd
commit 06f178c7e7

View File

@ -159,13 +159,32 @@ class OpenBMCPowerTask(ParallelNodesCommand):
new_status = ''
try:
obmc.login()
except (SelfServerException, SelfClientException) as e:
return self.callback.error(e.message, node)
firm_obj_dict = {}
try:
has_functional, firm_obj_dict = obmc.list_firmware()
except (SelfServerException, SelfClientException) as e:
self.callback.syslog('%s: %s' % (node, e.message))
clear_flag = False
for key, value in firm_obj_dict.items():
if not value.functional and value.priority == 0:
clear_flag = True
break
if clear_flag:
self.callback.info('%s: Firmware will be flashed on reboot, deleting all BMC diagnostics...' % node)
try:
obmc.clear_dump('all')
except (SelfServerException, SelfClientException) as e:
self.callback.warn('%s: Could not clear BMC diagnostics successfully %s, ignoring...' % (node, e.message))
try:
obmc.reboot_bmc(optype)
except (SelfServerException, SelfClientException) as e:
self.callback.error(e.message, node)
else:
try:
obmc.reboot_bmc(optype)
except (SelfServerException, SelfClientException) as e:
self.callback.error(e.message, node)
else:
self.callback.info('%s: %s' % (node, openbmc.RPOWER_STATES['bmcreboot']))
self.callback.info('%s: %s' % (node, openbmc.RPOWER_STATES['bmcreboot']))