diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py index a36a5faf2214f572c9f0eca9170fea3782f51e84..fa4b8c3513eaa8a28e6074749748826f32aefbc2 100644 --- a/inventory_provider/tasks/worker.py +++ b/inventory_provider/tasks/worker.py @@ -579,6 +579,7 @@ def update_circuit_hierarchy_and_port_id_services(self, use_current=False): port_id_services = defaultdict(list) interface_services = defaultdict(list) access_services = {} + gws_indirect_services = {} def _convert_to_bits(value, unit): unit = unit.lower() @@ -765,6 +766,10 @@ def update_circuit_hierarchy_and_port_id_services(self, use_current=False): if circ['service_type'].lower() == 'geant ip': access_services[circ['id']] = circ + if circ['service_type'].lower() == 'gws - indirect' \ + and circ['status'].lower() == 'operational': + gws_indirect_services[circ['id']] = circ + interface_services[k].extend(circuits) if use_current: @@ -782,6 +787,8 @@ def update_circuit_hierarchy_and_port_id_services(self, use_current=False): rp = r.pipeline() for k in r.scan_iter('ims:access_services:*', count=1000): rp.delete(k) + for k in r.scan_iter('ims:gws_indirect:*', count=1000): + rp.delete(k) rp.execute() rp = r.pipeline() for circ in hierarchy.values(): @@ -810,6 +817,18 @@ def update_circuit_hierarchy_and_port_id_services(self, use_current=False): 'speed_value': v['calculated-speed'], 'speed_unit': 'n/a' })) + + for v in gws_indirect_services.values(): + rp.set( + f'ims:gws_indirect:{v["name"]}', + json.dumps({ + 'id': v['id'], + 'name': v['name'], + 'customer': v['project'], + 'hostname': v['equipment'], + 'interface_name': v['port'], + 'speed_value': v['calculated-speed'] + })) rp.execute()