2
0
mirror of https://opendev.org/x/pyghmi synced 2025-08-22 02:50:23 +00:00

Lessen degree of admin backoff

When completing RAKP, but denied by set session privilege level,
just repeat set session privilege level at lower privilege
rather than trying to go all the way back.

Change-Id: I3cc10320e81b8a3db3ebb7b17026f0d233e0b808
This commit is contained in:
Jarrod Johnson
2015-08-19 15:09:38 -04:00
parent 59355018c4
commit b003f8f1ce

View File

@@ -842,28 +842,24 @@ class Session(object):
self._req_priv_level()
def _req_priv_level(self):
self.ipmicallback = self._got_priv_level
self._send_ipmi_net_payload(netfn=0x6,
command=0x3b,
self.logged = 1
response = self.raw_command(netfn=0x6, command=0x3b,
data=[self.privlevel])
def _got_priv_level(self, response):
if response['code']:
if response['code'] in (0x80, 0x81) and self.privlevel == 4:
# some implementations will let us get this far,
# but suddenly get skiddish. Try again in such a case
self.privlevel = 3
self.logged = 1
self.logout()
self._relog()
return
mysuffix = " while requesting privelege level %d for %s" % (
self.privlevel, self.userid)
errstr = get_ipmi_error(response, suffix=mysuffix)
if errstr:
self.onlogon({'error': errstr})
return
self.logged = 1
response = self.raw_command(netfn=0x6, command=0x3b,
data=[self.privlevel])
if response['code']:
self.logged = 0
mysuffix = " while requesting privelege level %d for %s" % (
self.privlevel, self.userid)
errstr = get_ipmi_error(response, suffix=mysuffix)
if errstr:
self.onlogon({'error': errstr})
return
self.logging = False
Session.keepalive_sessions[self] = {}
Session.keepalive_sessions[self]['ipmisession'] = self
@@ -1401,7 +1397,6 @@ class Session(object):
return -1
def _parse_payload(self, payload):
if hasattr(self, 'hasretried') and self.hasretried:
self.hasretried = 0
self.tabooseq[