mirror of
https://github.com/xcat2/confluent.git
synced 2026-09-21 08:33:23 +00:00
Fix IPMI coroutine result handling
This commit is contained in:
@@ -329,8 +329,8 @@ class Command(object):
|
||||
await self.oem_init()
|
||||
|
||||
if hasattr(self._oem, 'set_power'):
|
||||
return self._oem.set_power(powerstate,
|
||||
bridge_request=bridge_request)
|
||||
return await self._oem.set_power(powerstate,
|
||||
bridge_request=bridge_request)
|
||||
|
||||
if hasattr(self._oem, 'process_power_state'):
|
||||
powerstate = self._oem.process_power_state(
|
||||
@@ -675,7 +675,7 @@ class Command(object):
|
||||
await self.init_sdr()
|
||||
for fruid in self._sdr.fru:
|
||||
if self._sdr.fru[fruid].fru_name == component:
|
||||
return self._oem.process_fru(fru.FRU(
|
||||
return await self._oem.process_fru(fru.FRU(
|
||||
ipmicmd=self, fruid=fruid,
|
||||
sdr=self._sdr.fru[fruid]).info, component)
|
||||
return await self._oem.get_inventory_of_component(component)
|
||||
@@ -854,9 +854,9 @@ class Command(object):
|
||||
else:
|
||||
raise Exception("Unrecognized data format " + repr(fetchdata))
|
||||
|
||||
def get_extended_bmc_configuration(self):
|
||||
self.oem_init()
|
||||
return self._oem.get_extended_bmc_configuration()
|
||||
async def get_extended_bmc_configuration(self):
|
||||
await self.oem_init()
|
||||
return await self._oem.get_extended_bmc_configuration()
|
||||
|
||||
async def get_bmc_configuration(self):
|
||||
await self.oem_init()
|
||||
|
||||
@@ -133,7 +133,7 @@ class Console(object):
|
||||
response['code'])
|
||||
return
|
||||
if 'error' in response:
|
||||
self._print_error(response['error'])
|
||||
await self._print_error(response['error'])
|
||||
return
|
||||
self.activated = True
|
||||
# data[0:3] is reserved except for the test mode, which we don't use
|
||||
@@ -381,7 +381,7 @@ class Console(object):
|
||||
await self.send_payload(ackpayload, retry=False)
|
||||
except exc.IpmiException:
|
||||
# if the session is broken, then close the SOL session
|
||||
self.close()
|
||||
await self.close()
|
||||
if self.myseq != 0 and ackseq == self.myseq: # the bmc has something
|
||||
# to say about last xmit
|
||||
self.awaitingack = False
|
||||
|
||||
@@ -1023,11 +1023,11 @@ class Session(object):
|
||||
# tried ipmi 2.0 against a 1.5 which should work, but some bmcs
|
||||
# thought 'reserved' meant 'must be zero'
|
||||
self.ipmi15only = 1
|
||||
return self._get_channel_auth_cap()
|
||||
return await self._get_channel_auth_cap()
|
||||
mysuffix = " while trying to get channel authentication capabalities"
|
||||
errstr = get_ipmi_error(response, suffix=mysuffix)
|
||||
if errstr:
|
||||
self.onlogon({'error': errstr})
|
||||
await self.onlogon({'error': errstr})
|
||||
return
|
||||
data = response['data']
|
||||
self.currentchannel = data[0]
|
||||
@@ -1035,7 +1035,7 @@ class Session(object):
|
||||
self.ipmiversion = 2.0
|
||||
if self.ipmiversion == 1.5:
|
||||
if not (data[1] & 0b100):
|
||||
self.onlogon(
|
||||
await self.onlogon(
|
||||
{'error':
|
||||
"MD5 required but not enabled/available on target BMC"})
|
||||
return
|
||||
@@ -1047,12 +1047,11 @@ class Session(object):
|
||||
errstr = get_ipmi_error(response,
|
||||
suffix=" while getting session challenge")
|
||||
if errstr:
|
||||
self.onlogon({'error': errstr})
|
||||
return
|
||||
return self.onlogon({'error': errstr})
|
||||
data = response['data']
|
||||
self.sessionid = struct.unpack("<I", bytes(data[0:4]))[0]
|
||||
self.authtype = 2
|
||||
self._activate_session(data[4:])
|
||||
return self._activate_session(data[4:])
|
||||
|
||||
# NOTE(jbjohnso):
|
||||
# This sends the activate session payload. We pick '1' as the requested
|
||||
@@ -1067,7 +1066,7 @@ class Session(object):
|
||||
async def _activated_session(self, response):
|
||||
errstr = get_ipmi_error(response)
|
||||
if errstr:
|
||||
self.onlogon({'error': errstr})
|
||||
await self.onlogon({'error': errstr})
|
||||
return
|
||||
data = response['data']
|
||||
self.sessionid = struct.unpack("<I", bytes(data[1:5]))[0]
|
||||
@@ -1085,8 +1084,8 @@ class Session(object):
|
||||
# some implementations will let us get this far,
|
||||
# but suddenly get skiddish. Try again in such a case
|
||||
self.privlevel = 3
|
||||
response = self.raw_command(netfn=0x6, command=0x3b,
|
||||
data=[self.privlevel])
|
||||
response = await self.raw_command(netfn=0x6, command=0x3b,
|
||||
data=[self.privlevel])
|
||||
if response['code']:
|
||||
self.logged = 0
|
||||
self.onlogpayload = None
|
||||
@@ -1097,7 +1096,7 @@ class Session(object):
|
||||
self.privlevel, self.userid)
|
||||
errstr = get_ipmi_error(response, suffix=mysuffix)
|
||||
if errstr:
|
||||
self.onlogon({'error': errstr})
|
||||
await self.onlogon({'error': errstr})
|
||||
return
|
||||
self.logging = False
|
||||
self.logoutexpiry = None
|
||||
@@ -1548,7 +1547,7 @@ class Session(object):
|
||||
errstr = constants.rmcp_codes[data[1]]
|
||||
else:
|
||||
errstr = "Unrecognized RMCP code %d" % data[1]
|
||||
self.onlogon({'error': errstr})
|
||||
await self.onlogon({'error': errstr})
|
||||
return -9
|
||||
self.allowedpriv = data[2]
|
||||
# NOTE(jbjohnso): At this point, the BMC has no idea about what user
|
||||
@@ -1692,7 +1691,7 @@ class Session(object):
|
||||
aclen = len(expectedauthcode)
|
||||
authcode = struct.pack("%dB" % aclen, *data[8:aclen + 8])
|
||||
if authcode != expectedauthcode:
|
||||
self.onlogon({'error': "Invalid RAKP4 integrity code (wrong Kg?)"})
|
||||
await self.onlogon({'error': "Invalid RAKP4 integrity code (wrong Kg?)"})
|
||||
return
|
||||
self.sessionid = self.pendingsessionid
|
||||
self.integrityalgo = self.attemptedhash
|
||||
|
||||
Reference in New Issue
Block a user