mirror of
https://github.com/xcat2/confluent.git
synced 2026-09-12 04:26:26 +00:00
Fix aiohmi async call contracts
This commit is contained in:
@@ -738,7 +738,8 @@ class Command(object):
|
||||
This provides a detailed view of the LEDs of the managed system.
|
||||
"""
|
||||
await self.oem_init()
|
||||
return await self._oem.get_leds()
|
||||
async for led in self._oem.get_leds():
|
||||
yield led
|
||||
|
||||
async def get_ntp_enabled(self):
|
||||
await self.oem_init()
|
||||
@@ -806,7 +807,7 @@ class Command(object):
|
||||
rsp = await self.raw_command(command=0x2d, netfn=4,
|
||||
rslun=currsensor.sensor_lun,
|
||||
data=(currsensor.sensor_number,))
|
||||
return self._sdr.sensors[sensor].decode_sensor_reading(
|
||||
return await self._sdr.sensors[sensor].decode_sensor_reading(
|
||||
self, rsp['data'])
|
||||
await self.oem_init()
|
||||
return await self._oem.get_sensor_reading(sensorname)
|
||||
@@ -1091,7 +1092,7 @@ class Command(object):
|
||||
if rsp['code'] == 203: # Sensor does not exist, optional dev
|
||||
continue
|
||||
raise exc.IpmiException(rsp['error'], code=rsp['code'])
|
||||
yield self._sdr.sensors[sensor].\
|
||||
yield await self._sdr.sensors[sensor].\
|
||||
decode_sensor_reading(self, rsp['data'])
|
||||
await self.oem_init()
|
||||
async for reading in self._oem.get_sensor_data():
|
||||
@@ -2311,4 +2312,4 @@ class Command(object):
|
||||
|
||||
"""
|
||||
await self.oem_init()
|
||||
return await self._oem.set_oem_extended_privilleges(uid)
|
||||
return await self._oem.set_oem_extended_privilleges(uid)
|
||||
|
||||
@@ -336,9 +336,9 @@ class OEMHandler(generic.OEMHandler):
|
||||
event['component'] += ' {0}'.format(evdata[1] & 0b11111)
|
||||
|
||||
async def reseat_bay(self, bay):
|
||||
if self.is_fpc:
|
||||
if await self.is_fpc():
|
||||
return await self.smmhandler.reseat_bay(bay)
|
||||
elif self.has_xcc and bay == -1:
|
||||
elif await self.has_xcc() and bay == -1:
|
||||
return await self.immhandler.reseat()
|
||||
return await super(OEMHandler, self).reseat_bay(bay)
|
||||
|
||||
@@ -347,7 +347,7 @@ class OEMHandler(generic.OEMHandler):
|
||||
ntpres = await self.ipmicmd.raw_command(netfn=0x32, command=0xa7)
|
||||
return ntpres['data'][0] == '\x01'
|
||||
elif await self.is_fpc():
|
||||
return await self.smmhandler.get_ntp_enabled(self._fpc_variant)
|
||||
return self.smmhandler.get_ntp_enabled(self._fpc_variant)
|
||||
elif self.has_tsma:
|
||||
return await self.tsmahandler.get_ntp_enabled()
|
||||
return None
|
||||
@@ -360,7 +360,7 @@ class OEMHandler(generic.OEMHandler):
|
||||
srvs.append(ntpres['data'][129:257].rstrip('\x00'))
|
||||
return srvs
|
||||
if await self.is_fpc():
|
||||
return await self.smmhandler.get_ntp_servers()
|
||||
return self.smmhandler.get_ntp_servers()
|
||||
if self.has_tsma:
|
||||
return await self.tsmahandler.get_ntp_servers()
|
||||
return ()
|
||||
@@ -375,7 +375,7 @@ class OEMHandler(generic.OEMHandler):
|
||||
netfn=0x32, command=0xa8, data=(3, 0), timeout=15)
|
||||
return True
|
||||
if await self.is_fpc():
|
||||
await self.smmhandler.set_ntp_enabled(enabled)
|
||||
self.smmhandler.set_ntp_enabled(enabled)
|
||||
return True
|
||||
if self.has_tsma:
|
||||
await self.tsmahandler.set_ntp_enabled(enabled)
|
||||
@@ -393,7 +393,7 @@ class OEMHandler(generic.OEMHandler):
|
||||
if not 0 <= index <= 2:
|
||||
raise pygexc.InvalidParameterValue(
|
||||
'SMM supports indexes 0 through 2')
|
||||
await self.smmhandler.set_ntp_server(server, index)
|
||||
self.smmhandler.set_ntp_server(server, index)
|
||||
return True
|
||||
elif self.has_tsma:
|
||||
if not (0 <= index <= 1):
|
||||
@@ -516,7 +516,7 @@ class OEMHandler(generic.OEMHandler):
|
||||
elif await self.is_fpc():
|
||||
async for compname in self.smmhandler.get_inventory_descriptions(
|
||||
self.ipmicmd, await self.is_fpc()):
|
||||
yield (compname, self.smmhandler.get_inventory_of_component(
|
||||
yield (compname, await self.smmhandler.get_inventory_of_component(
|
||||
self.ipmicmd, compname))
|
||||
|
||||
async def get_sensor_data(self):
|
||||
@@ -561,14 +561,14 @@ class OEMHandler(generic.OEMHandler):
|
||||
async def get_inventory_of_component(self, component):
|
||||
if await self.has_tsm() or await self.has_ami() or await self.has_asrock():
|
||||
await self._collect_tsm_inventory()
|
||||
return await self.oem_inventory_info.get(component, None)
|
||||
return self.oem_inventory_info.get(component, None)
|
||||
if await self.has_imm():
|
||||
return await self.immhandler.get_component_inventory(component)
|
||||
if await self.is_fpc():
|
||||
return await self.smmhandler.get_inventory_of_component(component)
|
||||
return await self.smmhandler.get_inventory_of_component(self.ipmicmd, component)
|
||||
|
||||
def get_cmd_type(self, categorie_item, catspec):
|
||||
if self.has_asrock:
|
||||
async def get_cmd_type(self, categorie_item, catspec):
|
||||
if await self.has_asrock():
|
||||
cmd_type = catspec["command"]["asrock"]
|
||||
elif categorie_item in categorie_items:
|
||||
cmd_type = catspec["command"]["lenovo"]
|
||||
@@ -579,9 +579,7 @@ class OEMHandler(generic.OEMHandler):
|
||||
|
||||
async def _collect_tsm_inventory(self):
|
||||
self.oem_inventory_info = {}
|
||||
asrock = False
|
||||
if self.has_asrock:
|
||||
asrock = True
|
||||
asrock = await self.has_asrock()
|
||||
for catid, catspec in inventory.categories.items():
|
||||
# skip the inventory fields if the system is RS160
|
||||
if asrock and catid not in categorie_items:
|
||||
@@ -590,7 +588,7 @@ class OEMHandler(generic.OEMHandler):
|
||||
and catspec["workaround_bmc_bug"](
|
||||
"ami" if await self.has_ami() else "lenovo")):
|
||||
rsp = None
|
||||
cmd = self.get_cmd_type(catid, catspec)
|
||||
cmd = await self.get_cmd_type(catid, catspec)
|
||||
tmp_command = dict(cmd)
|
||||
tmp_command["data"] = list(tmp_command["data"])
|
||||
count = 0
|
||||
@@ -617,7 +615,7 @@ class OEMHandler(generic.OEMHandler):
|
||||
rsp["data"] = buffer(bytearray(rsp["data"]))
|
||||
else:
|
||||
try:
|
||||
cmd = self.get_cmd_type(catid, catspec)
|
||||
cmd = await self.get_cmd_type(catid, catspec)
|
||||
rsp = await self.ipmicmd.raw_command(**cmd)
|
||||
except pygexc.IpmiException:
|
||||
continue
|
||||
@@ -852,7 +850,7 @@ class OEMHandler(generic.OEMHandler):
|
||||
async def get_oem_firmware(self, bmcver, components, category):
|
||||
if await self.has_tsm() or await self.has_ami() or await self.has_asrock():
|
||||
command = firmware.get_categories()["firmware"]
|
||||
fw_cmd = self.get_cmd_type("firmware", command)
|
||||
fw_cmd = await self.get_cmd_type("firmware", command)
|
||||
rsp = await self.ipmicmd.raw_command(**fw_cmd)
|
||||
|
||||
# the newest Lenovo ThinkServer versions are returning Bios version
|
||||
@@ -860,7 +858,7 @@ class OEMHandler(generic.OEMHandler):
|
||||
bios_versions = None
|
||||
if await self.has_tsm() or await self.has_asrock():
|
||||
bios_command = firmware.get_categories()["bios_version"]
|
||||
bios_cmd = self.get_cmd_type("bios_version", bios_command)
|
||||
bios_cmd = await self.get_cmd_type("bios_version", bios_command)
|
||||
bios_rsp = await self.ipmicmd.raw_command(**bios_cmd)
|
||||
if await self.has_asrock():
|
||||
bios_versions = bios_rsp['data']
|
||||
@@ -943,7 +941,7 @@ class OEMHandler(generic.OEMHandler):
|
||||
name += rsp['data'][:]
|
||||
return name.rstrip('\x00')
|
||||
elif await self.is_fpc():
|
||||
return await self.smmhandler.get_domain()
|
||||
return self.smmhandler.get_domain()
|
||||
|
||||
async def set_oem_domain_name(self, name):
|
||||
if await self.has_tsm():
|
||||
@@ -962,20 +960,20 @@ class OEMHandler(generic.OEMHandler):
|
||||
await self._restart_dns()
|
||||
return
|
||||
elif await self.is_fpc():
|
||||
await self.smmhandler.set_domain(name)
|
||||
self.smmhandler.set_domain(name)
|
||||
|
||||
async def set_hostname(self, hostname):
|
||||
if await self.has_xcc():
|
||||
return await self.immhandler.set_hostname(hostname)
|
||||
elif await self.is_fpc():
|
||||
return await self.smmhandler.set_hostname(hostname)
|
||||
return self.smmhandler.set_hostname(hostname)
|
||||
return await super(OEMHandler, self).set_hostname(hostname)
|
||||
|
||||
async def get_hostname(self):
|
||||
if await self.has_xcc():
|
||||
return await self.immhandler.get_hostname()
|
||||
elif await self.is_fpc():
|
||||
return await self.smmhandler.get_hostname()
|
||||
return self.smmhandler.get_hostname()
|
||||
return await super(OEMHandler, self).get_hostname()
|
||||
|
||||
""" Gets a remote console launcher for a Lenovo ThinkServer.
|
||||
|
||||
@@ -1061,16 +1061,16 @@ class SMMClient(object):
|
||||
complete = percent >= 100.0
|
||||
return 'complete'
|
||||
|
||||
def get_inventory_descriptions(self, ipmicmd, variant):
|
||||
async def get_inventory_descriptions(self, ipmicmd, variant):
|
||||
if variant >> 5 == 0:
|
||||
return
|
||||
psucount = get_psu_count(ipmicmd, variant)
|
||||
psucount = await get_psu_count(ipmicmd, variant)
|
||||
for idx in range(psucount):
|
||||
yield 'PSU {}'.format(idx + 1)
|
||||
|
||||
def get_inventory_of_component(self, ipmicmd, component):
|
||||
async def get_inventory_of_component(self, ipmicmd, component):
|
||||
psuidx = int(component.replace('PSU ', ''))
|
||||
return self.get_psu_info(ipmicmd, psuidx)
|
||||
return await self.get_psu_info(ipmicmd, psuidx)
|
||||
|
||||
async def get_psu_info(self, ipmicmd, psunum):
|
||||
psuinfo = await ipmicmd.raw_command(0x34, 0x6, data=(psunum,))
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import asyncio
|
||||
import ctypes
|
||||
import fcntl
|
||||
from select import select
|
||||
|
||||
@@ -475,7 +475,7 @@ class SDREntry(object):
|
||||
health = const.Health.Ok
|
||||
return desc, health
|
||||
|
||||
def decode_sensor_reading(self, ipmicmd, reading):
|
||||
async def decode_sensor_reading(self, ipmicmd, reading):
|
||||
numeric = None
|
||||
output = {
|
||||
'name': self.sensor_name,
|
||||
@@ -495,8 +495,8 @@ class SDREntry(object):
|
||||
if numeric is not None:
|
||||
lowerbound = numeric - (0.5 + (self.tolerance / 2.0))
|
||||
upperbound = numeric + (0.5 + (self.tolerance / 2.0))
|
||||
lowerbound = self.decode_value(ipmicmd, lowerbound)
|
||||
upperbound = self.decode_value(ipmicmd, upperbound)
|
||||
lowerbound = await self.decode_value(ipmicmd, lowerbound)
|
||||
upperbound = await self.decode_value(ipmicmd, upperbound)
|
||||
output['value'] = (lowerbound + upperbound) / 2.0
|
||||
output['imprecision'] = output['value'] - lowerbound
|
||||
discrete = False
|
||||
@@ -552,13 +552,13 @@ class SDREntry(object):
|
||||
output['state_ids'].append(self.assert_trap_value(6))
|
||||
return SensorReading(output, self.unit_suffix)
|
||||
|
||||
def _set_tmp_formula(self, ipmicmd, value):
|
||||
rsp = ipmicmd.raw_command(netfn=4, command=0x23,
|
||||
data=(self.sensor_number, value))
|
||||
async def _set_tmp_formula(self, ipmicmd, value):
|
||||
rsp = await ipmicmd.raw_command(netfn=4, command=0x23,
|
||||
data=(self.sensor_number, value))
|
||||
# skip next reading field, not used in on-demand situation
|
||||
self.decode_formula(rsp['data'][1:])
|
||||
|
||||
def decode_value(self, ipmicmd, value):
|
||||
async def decode_value(self, ipmicmd, value):
|
||||
# Take the input value and return meaningful value
|
||||
linearization = self.linearization
|
||||
if linearization > 11: # direct calling code to get factors
|
||||
@@ -568,7 +568,7 @@ class SDREntry(object):
|
||||
# fashion. However for now opt for retrieving rows as needed
|
||||
# rather than tracking all that information for a relatively
|
||||
# rare behavior
|
||||
self._set_tmp_formula(ipmicmd, value)
|
||||
await self._set_tmp_formula(ipmicmd, value)
|
||||
linearization = 0
|
||||
# time to compute the pre-linearization value.
|
||||
decoded = float((value * self.m + self.b)
|
||||
|
||||
@@ -660,8 +660,8 @@ class OEMHandler(object):
|
||||
procurl = sysinfo.get('Processors', {}).get('@odata.id',
|
||||
None)
|
||||
if procurl:
|
||||
for cpu in await fishclient._do_web_request(procurl).get(
|
||||
'Members', []):
|
||||
procinfo = await fishclient._do_web_request(procurl)
|
||||
for cpu in procinfo.get('Members', []):
|
||||
cinfo = await fishclient._do_web_request(cpu['@odata.id'])
|
||||
if cinfo.get('Status', {}).get(
|
||||
'State', None) == 'Absent':
|
||||
@@ -1004,8 +1004,9 @@ class OEMHandler(object):
|
||||
def _extract_fwinfo(self, inf):
|
||||
return {}
|
||||
|
||||
def get_firmware_inventory(self, components, fishclient, category=None):
|
||||
return []
|
||||
async def get_firmware_inventory(self, components, fishclient, category=None):
|
||||
return
|
||||
yield
|
||||
|
||||
def set_credentials(self, username, password):
|
||||
try:
|
||||
@@ -1240,7 +1241,7 @@ class OEMHandler(object):
|
||||
if not foundmacs:
|
||||
# No PCIe device inventory, but *maybe* ethernet inventory...
|
||||
idxsbyname = {}
|
||||
for nicinfo in self._get_eth_urls():
|
||||
for nicinfo in await self._get_eth_urls():
|
||||
nicinfo = await self._do_web_request(nicinfo)
|
||||
nicname = nicinfo.get('Name', None)
|
||||
nicinfo = nicinfo.get('MACAddress', nicinfo.get('PermanentAddress', None))
|
||||
@@ -1675,7 +1676,7 @@ class OEMHandler(object):
|
||||
await fishclient._do_web_request(licenses, licinfo)
|
||||
|
||||
|
||||
def get_user_expiration(self, uid):
|
||||
async def get_user_expiration(self, uid):
|
||||
return None
|
||||
|
||||
async def reseat_bay(self, bay):
|
||||
|
||||
@@ -286,7 +286,8 @@ class OEMHandler(generic.OEMHandler):
|
||||
rsp = await self._do_web_request(url, method='POST')
|
||||
|
||||
async def get_event_log(self, clear=False, fishclient=None):
|
||||
return await super().get_event_log(clear, fishclient, extraurls=[{'@odata.id':'/redfish/v1/Chassis/chassis1/LogServices/EventLog'}])
|
||||
async for event in super().get_event_log(clear, fishclient, extraurls=[{'@odata.id':'/redfish/v1/Chassis/chassis1/LogServices/EventLog'}]):
|
||||
yield event
|
||||
|
||||
async def get_description(self, fishclient):
|
||||
return {'height': 13, 'slot': 0, 'slots': [8, 2]}
|
||||
|
||||
@@ -1757,18 +1757,18 @@ class OEMHandler(generic.OEMHandler):
|
||||
else:
|
||||
return days
|
||||
|
||||
def get_inventory_descriptions(self, withids=False):
|
||||
hwmap = self.hardware_inventory_map()
|
||||
async def get_inventory_descriptions(self, withids=False):
|
||||
hwmap = await self.hardware_inventory_map()
|
||||
yield "System"
|
||||
for key in natural_sort(hwmap):
|
||||
yield key
|
||||
for cpuinv in self._get_cpu_inventory():
|
||||
async for cpuinv in self._get_cpu_inventory():
|
||||
yield cpuinv[0]
|
||||
for meminv in self._get_mem_inventory():
|
||||
async for meminv in self._get_mem_inventory():
|
||||
yield meminv[0]
|
||||
|
||||
|
||||
def get_inventory_of_component(self, compname):
|
||||
async def get_inventory_of_component(self, compname):
|
||||
if compname.lower() == 'system':
|
||||
sysinfo = {
|
||||
'UUID': self._varsysinfo.get('UUID', ''),
|
||||
@@ -1779,14 +1779,14 @@ class OEMHandler(generic.OEMHandler):
|
||||
'SKU', self._varsysinfo.get('PartNumber', '')),
|
||||
}
|
||||
return sysinfo
|
||||
hwmap = self.hardware_inventory_map()
|
||||
hwmap = await self.hardware_inventory_map()
|
||||
try:
|
||||
return hwmap[compname]
|
||||
except KeyError:
|
||||
for cpuinv in self._get_cpu_inventory():
|
||||
async for cpuinv in self._get_cpu_inventory():
|
||||
if cpuinv[0] == compname:
|
||||
return cpuinv[1]
|
||||
for meminv in self._get_mem_inventory():
|
||||
async for meminv in self._get_mem_inventory():
|
||||
if meminv[0] == compname:
|
||||
return meminv[1]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user