diff --git a/confluent_server/aiohmi/redfish/command.py b/confluent_server/aiohmi/redfish/command.py index a0944879..d6dbf1fa 100644 --- a/confluent_server/aiohmi/redfish/command.py +++ b/confluent_server/aiohmi/redfish/command.py @@ -897,6 +897,21 @@ class Command(object): if not targurl: raise Exception("Unable to identify system url") targinfo = await self._do_web_request(targurl) + if ('IndicatorLED' not in targinfo + and 'LocationIndicatorActive' not in targinfo): + # The indicator belongs to the chassis and may be described only + # there, which is where reading looks too. A shared chassis is + # somebody else's indicator, as in get_identify. + for chassis in targinfo.get('Links', {}).get('Chassis', []): + chassisinfo = await self._do_web_request(chassis['@odata.id']) + if len(chassisinfo.get('Links', {}).get( + 'ComputerSystems', [])) > 1: + continue + if ('IndicatorLED' in chassisinfo + or 'LocationIndicatorActive' in chassisinfo): + targurl = chassis['@odata.id'] + targinfo = chassisinfo + break if ('IndicatorLED' not in targinfo and 'LocationIndicatorActive' not in targinfo): # Reading already knows when there is no indicator to speak of, so