diff --git a/inventory_provider/routes/lnetd.py b/inventory_provider/routes/lnetd.py index 18b1d772628718370425b13c5bc082ae558715d9..e0f9e778a7bee36e74487ad103430cb92098e411 100644 --- a/inventory_provider/routes/lnetd.py +++ b/inventory_provider/routes/lnetd.py @@ -11,20 +11,18 @@ from inventory_provider.routes.common import _ignore_cache_or_retrieve logger = logging.getLogger(__name__) routes = Blueprint('lnetd-support-routes', __name__) -Gb = 1 << 30 - INTERFACE_LIST_SCHEMA = { '$schema': 'http://json-schema.org/draft-07/schema#', 'definitions': { - "ipv4-interface-address": { - "type": "string", - "pattern": r'^(\d+\.){3}\d+/\d+$' + 'ipv4-interface-address': { + 'type': 'string', + 'pattern': r'^(\d+\.){3}\d+/\d+$' }, - "ipv6-interface-address": { - "type": "string", - "pattern": r'^[a-f\d:]+/\d+$' + 'ipv6-interface-address': { + 'type': 'string', + 'pattern': r'^[a-f\d:]+/\d+$' }, 'interface': { @@ -33,13 +31,13 @@ INTERFACE_LIST_SCHEMA = { 'hostname': {'type': 'string'}, 'interface': {'type': 'string'}, 'ifIndex': {'type': 'integer', 'minimum': 1}, - "ipv4": { - "type": "array", - "items": {"$ref": "#/definitions/ipv4-interface-address"} + 'ipv4': { + 'type': 'array', + 'items': {'$ref': '#/definitions/ipv4-interface-address'} }, - "ipv6": { - "type": "array", - "items": {"$ref": "#/definitions/ipv6-interface-address"} + 'ipv6': { + 'type': 'array', + 'items': {'$ref': '#/definitions/ipv6-interface-address'} }, }, 'required': ['hostname', 'interface', 'ifIndex', 'ipv4', 'ipv6'], diff --git a/test/per_router/test_lnetd_routes.py b/test/per_router/test_lnetd_routes.py new file mode 100644 index 0000000000000000000000000000000000000000..d4017fa36fc09107af505aa37bc81ed563e3df22 --- /dev/null +++ b/test/per_router/test_lnetd_routes.py @@ -0,0 +1,23 @@ +import json +import jsonschema +import pytest +from inventory_provider.routes.lnetd import INTERFACE_LIST_SCHEMA + +DEFAULT_REQUEST_HEADERS = { + 'Accept': ['application/json'] +} + + +def test_router_interfaces(router, client): + if router.startswith('qfx'): + pytest.skip('no interfaces expected for {router}, skipping') + + rv = client.post( + f'/LnetD/interfaces/{router}', + headers=DEFAULT_REQUEST_HEADERS) + + assert rv.status_code == 200 + response = json.loads(rv.data.decode('utf-8')) + jsonschema.validate(response, INTERFACE_LIST_SCHEMA) + assert response # at least shouldn't be empty + assert all(ifc['hostname'] == router for ifc in response) diff --git a/test/test_general_lnetd_routes.py b/test/test_general_lnetd_routes.py index 359afebfc3d25eaae9f61bed7de31a92866519ad..4cec6a5643046d37374b3ee6f1471ebe78e1233c 100644 --- a/test/test_general_lnetd_routes.py +++ b/test/test_general_lnetd_routes.py @@ -3,7 +3,7 @@ import jsonschema from inventory_provider.routes import lnetd DEFAULT_REQUEST_HEADERS = { - "Accept": ["application/json"] + 'Accept': ['application/json'] }