mirror of
https://opendev.org/x/pyghmi
synced 2025-03-10 06:07:28 +00:00
Make XCC update process more robust
The stray progress call and/or unexpected token expiry resulted in failures. Consistently logout on completion or abortion of process as well. Change-Id: I862036962cc83e31b2f426a9c7572325da173586
This commit is contained in:
parent
2ec9260110
commit
6b3694f01a
@ -518,11 +518,20 @@ class XCCClient(IMMClient):
|
||||
try:
|
||||
self.update_firmware_backend(filename, data, progress)
|
||||
except Exception:
|
||||
self._refresh_token()
|
||||
self.wc.grab_json_response('/api/providers/fwupdate', json.dumps(
|
||||
{'UPD_WebCancel': 1}))
|
||||
self.weblogout()
|
||||
raise
|
||||
self.weblogout()
|
||||
|
||||
def _refresh_token(self):
|
||||
self.wc.grab_json_response('/api/providers/identity')
|
||||
if '_csrf_token' in self.wc.cookies:
|
||||
self.wc.set_header('X-XSRF-TOKEN', self.wc.cookies['_csrf_token'])
|
||||
|
||||
def update_firmware_backend(self, filename, data=None, progress=None):
|
||||
self._refresh_token()
|
||||
rsv = self.wc.grab_json_response('/api/providers/fwupdate', json.dumps(
|
||||
{'UPD_WebReserve': 1}))
|
||||
if rsv['return'] != 0:
|
||||
@ -543,20 +552,21 @@ class XCCClient(IMMClient):
|
||||
elif rsp['state'] != 'done':
|
||||
raise Exception('Unexpected result:' + repr(rsp))
|
||||
uploadstate = rsp['state']
|
||||
self.wc.grab_json_response('/api/providers/identity')
|
||||
self._refresh_token()
|
||||
while uploadstate != 'done':
|
||||
rsp = self.wc.grab_json_response(
|
||||
'/upload/progress?X-Progress-ID={0}'.format(xid))
|
||||
uploadstate = rsp['state']
|
||||
self.wc.grab_json_response('/api/providers/identity')
|
||||
self._refresh_token()
|
||||
rsp = json.loads(uploadthread.rsp)
|
||||
if rsp['items'][0]['name'] != os.path.basename(filename):
|
||||
raise Exception('Unexpected response: ' + repr(rsp))
|
||||
progress({'phase': 'upload',
|
||||
'progress': 100.0})
|
||||
self.wc.grab_json_response('/api/providers/identity')
|
||||
if '_csrf_token' in self.wc.cookies:
|
||||
self.wc.set_header('X-XSRF-TOKEN', self.wc.cookies['_csrf_token'])
|
||||
ipmisession.Session.pause(2)
|
||||
# aggressive timing can cause the next call to occasionally
|
||||
# return 25 and fail
|
||||
self._refresh_token()
|
||||
rsp = self.wc.grab_json_response('/api/providers/fwupdate', json.dumps(
|
||||
{'UPD_WebSetFileName': rsp['items'][0]['path']}))
|
||||
if rsp['return'] != 0:
|
||||
@ -565,19 +575,14 @@ class XCCClient(IMMClient):
|
||||
{'UPD_WebVerifyUploadFile': 1}))
|
||||
if rsp['return'] != 0:
|
||||
raise Exception('Unexpected return to verify: ' + repr(rsp))
|
||||
self.wc.grab_json_response('/api/providers/identity')
|
||||
rsp = self.wc.grab_json_response(
|
||||
'/upload/progress?X-Progress-ID={0}'.format(xid))
|
||||
if rsp['state'] != 'done':
|
||||
raise Exception('Unexpected progress: ' + repr(rsp))
|
||||
self._refresh_token()
|
||||
rsp = self.wc.grab_json_response('/api/dataset/imm_firmware_success')
|
||||
if len(rsp['items']) != 1:
|
||||
raise Exception('Unexpected result: ' + repr(rsp))
|
||||
rsp = self.wc.grab_json_response('/api/dataset/imm_firmware_update')
|
||||
if rsp['items'][0]['upgrades'][0]['id'] != 1:
|
||||
raise Exception('Unexpected answer: ' + repr(rsp))
|
||||
if '_csrf_token' in self.wc.cookies:
|
||||
self.wc.set_header('X-XSRF-TOKEN', self.wc.cookies['_csrf_token'])
|
||||
self._refresh_token()
|
||||
rsp = self.wc.grab_json_response('/api/providers/fwupdate', json.dumps(
|
||||
{'UPD_WebStartDefaultAction': 1}))
|
||||
if rsp['return'] != 0:
|
||||
|
Loading…
x
Reference in New Issue
Block a user