diff --git a/confluent_server/confluent/discovery/handlers/smm3.py b/confluent_server/confluent/discovery/handlers/smm3.py index bea1525e..7e663dc2 100644 --- a/confluent_server/confluent/discovery/handlers/smm3.py +++ b/confluent_server/confluent/discovery/handlers/smm3.py @@ -26,6 +26,19 @@ getaddrinfo = eventlet.support.greendns.getaddrinfo class NodeHandler(redfishbmc.NodeHandler): devname = 'SMM3' + def scan(self): + attrs = self.info.get('attributes', {}) + mtm = attrs.get('enclosure-machinetype-model', None) + if mtm: + self.info['modelnumber'] = mtm.strip() + sn = attrs.get('enclosure-serial-number', None) + if sn: + self.info['serialnumber'] = sn.strip() + modelname = attrs.get('enclosure-component-name', None) + if modelname: + modelname = modelname.split(' MT:')[0] + self.info['modelname'] = modelname + def get_firmware_default_account_info(self): return ('USERID', 'PASSW0RD') diff --git a/confluent_server/confluent/discovery/protocols/ssdp.py b/confluent_server/confluent/discovery/protocols/ssdp.py index 8a9ab396..28f14fe8 100644 --- a/confluent_server/confluent/discovery/protocols/ssdp.py +++ b/confluent_server/confluent/discovery/protocols/ssdp.py @@ -463,7 +463,7 @@ def check_fish(urldata, port=443, verifycallback=None): return None if url == '/DeviceDescription.json': if not peerinfo: - if data['services'] == ['urn::dmtf-org:service:redfish-rest:']: + if data.get('services', None) == ['urn::dmtf-org:service:redfish-rest:']: peerinfo = wc.grab_json_response('/redfish/v1/') if peerinfo: data['services'] = ['lenovo-smm3'] @@ -485,6 +485,12 @@ def check_fish(urldata, port=443, verifycallback=None): data['services'] = ['lenovo-xcc'] if 'xcc-variant' not in peerinfo else ['lenovo-xcc' + peerinfo['xcc-variant']] return data except (IndexError, KeyError): + if 'type' in peerinfo and peerinfo['type'].lower() == 'lenovo-smm3': + del peerinfo['xcc-variant'] + data['uuid'] = peerinfo['enclosure-uuid'] + data['services'] = ['lenovo-smm3'] + data['attributes'] = peerinfo + return data return None url = '/redfish/v1/' peerinfo = wc.grab_json_response('/redfish/v1/')