From 39f3bb6e8e728df23a7ea52fd2cdae63bee92c1d Mon Sep 17 00:00:00 2001 From: Robert Latta <robert.latta@geant.org> Date: Fri, 30 Apr 2021 15:24:09 +0000 Subject: [PATCH] removed redundant code --- inventory_provider/routes/classifier.py | 53 +++++-------------------- 1 file changed, 9 insertions(+), 44 deletions(-) diff --git a/inventory_provider/routes/classifier.py b/inventory_provider/routes/classifier.py index 5d476109..1aaf7d15 100644 --- a/inventory_provider/routes/classifier.py +++ b/inventory_provider/routes/classifier.py @@ -104,7 +104,7 @@ def after_request(resp): @lru_cache(256) -def get_ims_equipment_name(equipment_name: str, r: Redis=None) -> str: +def get_ims_equipment_name(equipment_name: str, r: Redis = None) -> str: if not r: r = common.get_current_redis() ims_equipment_name = equipment_name.upper() @@ -120,42 +120,6 @@ def get_ims_interface(interface: str) -> str: return interface.upper() -def related_interfaces(hostname, interface): - r = common.get_current_redis() - prefix = f'netconf-interfaces:{hostname}:' - for k in r.keys(f'{prefix}{interface}.*'): - k = k.decode('utf-8') - assert k.startswith(prefix) # sanity - assert len(k) > len(prefix) # sanity (contains at least an interface) - yield k[len(prefix):] - - -def get_related_services(source_equipment: str, interface: str, r) -> dict: - """ - Finds the related-services for the given interface - and also gets the related-services for the related interfaces - e.g. ae20 will also find services on all logical units of ae20 (ae20.1 ...) - :param source_equipment: equipment name - :param interface: interface name - :param r: redis connection - :return: Dict - """ - ims_source_equipment = get_ims_equipment_name(source_equipment, r) - ims_interface = get_ims_interface(interface) - if_services = r.get(f'ims:interface_services:{ims_source_equipment}:' - f'{ims_interface}') - if if_services: - for s in json.loads(if_services.decode('utf-8')): - yield from s['related-services'] - for related in related_interfaces(source_equipment, interface): - ims_interface = get_ims_interface(related) - rif_services = r.get( - f'ims:interface_services:{ims_source_equipment}:{ims_interface}') - if rif_services: - for s in json.loads(rif_services.decode('utf-8')): - yield from s['related-services'] - - def get_interface_services_and_loc(ims_source_equipment, ims_interface, redis): def _format_service(_s): @@ -174,18 +138,20 @@ def get_interface_services_and_loc(ims_source_equipment, ims_interface, redis): result = {} if raw_services: result['services'] = [] + related_services = {} contacts = set() for s in json.loads(raw_services.decode('utf-8')): + related_services.update( + {r['id']: r for r in s['related-services']}) if s['monitored']: contacts.update(set(s.pop('contacts', set()))) _format_service(s) result['services'].append(s) + result['related-services'] = list(related_services.values()) result['contacts'] = sorted(list(contacts)) # non-monitored related services are not added by the worker so don't # need filtering out here - result['related-services'] = list( - get_related_services(ims_source_equipment, ims_interface, redis)) if not result['services']: result.pop('services', None) if result['related-services']: @@ -548,8 +514,8 @@ def peer_info(address_str: str) -> Response: result['vpn-rr-peer-info'] = vpn_rr_peering_info result['locations'].append(build_locations( _location_from_equipment( - get_ims_equipment_name(vpn_rr_peering_info['router'], r) - , r))) + get_ims_equipment_name( + vpn_rr_peering_info['router'], r), r))) asn_group_info = _asn_group_info(r, address_str) if asn_group_info: @@ -622,7 +588,6 @@ def get_trap_metadata(source_equipment: str, interface: str, circuit_id: str) \ cache_key = f'classifier-cache:infinera:{source_equipment}:{interface}' - result = _ignore_cache_or_retrieve(request, cache_key, r) if not result: @@ -918,8 +883,8 @@ def get_coriant_info(equipment_name: str, entity_string: str) -> Response: p['a']['pop']['name'] = s.get('pop_name', '') p['a']['pop']['city'] = s.get('pop_name', '') p['a']['pop']['abbreviation'] = s.get('pop_abbreviation', '') - p['b'] = p['a'] - result['path'] = p + p['b'] = p['a'] + result['path'] = p result['locations'] = _remove_duplicates_from_list(result['locations']) result = json.dumps(result) -- GitLab