diff --git a/inventory_provider/routes/classifier.py b/inventory_provider/routes/classifier.py index c8c36c5e0b17750dad8aaf38bea368b78f9fdefc..2798b431a461d5ad55732a4a57bcca0955387f48 100644 --- a/inventory_provider/routes/classifier.py +++ b/inventory_provider/routes/classifier.py @@ -326,6 +326,9 @@ def get_coriant_info(equipment_name, entity_string): equipment_name, entity_string) result = r.get(cache_key) + # this is just for development to save deleting the cache every time + # result = False + if result: result = result.decode('utf-8') else: @@ -353,6 +356,28 @@ def get_coriant_info(equipment_name, entity_string): if path: result['path'] = path + + def _get_top_level_services(circuit_id): + tls = [] + results = r.get( + "opsdb:services:children:{}".format(circuit_id)) + if results: + results = json.loads(results.decode('utf-8')) + + for c in results: + temp_parents = \ + _get_top_level_services(c['parent_circuit_id']) + if not temp_parents and \ + c['parent_circuit_type'].lower() == 'service': + tls.append( + {'name': c['parent_circuit'], + 'status': c['parent_circuit_status']}) + tls.extend(temp_parents) + return tls + + top_level_services = _get_top_level_services(path['id']) + if top_level_services: + result['related-services'] = top_level_services else: logger.error('no path found for {}:{}'.format( equipment_name, entity_string))