mirror of
https://opendev.org/x/pyghmi
synced 2026-01-11 18:52:33 +00:00
Follow state of validate job when updating firmware.
On v3 systems a job is created to handle the last part of the firmware update process when using Redfish to update the firmware. Follow the state of that job for the 'validating' phase. Change-Id: I0a294b687f4e7665684239239cc2f37ca9c76f0c
This commit is contained in:
@@ -2018,8 +2018,10 @@ class XCCClient(IMMClient):
|
||||
raise Exception(uploadthread.rsp)
|
||||
raise Exception(errmsg)
|
||||
rsp = json.loads(uploadthread.rsp)
|
||||
monitorurl = rsp['TaskMonitor']
|
||||
monitorurl = rsp['@odata.id']
|
||||
complete = False
|
||||
phase = "apply"
|
||||
statetype = 'TaskState'
|
||||
while not complete:
|
||||
pgress, status = self.grab_redfish_response_with_status(
|
||||
monitorurl)
|
||||
@@ -2030,14 +2032,21 @@ class XCCClient(IMMClient):
|
||||
for msg in pgress.get('Messages', []):
|
||||
if 'Verify failed' in msg.get('Message', ''):
|
||||
raise Exception(msg['Message'])
|
||||
state = pgress['TaskState']
|
||||
state = pgress[statetype]
|
||||
if state in ('Cancelled', 'Exception',
|
||||
'Interrupted', 'Suspended'):
|
||||
raise Exception(json.dumps(pgress['Messages']))
|
||||
pct = float(pgress['PercentComplete'])
|
||||
complete = state == 'Completed'
|
||||
progress({'phase': 'apply', 'progress': pct})
|
||||
if not complete:
|
||||
progress({'phase': phase, 'progress': pct})
|
||||
if complete:
|
||||
if 'OperationTransitionedToJob' in pgress['Messages'][0]['MessageId']:
|
||||
monitorurl = pgress['Messages'][0]['MessageArgs'][0]
|
||||
phase = 'validating'
|
||||
statetype = 'JobState'
|
||||
complete = False
|
||||
ipmisession.Session.pause(3)
|
||||
else:
|
||||
ipmisession.Session.pause(3)
|
||||
if bank == 'backup':
|
||||
return 'complete'
|
||||
|
||||
@@ -1156,8 +1156,10 @@ class OEMHandler(generic.OEMHandler):
|
||||
raise Exception(uploadthread.rsp)
|
||||
raise Exception(errmsg)
|
||||
rsp = json.loads(uploadthread.rsp)
|
||||
monitorurl = rsp['TaskMonitor']
|
||||
monitorurl = rsp['@odata.id']
|
||||
complete = False
|
||||
phase = "apply"
|
||||
statetype = 'TaskState'
|
||||
while not complete:
|
||||
pgress = self._do_web_request(monitorurl, cache=False)
|
||||
if not pgress:
|
||||
@@ -1165,15 +1167,22 @@ class OEMHandler(generic.OEMHandler):
|
||||
for msg in pgress.get('Messages', []):
|
||||
if 'Verify failed' in msg.get('Message', ''):
|
||||
raise Exception(msg['Message'])
|
||||
state = pgress['TaskState']
|
||||
state = pgress[statetype]
|
||||
if state in ('Cancelled', 'Exception', 'Interrupted',
|
||||
'Suspended'):
|
||||
raise Exception(
|
||||
json.dumps(json.dumps(pgress['Messages'])))
|
||||
pct = float(pgress['PercentComplete'])
|
||||
complete = state == 'Completed'
|
||||
progress({'phase': 'apply', 'progress': pct})
|
||||
if not complete:
|
||||
progress({'phase': phase, 'progress': pct})
|
||||
if complete:
|
||||
if 'OperationTransitionedToJob' in pgress['Messages'][0]['MessageId']:
|
||||
monitorurl = pgress['Messages'][0]['MessageArgs'][0]
|
||||
phase = 'validating'
|
||||
statetype = 'JobState'
|
||||
complete = False
|
||||
time.sleep(3)
|
||||
else:
|
||||
time.sleep(3)
|
||||
if bank == 'backup':
|
||||
return 'complete'
|
||||
|
||||
Reference in New Issue
Block a user