diff --git a/inventory_provider/config.py b/inventory_provider/config.py index b84b479f160267219879d8b86278594746bd6b7d..0f6bc1b320d17da8e4b328cd0957c9f23424eb45 100644 --- a/inventory_provider/config.py +++ b/inventory_provider/config.py @@ -58,6 +58,18 @@ CONFIG_SCHEMA = { "required": ["name", "address"], "additionalProperties": False } + }, + "coriant-tnms": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "address": {"type": "string"} + }, + "required": ["name", "address"], + "additionalProperties": False + } } }, "required": [ @@ -67,7 +79,8 @@ CONFIG_SCHEMA = { "routers_community.conf", "ssh", "redis", - "infinera-dna"], + "infinera-dna", + "coriant-tnms"], "additionalProperties": False } diff --git a/inventory_provider/routes/classifier.py b/inventory_provider/routes/classifier.py index 66cc126ac877d9310d8545eb588697087adf6c1d..85dcbd779d3d419b12625f402b9b17c16ca8a55f 100644 --- a/inventory_provider/routes/classifier.py +++ b/inventory_provider/routes/classifier.py @@ -36,6 +36,14 @@ def infinera_addresses(): return jsonify([dna['address'] for dna in infinera_config]) +@routes.route("/coriant-tnms-addresses", methods=['GET', 'POST']) +@require_accepts_json +def coriant_addresses(): + coriant_config = current_app.config[ + "INVENTORY_PROVIDER_CONFIG"]["coriant-tnms"] + return jsonify([tnms['address'] for tnms in coriant_config]) + + @routes.route("/juniper-server-addresses", methods=['GET', 'POST']) @require_accepts_json def juniper_addresses(): diff --git a/test/conftest.py b/test/conftest.py index 0493186f9221f0d175cd7233d9516b502fbb018a..26186461066c26a4c6654a6b021f975831544cf7 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -47,6 +47,11 @@ def data_config_filename(tmp_dir_name): {"name": "name1", "address": "123.456.789.0"}, {"name": "name2", "address": "012.345.678.9"}, {"name": "name3", "address": "111.222.333.000"} + ], + "coriant-tnms": [ + {"name": "name1", "address": "123.456.789.0"}, + {"name": "name2", "address": "012.345.678.9"}, + {"name": "name3", "address": "111.222.333.000"} ] } diff --git a/test/test_classifier_routes.py b/test/test_classifier_routes.py index 3d98a2fc12a45af0cccb41f028472d450807eaf0..114112d1a6cd3789e38211547a03eb14497cfbe8 100644 --- a/test/test_classifier_routes.py +++ b/test/test_classifier_routes.py @@ -23,6 +23,22 @@ def test_infinera_addresses(client): response_schema) +def test_coriant_addresses(client): + response_schema = { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "array", + "items": {"type": "string"} + } + + rv = client.post( + "/classifier/coriant-tnms-addresses", + headers=DEFAULT_REQUEST_HEADERS) + assert rv.status_code == 200 + jsonschema.validate( + json.loads(rv.data.decode("utf-8")), + response_schema) + + def test_juniper_addresses(mocker, client): test_data = [