diff --git a/inventory_provider/routes/msr.py b/inventory_provider/routes/msr.py index 09c459a3391fe1fae9d39f69cd2dba2a233b15da..95887f10015a6ee23f467616bf5524e5dd9d4312 100644 --- a/inventory_provider/routes/msr.py +++ b/inventory_provider/routes/msr.py @@ -229,6 +229,8 @@ SYSTEM_CORRELATION_SERVICES_LIST_SCHEMA = { 'properties': { 'circuit_id': {'type': 'integer'}, 'sid': {'type': 'string'}, + 'status': {'type': 'string'}, + 'monitored': {'type': 'boolean'}, 'name': {'type': 'string'}, 'speed': {'type': 'integer'}, 'circuit_type': {'type': 'string'}, # TODO: remove this? @@ -238,7 +240,7 @@ SYSTEM_CORRELATION_SERVICES_LIST_SCHEMA = { 'endpoints': {'$ref': '#/definitions/endpoints'} }, 'required': [ - 'circuit_id', 'sid', 'name', 'speed', + 'circuit_id', 'sid', 'name', 'speed', 'status', 'monitored', # 'circuit_type', 'project', # TODO: keeping these?!? 'service_type', 'customer', 'endpoints'], 'additionalProperties': False @@ -772,31 +774,28 @@ def get_system_correlation_services(): if matches: peering_info[matches[1]][doc['value']['name']] = doc['value'] - logical_interface_re = re.compile(r'.*\.\d+$') - def _ip_endpoint_extractor(endpoint_details: Dict): - if logical_interface_re.match(endpoint_details['port']): - hostname = ims_equipment_to_hostname( - endpoint_details['equipment']) - interface = endpoint_details['port'].lower() + hostname = ims_equipment_to_hostname( + endpoint_details['equipment']) + interface = endpoint_details['port'].lower() - ip_endpoint = { - 'hostname': hostname, - 'interface': interface, - } - addresses = {} - host_info = peering_info.get(hostname, {}) - interface_info = host_info.get(interface, {}) - ipv4 = interface_info.get('ipv4') - ipv6 = interface_info.get('ipv6') - if ipv4: - addresses['v4'] = ipv4[0] - if ipv6: - addresses['v6'] = ipv6[0] - if ipv4 or ipv6: - ip_endpoint['addresses'] = addresses - - return ip_endpoint + ip_endpoint = { + 'hostname': hostname, + 'interface': interface, + } + addresses = {} + host_info = peering_info.get(hostname, {}) + interface_info = host_info.get(interface, {}) + ipv4 = interface_info.get('ipv4') + ipv6 = interface_info.get('ipv6') + if ipv4: + addresses['v4'] = ipv4[0] + if ipv6: + addresses['v6'] = ipv6[0] + if ipv4 or ipv6: + ip_endpoint['addresses'] = addresses + + return ip_endpoint def _optical_endpoint_extractor(endpoint_details: Dict): return { @@ -823,6 +822,8 @@ def get_system_correlation_services(): if not service_info.get('sid'): service_info['circuit_id'] = d['circuit_id'] service_info['sid'] = d['sid'] + service_info['status'] = d['status'] + service_info['monitored'] = d['monitored'] service_info['name'] = d['name'] service_info['speed'] = d['speed'] service_info['service_type'] = d['service_type'] diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py index aca83241178140922013115cd2727ff337c62074..066177bdf155dbf0ab062127519e64ad9f088217 100644 --- a/inventory_provider/tasks/worker.py +++ b/inventory_provider/tasks/worker.py @@ -942,9 +942,11 @@ def transform_ims_data(data): return list(rs.values()) def _format_service(s): - + s['original_status'] = s['status'] + s['monitored'] = True if s['circuit_type'] == 'service' \ and s['id'] not in circuit_ids_to_monitor: + s['monitored_in_nms'] = False s['status'] = 'non-monitored' pd_a = port_id_details[s['port_a_id']][0] location_a = locations.get(pd_a['equipment_name'], None) @@ -1025,8 +1027,7 @@ def transform_ims_data(data): f"{circ['equipment']}/{circ['other_end_equipment']}" ][circ['id']] = circ - if circ['id'] in circuit_ids_and_sids \ - and circ['status'] == 'operational': + if circ['id'] in circuit_ids_and_sids: sid = circuit_ids_and_sids[circ['id']] circ['sid'] = sid if circ['circuit_type'] == 'circuit': @@ -1036,6 +1037,8 @@ def transform_ims_data(data): sid_info = { 'circuit_id': circ['id'], 'sid': sid, + 'status': circ['original_status'], + 'monitored': circ['monitored'], 'name': circ['name'], 'speed': circ['calculated-speed'], 'service_type': circ['service_type'], diff --git a/test/data/router-info.json b/test/data/router-info.json index cedf647a3126f2ca6213f9135729a3c6b5d95691..17bbb40079bafe3515ff7aedcdad5787b483e7c6 100644 Binary files a/test/data/router-info.json and b/test/data/router-info.json differ diff --git a/test/test_worker.py b/test/test_worker.py index a6a44ab09a9f1ee0dafff65e2074b16b4a875c79..9e6044c463e74b45c23f1c594936a1ce28377f25 100644 --- a/test/test_worker.py +++ b/test/test_worker.py @@ -336,6 +336,8 @@ def test_transform_ims_data(): { 'circuit_id': "sub_circuit_2", 'sid': "SID-01", + 'status': 'operational', + 'monitored': True, 'name': "sub_circuit_2", 'speed': 10 << 30, 'service_type': "PEERING R & E", @@ -348,6 +350,8 @@ def test_transform_ims_data(): { 'circuit_id': "sub_circuit_2", 'sid': "SID-01", + 'status': 'operational', + 'monitored': True, 'name': "sub_circuit_2", 'speed': 10 << 30, 'service_type': "PEERING R & E",