From 1a5122748d98ea455664f73131aea5029434f343 Mon Sep 17 00:00:00 2001 From: Erik Reid <erik.reid@geant.org> Date: Fri, 13 Dec 2019 10:58:38 +0100 Subject: [PATCH] generate poller api response based on new backend schema --- inventory_provider/routes/poller.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/inventory_provider/routes/poller.py b/inventory_provider/routes/poller.py index ad87d686..52fcd5dc 100644 --- a/inventory_provider/routes/poller.py +++ b/inventory_provider/routes/poller.py @@ -88,12 +88,23 @@ def poller_interface_oids(hostname): @common.require_accepts_json def service_category_interfaces(category): - result = [] - - r = common.get_current_redis() - for k in r.scan_iter(f'interface-services:{category.lower()}:*'): - ifc = r.get(k.decode('utf-8')) - result.append(json.loads(ifc.decode('utf-8'))) + def _interfaces(): + r = common.get_current_redis() + for k in r.scan_iter(f'interface-services:{category.lower()}:*'): + cached_ifc = r.get(k.decode('utf-8')).decode('utf-8') + cached_ifc = json.loads(cached_ifc) + basic_ifc_info = dict() + for k in ['description', 'interface', 'router']: + basic_ifc_info[k] = cached_ifc[k] + if not cached_ifc['users']: + yield basic_ifc_info + else: + for user in cached_ifc['users']: + ifc = {'user': user} + ifc.update(basic_ifc_info) + yield ifc + + result = list(_interfaces()) if not result: return Response( -- GitLab