From cacfce214f7b66073cf2e630822d1abb2b8b88f2 Mon Sep 17 00:00:00 2001 From: gosforthcross Date: Tue, 30 Jun 2026 11:25:11 +0200 Subject: [PATCH] Add fallback for generic redfish and add specific MEGWARE code path for EUREKA --- .../confluent/discovery/protocols/ssdp.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/confluent_server/confluent/discovery/protocols/ssdp.py b/confluent_server/confluent/discovery/protocols/ssdp.py index fc89aaaa..a6e77b8e 100644 --- a/confluent_server/confluent/discovery/protocols/ssdp.py +++ b/confluent_server/confluent/discovery/protocols/ssdp.py @@ -119,6 +119,9 @@ def _process_snoop(peer, rsp, mac, known_peers, newmacs, peerbymacaddress, byeha elif value.endswith('/DeviceDescription.json'): targurl = '/DeviceDescription.json' targtype = 'lenovo-xcc' + elif value.endswith('/redfish/v1/'): + targurl = '/redfish/v1/' + targtype = 'redfish-server' else: return if handler: @@ -527,12 +530,26 @@ async def check_fish(urldata, port=443, verifycallback=None): data['services'] = ['lenovo-smm3'] data['attributes'] = peerinfo return data + # NOTE: Fallback for generic redfish services without DeviceDescription.json or other explicit identifier + try: + peerinfo = await wc.grab_json_response('/redfish/v1/') + if peerinfo and 'UUID' in peerinfo: + data['services'] = [targtype] + data['uuid'] = peerinfo['UUID'].lower() + return data + except Exception: + pass return None url = '/redfish/v1/' peerinfo = await wc.grab_json_response('/redfish/v1/') if url == '/redfish/v1/': if 'UUID' in peerinfo: - data['services'] = [targtype] + vendor = peerinfo.get('Vendor', '') + # NOTE: Specific path for EUREKA MEGWARE Chassis + if vendor == 'Megware': + data['services'] = ['megware-chassis'] + else: + data['services'] = [targtype] data['uuid'] = peerinfo['UUID'].lower() return data return None