2
0
mirror of https://github.com/xcat2/confluent.git synced 2026-04-28 03:17:47 +00:00

Rework more of ipmi support for async

This commit is contained in:
Jarrod Johnson
2026-03-03 14:49:21 -05:00
parent 61ada4d3d4
commit c806bf2234

View File

@@ -577,7 +577,7 @@ class IpmiHandler:
elif self.element == ['health', 'hardware']:
await self.health()
elif self.element == ['identify']:
self.identify()
await self.identify()
elif self.element[0] == 'sensors':
await self.handle_sensors()
elif self.element[:2] == ['configuration', 'storage']:
@@ -619,47 +619,47 @@ class IpmiHandler:
else:
raise Exception('Not Implemented')
def handle_update(self):
async def handle_update(self):
u = firmwaremanager.Updater(self.node, self.ipmicmd.update_firmware,
self.inputdata.nodefile(self.node), self.tenant,
bank=self.inputdata.bank, configmanager=self.cfm)
self.output.put(
await self.output.put(
msg.CreatedResource(
'nodes/{0}/inventory/firmware/updates/active/{1}'.format(
self.node, u.name)))
def handle_media_upload(self):
async def handle_media_upload(self):
u = firmwaremanager.Updater(self.node, self.ipmicmd.upload_media,
self.inputdata.nodefile(self.node), self.tenant,
type='mediaupload', configmanager=self.cfm)
self.output.put(msg.CreatedResource(
await self.output.put(msg.CreatedResource(
'nodes/{0}/media/uploads/{1}'.format(self.node, u.name)))
def get_diags(self, savefile, progress, data=None):
return self.ipmicmd.get_diagnostic_data(
savefile, progress=progress, autosuffix=True)
def handle_servicedata_fetch(self):
async def handle_servicedata_fetch(self):
u = firmwaremanager.Updater(
self.node, self.get_diags,
self.inputdata.nodefile(self.node), self.tenant, type='ffdc',
owner=self.current_user)
self.output.put(msg.CreatedResource(
await self.output.put(msg.CreatedResource(
'nodes/{0}/support/servicedata/{1}'.format(self.node, u.name)))
def handle_attach_media(self):
async def handle_attach_media(self):
try:
self.ipmicmd.attach_remote_media(self.inputdata.nodefile(
await self.ipmicmd.attach_remote_media(self.inputdata.nodefile(
self.node))
except pygexc.UnsupportedFunctionality as uf:
self.output.put(msg.ConfluentNodeError(self.node, str(uf)))
await self.output.put(msg.ConfluentNodeError(self.node, str(uf)))
def handle_detach_media(self):
self.ipmicmd.detach_remote_media()
async def handle_detach_media(self):
await self.ipmicmd.detach_remote_media()
def handle_list_media(self):
for media in self.ipmicmd.list_media():
self.output.put(msg.Media(self.node, media))
async def handle_list_media(self):
async for media in self.ipmicmd.list_media():
await self.output.put(msg.Media(self.node, media))
async def handle_configuration(self):
if self.element[1:3] == ['management_controller', 'alerts']:
@@ -671,7 +671,7 @@ class IpmiHandler:
elif self.element[1:3] == ['management_controller', 'reset']:
return await self.handle_reset()
elif self.element[1:3] == ['management_controller', 'identifier']:
return self.handle_identifier()
return await self.handle_identifier()
elif self.element[1:3] == ['management_controller', 'hostname']:
return await self.handle_hostname()
elif self.element[1:3] == ['management_controller', 'domain_name']:
@@ -710,21 +710,21 @@ class IpmiHandler:
varbinddata = hex2bin(varbinddata)
event = self.ipmicmd.decode_pet(specifictrap, varbinddata)
self.pyghmi_event_to_confluent(event)
self.output.put(msg.EventCollection((event,), name=self.node))
await self.output.put(msg.EventCollection((event,), name=self.node))
def handle_alerts(self):
async def handle_alerts(self):
if self.element[3] == 'destinations':
if len(self.element) == 4:
# A list of destinations
maxdest = self.ipmicmd.get_alert_destination_count()
maxdest = await self.ipmicmd.get_alert_destination_count()
for alertidx in range(0, maxdest + 1):
self.output.put(msg.ChildCollection(alertidx))
await self.output.put(msg.ChildCollection(alertidx))
return
elif len(self.element) == 5:
alertidx = int(self.element[-1])
if self.op == 'read':
destdata = self.ipmicmd.get_alert_destination(alertidx)
self.output.put(msg.AlertDestination(
destdata = await self.ipmicmd.get_alert_destination(alertidx)
await self.output.put(msg.AlertDestination(
ip=destdata['address'],
acknowledge=destdata['acknowledge_required'],
acknowledge_timeout=destdata.get('acknowledge_timeout', None),
@@ -743,11 +743,11 @@ class IpmiHandler:
alertargs['ip'] = alertparms['ip']
if 'retries' in alertparms:
alertargs['retries'] = alertparms['retries']
self.ipmicmd.set_alert_destination(destination=alertidx,
await self.ipmicmd.set_alert_destination(destination=alertidx,
**alertargs)
return
elif self.op == 'delete':
self.ipmicmd.clear_alert_destination(alertidx)
await self.ipmicmd.clear_alert_destination(alertidx)
return
raise Exception('Not implemented')