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:
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:
logger.error(f'error looking up location for {equipment_name}')
logger.error(f'error looking up location for key: {k}')
return None
result = json.loads(result.decode('utf-8'))
......@@ -148,7 +149,7 @@ def get_related_services(source_equipment: str, interface: str, r) -> dict:
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):
keys = {
......@@ -160,19 +161,15 @@ def get_interface_services_and_locs(ims_source_equipment, ims_interface, r):
keys_to_remove = set(_s.keys()) - keys
for k in keys_to_remove:
_s.pop(k)
result = {
'locations': []
}
raw_services = r.get(
raw_services = redis.get(
f'ims:interface_services:{ims_source_equipment}:{ims_interface}')
result = {}
if raw_services:
result['services'] = json.loads(raw_services.decode('utf-8'))
for s in result['services']:
_format_service(s)
result['related-services'] = \
list(get_related_services(ims_source_equipment, ims_interface, r))
result['locations'] = \
list(_location_from_services(result['services'], r))
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']:
......@@ -181,11 +178,8 @@ def get_interface_services_and_locs(ims_source_equipment, ims_interface, r):
else:
result.pop('related-services', None)
if not result.get('locations', None):
locations = build_locations(
_location_from_equipment(ims_source_equipment, r))
result['locations'] = [locations] if locations else []
result['locations'] = _remove_duplicates_from_list(result['locations'])
loc = _location_from_equipment(ims_source_equipment, redis)
result['locations'] = [build_locations(loc)] if loc else []
return result
......@@ -277,13 +271,18 @@ def get_juniper_link_info(source_equipment: str, interface: str) -> Response:
result['interface']['bundle_members'] = []
result.update(
get_interface_services_and_locs(
get_interface_services_and_loc(
ims_source_equipment,
ims_interface,
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)
# cache this data for the next call
r.set(cache_key, result.encode('utf-8'))
......@@ -543,7 +542,7 @@ def peer_info(address_str: str) -> Response:
ims_equipment = get_ims_equipment_name(interface["router"])
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_interface,
r
......@@ -611,7 +610,7 @@ def get_trap_metadata(source_equipment: str, interface: str, circuit_id: str) \
'locations': []
}
result.update(get_interface_services_and_locs(
result.update(get_interface_services_and_loc(
ims_source_equipment,
ims_interface,
r
......@@ -808,7 +807,7 @@ def get_coriant_info(equipment_name: str, entity_string: str) -> Response:
}
interface_name = f'{card_id}/{port}'
result.update(get_interface_services_and_locs(
result.update(get_interface_services_and_loc(
ims_source_equipment,
interface_name,
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