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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user