mirror of
https://opendev.org/x/pyghmi
synced 2025-03-20 02:17:46 +00:00
Offer more robust bmc reset
Error on unrecognized and also check for a longer list of possible actions that we wouldn't mind using. Change-Id: I947ce7e76d28fe1e9a296c5c2a1e5a99a1a285ec
This commit is contained in:
parent
ce71add93d
commit
2e9a81f8f1
@ -762,16 +762,30 @@ class Command(object):
|
||||
return lastnicurl
|
||||
|
||||
@property
|
||||
def _bmcreseturl(self):
|
||||
def _bmcresetinfo(self):
|
||||
if not self._varresetbmcurl:
|
||||
bmcinfo = self._do_web_request(self._bmcurl)
|
||||
self._varresetbmcurl = bmcinfo.get('Actions', {}).get(
|
||||
'#Manager.Reset', {}).get('target', None)
|
||||
resetinf = bmcinfo.get('Actions', {}).get('#Manager.Reset',
|
||||
{})
|
||||
url = resetinf.get('target', '')
|
||||
valid = resetinf.get('ResetType@Redfish.AllowableValues', [])
|
||||
resettype = None
|
||||
if 'GracefulRestart' in valid:
|
||||
resettype = 'GracefulRestart'
|
||||
elif 'ForceRestart' in valid:
|
||||
resettype = 'ForceRestart'
|
||||
elif 'ColdReset' in valid:
|
||||
resettype = 'ColdReset'
|
||||
self._varresetbmcurl = url, resettype
|
||||
return self._varresetbmcurl
|
||||
|
||||
def reset_bmc(self):
|
||||
self._do_web_request(self._bmcreseturl,
|
||||
{'ResetType': 'GracefulRestart'})
|
||||
url, action = self._bmcresetinfo
|
||||
if not url:
|
||||
raise Exception('BMC does not provide reset action')
|
||||
if not action:
|
||||
raise Exception('BMC does not accept a recognized reset type')
|
||||
self._do_web_request(url, {'ResetType': action})
|
||||
|
||||
def set_identify(self, on=True, blink=None):
|
||||
self._do_web_request(
|
||||
|
Loading…
x
Reference in New Issue
Block a user