Skip to content
Snippets Groups Projects
Commit 14eeb4d5 authored by Robert Latta's avatar Robert Latta
Browse files

removed related services from bundle members; only reported location for interface source

parent 2248bd16
No related branches found
No related tags found
No related merge requests found
...@@ -46,9 +46,10 @@ def _remove_duplicates_from_list(all_: list) -> list: ...@@ -46,9 +46,10 @@ def _remove_duplicates_from_list(all_: list) -> list:
def _location_from_equipment(equipment_name: str, r: Redis) -> Optional[dict]: def _location_from_equipment(equipment_name: str, r: Redis) -> Optional[dict]:
result = r.get(f'ims:location:{equipment_name}') k = f'ims:location:{equipment_name}'
result = r.get(k)
if not result: if not result:
logger.error(f'error looking up location for {equipment_name}') logger.error(f'error looking up location for key: {k}')
return None return None
result = json.loads(result.decode('utf-8')) result = json.loads(result.decode('utf-8'))
...@@ -148,7 +149,7 @@ def get_related_services(source_equipment: str, interface: str, r) -> dict: ...@@ -148,7 +149,7 @@ def get_related_services(source_equipment: str, interface: str, r) -> dict:
yield from s['top-level-services'] yield from s['top-level-services']
def get_interface_services_and_locs(ims_source_equipment, ims_interface, r): def get_interface_services_and_loc(ims_source_equipment, ims_interface, redis):
def _format_service(_s): def _format_service(_s):
keys = { keys = {
...@@ -160,19 +161,15 @@ def get_interface_services_and_locs(ims_source_equipment, ims_interface, r): ...@@ -160,19 +161,15 @@ def get_interface_services_and_locs(ims_source_equipment, ims_interface, r):
keys_to_remove = set(_s.keys()) - keys keys_to_remove = set(_s.keys()) - keys
for k in keys_to_remove: for k in keys_to_remove:
_s.pop(k) _s.pop(k)
result = { raw_services = redis.get(
'locations': []
}
raw_services = r.get(
f'ims:interface_services:{ims_source_equipment}:{ims_interface}') f'ims:interface_services:{ims_source_equipment}:{ims_interface}')
result = {}
if raw_services: if raw_services:
result['services'] = json.loads(raw_services.decode('utf-8')) result['services'] = json.loads(raw_services.decode('utf-8'))
for s in result['services']: for s in result['services']:
_format_service(s) _format_service(s)
result['related-services'] = \ result['related-services'] = list(
list(get_related_services(ims_source_equipment, ims_interface, r)) get_related_services(ims_source_equipment, ims_interface, redis))
result['locations'] = \
list(_location_from_services(result['services'], r))
if not result['services']: if not result['services']:
result.pop('services', None) result.pop('services', None)
if result['related-services']: if result['related-services']:
...@@ -181,11 +178,8 @@ def get_interface_services_and_locs(ims_source_equipment, ims_interface, r): ...@@ -181,11 +178,8 @@ def get_interface_services_and_locs(ims_source_equipment, ims_interface, r):
else: else:
result.pop('related-services', None) result.pop('related-services', None)
if not result.get('locations', None): loc = _location_from_equipment(ims_source_equipment, redis)
locations = build_locations( result['locations'] = [build_locations(loc)] if loc else []
_location_from_equipment(ims_source_equipment, r))
result['locations'] = [locations] if locations else []
result['locations'] = _remove_duplicates_from_list(result['locations'])
return result return result
...@@ -277,13 +271,18 @@ def get_juniper_link_info(source_equipment: str, interface: str) -> Response: ...@@ -277,13 +271,18 @@ def get_juniper_link_info(source_equipment: str, interface: str) -> Response:
result['interface']['bundle_members'] = [] result['interface']['bundle_members'] = []
result.update( result.update(
get_interface_services_and_locs( get_interface_services_and_loc(
ims_source_equipment, ims_source_equipment,
ims_interface, ims_interface,
r r
) )
) )
# don't want to report related services for bundle members, just the
# aggregate
if result['interface']['bundle']:
result['related-services'] = []
result = json.dumps(result) result = json.dumps(result)
# cache this data for the next call # cache this data for the next call
r.set(cache_key, result.encode('utf-8')) r.set(cache_key, result.encode('utf-8'))
...@@ -543,7 +542,7 @@ def peer_info(address_str: str) -> Response: ...@@ -543,7 +542,7 @@ def peer_info(address_str: str) -> Response:
ims_equipment = get_ims_equipment_name(interface["router"]) ims_equipment = get_ims_equipment_name(interface["router"])
ims_interface = get_ims_interface(interface["interface name"]) ims_interface = get_ims_interface(interface["interface name"])
services_and_locs = get_interface_services_and_locs( services_and_locs = get_interface_services_and_loc(
ims_equipment, ims_equipment,
ims_interface, ims_interface,
r r
...@@ -611,7 +610,7 @@ def get_trap_metadata(source_equipment: str, interface: str, circuit_id: str) \ ...@@ -611,7 +610,7 @@ def get_trap_metadata(source_equipment: str, interface: str, circuit_id: str) \
'locations': [] 'locations': []
} }
result.update(get_interface_services_and_locs( result.update(get_interface_services_and_loc(
ims_source_equipment, ims_source_equipment,
ims_interface, ims_interface,
r r
...@@ -808,7 +807,7 @@ def get_coriant_info(equipment_name: str, entity_string: str) -> Response: ...@@ -808,7 +807,7 @@ def get_coriant_info(equipment_name: str, entity_string: str) -> Response:
} }
interface_name = f'{card_id}/{port}' interface_name = f'{card_id}/{port}'
result.update(get_interface_services_and_locs( result.update(get_interface_services_and_loc(
ims_source_equipment, ims_source_equipment,
interface_name, interface_name,
r r
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment