diff --git a/confluent_server/confluent/discovery/handlers/redfishbmc.py b/confluent_server/confluent/discovery/handlers/redfishbmc.py index b8764361..df94f897 100644 --- a/confluent_server/confluent/discovery/handlers/redfishbmc.py +++ b/confluent_server/confluent/discovery/handlers/redfishbmc.py @@ -68,14 +68,19 @@ class NodeHandler(generic.NodeHandler): self._srvroot = srvroot return self._srvroot + def get_manager_url(self, wc): + mgrs = self.srvroot(wc).get('Managers', {}).get('@odata.id', None) + if not mgrs: + raise Exception("No Managers resource on BMC") + rsp = wc.grab_json_response(mgrs) + if len(rsp.get('Members', [])) != 1: + raise Exception("Can not handle multiple Managers") + mgrurl = rsp['Members'][0]['@odata.id'] + return mgrurl + def mgrinfo(self, wc): if not self._mgrinfo: - mgrs = self.srvroot(wc)['Managers']['@odata.id'] - rsp = wc.grab_json_response(mgrs) - if len(rsp['Members']) != 1: - raise Exception("Can not handle multiple Managers") - mgrurl = rsp['Members'][0]['@odata.id'] - self._mgrinfo = wc.grab_json_response(mgrurl) + self._mgrinfo = wc.grab_json_response(self.get_manager_url(wc)) return self._mgrinfo diff --git a/confluent_server/confluent/discovery/handlers/xcc3.py b/confluent_server/confluent/discovery/handlers/xcc3.py index 050186e9..de2294a0 100644 --- a/confluent_server/confluent/discovery/handlers/xcc3.py +++ b/confluent_server/confluent/discovery/handlers/xcc3.py @@ -29,6 +29,9 @@ class NodeHandler(redfishbmc.NodeHandler): def get_firmware_default_account_info(self): return ('USERID', 'PASSW0RD') + def get_manager_url(self, wc): + return '/redfish/v1/Managers/1' + def scan(self): ip, port = self.get_web_port_and_ip() c = webclient.SecureHTTPConnection(ip, port,