mirror of
https://github.com/xcat2/confluent.git
synced 2026-09-04 20:17:58 +00:00
Read power and boot from a service that has no system
A Redfish service may publish no Systems collection, and power and cooling equipment does exactly that. sysurl is then None, and get_power and get_bootdev handed it straight to a request, raising TypeError from inside the url library. sysinfo already guarded the same field. Both now ask through _system_url and get a refusal naming what is missing. DMTF publish three services of this shape, which is why they sit commented out in inventory-dmtf.yaml.
This commit is contained in:
@@ -501,6 +501,18 @@ class Command(object):
|
||||
'BMC does not implement extended firmware information')
|
||||
return self._varfwinventory
|
||||
|
||||
def _system_url(self):
|
||||
"""The system this client acts on, or a refusal that says so.
|
||||
|
||||
Power and cooling equipment publishes no Systems collection, which is
|
||||
legal. sysurl is then None, and handing that to a request raised
|
||||
TypeError from inside the url library.
|
||||
"""
|
||||
if not self.sysurl:
|
||||
raise exc.UnsupportedFunctionality(
|
||||
'this service publishes no computer system to act on')
|
||||
return self.sysurl
|
||||
|
||||
async def sysinfo(self):
|
||||
if not self.sysurl:
|
||||
return {}
|
||||
@@ -517,7 +529,7 @@ class Command(object):
|
||||
return await self._do_web_request(bmcurl)
|
||||
|
||||
async def get_power(self):
|
||||
currinfo = await self._do_web_request(self.sysurl, cache=False)
|
||||
currinfo = await self._do_web_request(self._system_url(), cache=False)
|
||||
return {'powerstate': str(currinfo['PowerState'].lower())}
|
||||
|
||||
async def reseat_bay(self, bay):
|
||||
@@ -640,7 +652,7 @@ class Command(object):
|
||||
:raises: PyghmiException on error
|
||||
:returns: dict
|
||||
"""
|
||||
result = await self._do_web_request(self.sysurl)
|
||||
result = await self._do_web_request(self._system_url())
|
||||
overridestate = result.get('Boot', {}).get(
|
||||
'BootSourceOverrideEnabled', None)
|
||||
if overridestate == 'Disabled':
|
||||
|
||||
Reference in New Issue
Block a user