2
0
mirror of https://github.com/xcat2/confluent.git synced 2026-09-28 16:20:54 +00:00

Wire up generic redfish device configuration

Have redfishbmc be able to attempt a redfish onboarding.

User must supply initial user and password, since we have no idea about the vendor choices at this level.
This commit is contained in:
Jarrod Johnson
2026-09-23 15:08:55 -04:00
parent c72821cdfa
commit 23e6c70449
2 changed files with 19 additions and 3 deletions
+2 -1
View File
@@ -78,6 +78,7 @@ import confluent.discovery.handlers.smm as smm
import confluent.discovery.handlers.xcc as xcc
import confluent.discovery.handlers.xcc3 as xcc3
import confluent.discovery.handlers.smm3 as smm3
import confluent.discovery.handlers.redfishbmc as redfishbmc
import confluent.discovery.handlers.megarac as megarac
import confluent.discovery.handlers.nvos as nvos
import confluent.discovery.handlers.eureka as eureka
@@ -132,7 +133,7 @@ nodehandlers = {
'onie-switch': None,
'cumulus-switch': None,
'affluent-switch': None,
'generic-redfish': None,
'generic-redfish': redfishbmc,
'generic-https': None,
'generic-ssh': None,
'nvos-switch': nvos,
@@ -54,6 +54,8 @@ class NodeHandler(generic.NodeHandler):
self.atdefault = True
self._srvroot = None
self._mgrinfo = None
self.defuser = None
self.defpass = None
super(NodeHandler, self).__init__(info, configmanager)
async def srvroot(self, wc):
@@ -117,13 +119,20 @@ class NodeHandler(generic.NodeHandler):
async def _get_wc(self):
await self.get_https_cert()
defuser, defpass = self.get_firmware_default_account_info()
wc = webclient.WebConnection(self.ipaddr, 443, verifycallback=self.validate_cert)
wc.set_basic_credentials(defuser, defpass)
wc.set_basic_credentials(self.targuser, self.targpass)
wc.set_header('Content-Type', 'application/json')
wc.set_header('Accept', 'application/json')
wc.set_header('Host', 'credible-bmc')
rsp, status = await wc.grab_json_response_with_status('/redfish/v1/Managers')
if status >= 200 and status < 300:
self.trieddefault = True
self.curruser = self.targuser
self.currpass = self.targpass
return wc
if not self.trieddefault:
defuser, defpass = self.defuser, self.defpass
wc.set_basic_credentials(defuser, defpass)
rsp, status = await wc.grab_json_response_with_status('/redfish/v1/Managers')
if status == 403:
self.trieddefault = True
@@ -230,6 +239,12 @@ class NodeHandler(generic.NodeHandler):
defuser = ndefuser
if not defpass:
defpass = ndefpass
if not isinstance(defuser, str) and isinstance(defuser, bytes):
defuser = defuser.decode('utf-8')
if not isinstance(defpass, str) and isinstance(defpass, bytes):
defpass = defpass.decode('utf-8')
self.defuser = defuser
self.defpass = defpass
user, passwd, _ = self.get_node_credentials(
nodename, creds, defuser, defpass)
user = util.stringify(user)