From 95952b523175d6f56d34751165e0da658ad0a978 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Wed, 5 Mar 2025 13:13:34 -0500 Subject: [PATCH] Detect active nic in multi-nic BMC discovery --- .../discovery/handlers/redfishbmc.py | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/confluent_server/confluent/discovery/handlers/redfishbmc.py b/confluent_server/confluent/discovery/handlers/redfishbmc.py index 5f3c34fb..b8764361 100644 --- a/confluent_server/confluent/discovery/handlers/redfishbmc.py +++ b/confluent_server/confluent/discovery/handlers/redfishbmc.py @@ -276,7 +276,25 @@ class NodeHandler(generic.NodeHandler): continue actualnics.append(candnic) if len(actualnics) != 1: - raise Exception("Multi-interface BMCs are not supported currently") + compip = self.ipaddr + if ':' in compip: + compip = compip.split('%')[0] + ipkey = 'IPv6Addresses' + else: + ipkey = 'IPv6Addresses' + actualnic = None + for curractnic in actualnics: + currnicinfo = wc.grab_json_response(curractnic) + for targipaddr in currnicinfo.get(ipkey, []): + targipaddr = targipaddr.get('Address', 'Z') + if compip == targipaddr: + actualnic = curractnic + break + if actualnic: + break + else: + raise Exception("Unable to detect active NIC of multi-nic bmc") + actualnics = [actualnic] currnet = wc.grab_json_response(actualnics[0]) netconfig = netutil.get_nic_config(self.configmanager, nodename, ip=newip) newconfig = {