diff --git a/inventory_provider/db/ims_data.py b/inventory_provider/db/ims_data.py index 0851fa3e0160ea570ff137308eb85c6bc06408e7..d4ef64ecf25928e8231642060993eef2e640418c 100644 --- a/inventory_provider/db/ims_data.py +++ b/inventory_provider/db/ims_data.py @@ -67,14 +67,20 @@ NODE_LOCATION_SCHEMA = { } -def get_flex_ils_entities(ds: IMS): - for f in ds.get_all_entities('FLEXILS_SCHF_SUBINTERFACES'): - yield { - 'circuit_id': f['circuitid'], - 'node_name': f['nodename'], - 'port_name': f['port'], - 'full_port_name': f['port_ref'] - } +def get_flexils_by_circuitid(ds: IMS): + by_circuit = defaultdict(list) + found_keys = set() + for entity in ds.get_all_entities('FLEXILS_SCHF_SUBINTERFACES'): + k = f'{entity["nodename"]}:{entity["port_ref"]}' + if k in found_keys: + continue + found_keys.add(k) + by_circuit[entity['circuitid']].append({ + 'node_name': entity['nodename'], + 'full_port_name': entity['port_ref'], + 'key': k + }) + return dict(by_circuit) def get_non_monitored_circuit_ids(ds: IMS):