diff --git a/inventory_provider/db/opsdb.py b/inventory_provider/db/opsdb.py index 4764d8ff6b92c362d093098b6d43cff6f697dc40..35fae900deebba4c3194455a172183e3aef3e316 100644 --- a/inventory_provider/db/opsdb.py +++ b/inventory_provider/db/opsdb.py @@ -259,7 +259,9 @@ SELECT eqc_a.card_id as card_id_a, eqc_a.card_id as card_id_b, pop_a.name as pop_name_a, - pop_b.name as pop_name_b + pop_b.name as pop_name_b, + vcc.port_a as port_a, + vcc.port_b as port_b FROM vcircuitconns vcc LEFT JOIN equipment eq_a ON eq_a.absid = vcc.PTR_equip_a @@ -279,10 +281,14 @@ SELECT 'peering_type': row['peering_type'], 'a': { 'name': row['equipment_name_a'], + 'card id': row['card_id_a'], + 'port number': row['port_a'], 'pop': row['pop_name_a'] }, 'b': { 'name': row['equipment_name_b'], + 'card id': row['card_id_b'], + 'port number': row['port_b'], 'pop': row['pop_name_b'] } } @@ -316,10 +322,12 @@ AND circuit_type = 'Path' # eq_b.name as equipment_name_b, # eqc_a.card_id as card_id_a, # eqc_a.card_id as card_id_b, - # child.port_a as port_a, - # child.port_b as port_b, # pop_a.name as pop_name_a, - # pop_b.name as pop_name_b + # pop_b.name as pop_name_b, + # parent.port_a as port_a, + # parent.port_b as port_b, + # child.port_a as child_port_a, + # child.port_b as child_port_b # # FROM vcircuitconns parent # RIGHT JOIN circuit_glue @@ -327,12 +335,12 @@ AND circuit_type = 'Path' # JOIN vcircuitconns child # ON circuit_glue.PTR_component = child.absid # - # LEFT JOIN equipment eq_a ON eq_a.absid = child.PTR_equip_a - # LEFT JOIN equipment eq_b ON eq_b.absid = child.PTR_equip_b - # LEFT JOIN equipment_card eqc_a ON eqc_a.absid = child.PTR_card_a - # LEFT JOIN equipment_card eqc_b ON eqc_b.absid = child.PTR_card_b - # LEFT JOIN pop pop_a ON pop_a.absid = child.PTR_pop_a - # LEFT JOIN pop pop_b ON pop_b.absid = child.PTR_pop_b + # LEFT JOIN equipment eq_a ON eq_a.absid = parent.PTR_equip_a + # LEFT JOIN equipment eq_b ON eq_b.absid = parent.PTR_equip_b + # LEFT JOIN equipment_card eqc_a ON eqc_a.absid = parent.PTR_card_a + # LEFT JOIN equipment_card eqc_b ON eqc_b.absid = parent.PTR_card_b + # LEFT JOIN pop pop_a ON pop_a.absid = parent.PTR_pop_a + # LEFT JOIN pop pop_b ON pop_b.absid = parent.PTR_pop_b # # WHERE parent.circuit_type = 'Path' # AND child.circuit_type <> 'Path' diff --git a/inventory_provider/routes/classifier.py b/inventory_provider/routes/classifier.py index c98bb5f67f1a5d12119fcada3692b609268408f2..1a942124eaed307b2fa2480714c1ff4d84fb56c1 100644 --- a/inventory_provider/routes/classifier.py +++ b/inventory_provider/routes/classifier.py @@ -296,17 +296,17 @@ def get_coriant_info(equipment_name, card_id, port_number): else: config = current_app.config['INVENTORY_PROVIDER_CONFIG'] with db.connection(config['ops-db']) as cx: - result = opsdb.get_coriant_path( + path = opsdb.get_coriant_path( cx, equipment_name, card_id, port_number) - if not result: + if not path: return Response( response="no available info for {} {} {}".format( equipment_name, card_id, port_number), status=404, mimetype="text/html") - result = json.dumps(result) + result = json.dumps({'path': path}) # cache this data for the next call r.set(cache_key, result.encode('utf-8')) diff --git a/test/test_classifier_routes.py b/test/test_classifier_routes.py index f28d188820465deeadc97022272e628b136c11a2..cdbdc396d34edd9aad75a33b7358c90ed22c45df 100644 --- a/test/test_classifier_routes.py +++ b/test/test_classifier_routes.py @@ -278,7 +278,7 @@ def test_coriant_info(client, mocker): """ just check the correct method is called, but mock out all sql access """ - expected_response = { + expected_path = { 'C': 'bogus connection', 'E': 'bogus equipment name', 'CID': 'bogus card id', @@ -287,7 +287,7 @@ def test_coriant_info(client, mocker): @contextlib.contextmanager def mocked_connection(ignored): - yield expected_response['C'] + yield expected_path['C'] mocker.patch( 'inventory_provider.db.db.connection', mocked_connection) @@ -296,12 +296,14 @@ def test_coriant_info(client, mocker): lambda a, b, c, d: {'C': a, 'E': b, 'CID': c, 'P': d}) rv = client.get( - '/classifier/coriant-info/{E}/{CID}/{P}'.format(**expected_response), + '/classifier/coriant-info/{E}/{CID}/{P}'.format(**expected_path), headers=DEFAULT_REQUEST_HEADERS) assert rv.status_code == 200 assert rv.is_json response_data = json.loads(rv.data.decode('utf-8')) + + expected_response = {'path': expected_path} assert response_data == expected_response diff --git a/test/test_opsdb_queries.py b/test/test_opsdb_queries.py index bdb586cd146d73e41e6123fec687a862c6dcd929..5fbada7715f7c801a59c67c57b7c30194cca17e7 100644 --- a/test/test_opsdb_queries.py +++ b/test/test_opsdb_queries.py @@ -38,7 +38,7 @@ def connection(db_params): @pytest.mark.parametrize('equipment,card,port', [ ('grv3.lon.uk.geant.net', '1-1', '3'), ('grv3.lon.uk.geant.net', '1-1', '5'), - # ('grv2.ams.nl.geant.net', '1-1', '1'), + ('grv1.ams.nl.geant.net', '1-1', '1'), ('grv3.lon.uk.geant.net', '1-1', '1'), ]) def test_query(connection, equipment, card, port):