From 6800c8055c1cbddd661dfe891e13b0525747f29d Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Tue, 28 May 2019 17:01:26 -0400 Subject: [PATCH] Implement IPMI-free xcc config (work in progress) --- .../confluent/discovery/handlers/generic.py | 17 +++ .../confluent/discovery/handlers/xcc.py | 138 +++++++++++++++++- 2 files changed, 152 insertions(+), 3 deletions(-) diff --git a/confluent_server/confluent/discovery/handlers/generic.py b/confluent_server/confluent/discovery/handlers/generic.py index 81085246..455e3b8e 100644 --- a/confluent_server/confluent/discovery/handlers/generic.py +++ b/confluent_server/confluent/discovery/handlers/generic.py @@ -68,6 +68,23 @@ class NodeHandler(object): def _savecert(self, certificate): self._fp = certificate return True + + def get_node_credentials(self, nodename, creds, defuser, defpass): + user = creds.get(nodename, {}).get( + 'secret.hardwaremanagementuser', {}).get('value', None) + havecustomcreds = False + if user is not None and user != defuser: + havecustomcreds = True + else: + user = defuser + passwd = creds.get(nodename, {}).get( + 'secret.hardwaremanagementpassword', {}).get('value', None) + if passwd is not None and passwd != defpass: + havecustomcreds = True + else: + passwd = defpass + return user, passwd, not havecustomcreds + @property def cert_fail_reason(self): diff --git a/confluent_server/confluent/discovery/handlers/xcc.py b/confluent_server/confluent/discovery/handlers/xcc.py index 1e222627..be330ed7 100644 --- a/confluent_server/confluent/discovery/handlers/xcc.py +++ b/confluent_server/confluent/discovery/handlers/xcc.py @@ -14,8 +14,18 @@ import confluent.discovery.handlers.imm as immhandler import confluent.util as util +import json import pyghmi.exceptions as pygexc -import pyghmi.ipmi.oem.lenovo.imm as imm +import pyghmi.redfish.oem.lenovo.xcc as xcc +import pyghmi.util.webclient as webclient +import struct + +def fixup_uuid(uuidprop): + baduuid = ''.join(uuidprop.split()) + uuidprefix = (baduuid[:8], baduuid[8:12], baduuid[12:16]) + a = struct.pack('