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

Added single endpoint for all data RE DBOARD3-573

parent 6a9a582e
No related branches found
No related tags found
No related merge requests found
...@@ -137,7 +137,7 @@ def get_interfaces(node): ...@@ -137,7 +137,7 @@ def get_interfaces(node):
@routes.route('/impact/<site>', defaults={'node': None, 'interface_': None}) @routes.route('/impact/<site>', defaults={'node': None, 'interface_': None})
@routes.route('/impact/<site>/<node>', defaults={'interface_': None}) @routes.route('/impact/<site>/<node>', defaults={'interface_': None})
@routes.route('/impact/<site>/<node>/<interface_>') @routes.route('/impact/<site>/<node>/<path:interface_>')
def get_impact(site, node, interface_): def get_impact(site, node, interface_):
cache_key_end = ':'.join(filter(None, (site, node, interface_))) cache_key_end = ':'.join(filter(None, (site, node, interface_)))
cache_key = f"classifier-cache:mic:impact:{cache_key_end}" cache_key = f"classifier-cache:mic:impact:{cache_key_end}"
...@@ -194,3 +194,36 @@ def get_impact(site, node, interface_): ...@@ -194,3 +194,36 @@ def get_impact(site, node, interface_):
r.set(cache_key, result.encode('utf-8')) r.set(cache_key, result.encode('utf-8'))
return Response(result, mimetype='application/json') return Response(result, mimetype='application/json')
@routes.route("/all-data")
def get_everything():
cache_key = "classifier-cache:mic:impact:all-data"
logger.debug(cache_key)
r = common.get_current_redis()
result = _ignore_cache_or_retrieve(request, cache_key, r)
if not result:
config = current_app.config['INVENTORY_PROVIDER_CONFIG']
all_data = defaultdict(lambda: defaultdict(dict))
def _get_data(_key_pattern):
for doc in common.load_json_docs(
config_params=config,
key_pattern=_key_pattern,
num_threads=20,):
yield from doc['value']
key_pattern = "ims:interface_services:*"
data = _get_data(key_pattern)
if data:
for d in data:
if d.get('related-services'):
site = f'{d["pop_name"]} ({d["pop_abbreviation"]})'
eq_name = d['equipment']
if_name = d['port']
all_data[site][eq_name][if_name] = d['related-services']
result = json.dumps(all_data)
r.set(cache_key, result.encode('utf-8'))
return Response(result, mimetype='application/json')
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment