From 63cf0e218568c7bc3cbde08ace1665a156ca7e41 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Thu, 9 Jan 2025 13:54:12 -0500 Subject: [PATCH] Handle new variants of USB ethernet configuration in XCC3 XCC3 has renamed some normalized settings, detect and adjust to the detected dialect. Change-Id: Ic248c9aac01c19041e44ab116f8c59e41fcda2b3 --- pyghmi/redfish/oem/lenovo/xcc3.py | 41 +++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/pyghmi/redfish/oem/lenovo/xcc3.py b/pyghmi/redfish/oem/lenovo/xcc3.py index 9fd5b1d1..4ca258cf 100644 --- a/pyghmi/redfish/oem/lenovo/xcc3.py +++ b/pyghmi/redfish/oem/lenovo/xcc3.py @@ -155,17 +155,24 @@ class OEMHandler(generic.OEMHandler): settings[stg] = { 'value': acctsrv[self.acctmap[stg]]} bmcstgs = self._do_web_request('/redfish/v1/Managers/1/Oem/Lenovo/BMCSettings') - usbeth = 'Enable' if bmcstgs['Attributes']['NetMgrUsb0Enabled'] == 'True' else 'Disable' + bmcattrs = bmcstgs['Attributes'] + self.ethoverusb = True if 'EthOverUSBEnabled' in bmcattrs else False + usbcfg = bmcattrs.get('NetMgrUsb0Enabled', bmcattrs.get('EthOverUSBEnabled', 'False')) + usbeth = 'Enable' if usbcfg == 'True' else 'Disable' settings['usb_ethernet'] = { 'value': usbeth } - fwd = 'Enable' if bmcstgs['Attributes']['NetMgrUsb0PortForwardingEnabled'] == 'True' else 'Disable' + usbcfg = bmcattrs.get('NetMgrUsb0PortForwardingEnabled', bmcattrs.get('EthOverUSBPortForwardingEnabled', 'False')) + fwd = 'Enable' if usbcfg == 'True' else 'Disable' settings['usb_ethernet_port_forwarding'] = fwd mappings = [] for idx in range(1, 11): - if bmcstgs['Attributes']['NetMgrUsb0PortForwardingPortMapping.{}'.format(idx)] == '0,0': + keyname = 'NetMgrUsb0PortForwardingPortMapping.{}'.format(idx) + keyaltname = 'EthOverUSBPortForwardingPortMapping_{}'.format(idx) + currval = bmcattrs.get(keyname, bmcattrs.get(keyaltname, '0,0')) + if currval == '0,0': continue - src, dst = bmcstgs['Attributes']['NetMgrUsb0PortForwardingPortMapping.{}'.format(idx)].split(',') + src, dst = currval.split(',') mappings.append('{}:{}'.format(src,dst)) settings['usb_forwarded_ports'] = {'value': ','.join(mappings)} return settings @@ -218,25 +225,33 @@ class OEMHandler(generic.OEMHandler): def apply_usb_configuration(self, usbsettings): bmcattribs = {} + if not hasattr(self, 'ethoverusb'): + self.get_bmc_configuration() + if 'usb_forwarded_ports' in usbsettings: pairs = usbsettings['usb_forwarded_ports'].split(',') idx = 1 for pair in pairs: + if self.ethoverusb: + keyname = 'EthOverUSBPortForwardingPortMapping_{}'.format(idx) + else: + keyname = 'NetMgrUsb0PortForwardingPortMapping.{}'.format(idx) pair = pair.replace(':', ',') - bmcattribs[ - 'NetMgrUsb0PortForwardingPortMapping.{}'.format( - idx)] = pair + bmcattribs[keyname] = pair idx += 1 while idx < 11: - bmcattribs[ - 'NetMgrUsb0PortForwardingPortMapping.{}'.format( - idx)] = '0,0' + if self.ethoverusb: + keyname = 'EthOverUSBPortForwardingPortMapping_{}'.format(idx) + else: + keyname = 'NetMgrUsb0PortForwardingPortMapping.{}'.format(idx) + bmcattribs[keyname] = '0,0' idx += 1 if 'usb_ethernet' in usbsettings: - bmcattribs['NetMgrUsb0Enabled'] = usbsettings['usb_ethernet'] + keyname = 'EthOverUSBEnabled' if self.ethoverusb else 'NetMgrUsb0Enabled' + bmcattribs[keyname] = usbsettings['usb_ethernet'] if 'usb_ethernet_port_forwarding' in usbsettings: - bmcattribs[ - 'NetMgrUsb0PortForwardingEnabled'] = usbsettings[ + keyname = 'EthOverUSBPortForwardingEnabled' if self.ethoverusb else 'NetMgrUsb0PortForwardingEnabled' + bmcattribs[keyname] = usbsettings[ 'usb_ethernet_port_forwarding'] self._do_web_request( '/redfish/v1/Managers/1/Oem/Lenovo/BMCSettings',