Skip to content
Snippets Groups Projects
Commit 80e8e3b4 authored by Robert Latta's avatar Robert Latta
Browse files

Merge branch 'develop' into feature/opsdb_service_extraction

parents 37915f63 ed1c331a
No related branches found
Tags 0.12
No related merge requests found
......@@ -173,9 +173,17 @@ Any non-empty responses are JSON formatted messages.
"type": "object",
"properties": {
"name": {"type": "string"},
"description": {"type": "string"}
"description": {"type": "string"},
"ipv4": {
"type": "array",
"items": {"type": "string"}
},
"ipv6": {
"type": "array",
"items": {"type": "string"}
}
},
"required": ["name", "description"],
"required": ["name", "description", "ipv4", "ipv6"],
"additionalProperties": False
}
}
......
......@@ -11,3 +11,5 @@
0.9: use pyez/netconf for gathering juniper data
0.10/0.11: cache storage formatting bugfix
logging levels configured from environment
0.12: added addresses to interface response
put actual module number in version response
......@@ -148,11 +148,18 @@ def list_interfaces(netconf_config):
def _ifc_info(e):
name = e.find('name')
assert name is not None, "expected interface 'name' child element"
description = e.find('description')
return {
ifc = {
'name': name.text,
'description': description.text if description is not None else ''
'description': ''
}
description = e.find('description')
if description is not None:
ifc['description'] = description.text
ifc['ipv4'] = e.xpath('./family/inet/address/name/text()')
ifc['ipv6'] = e.xpath('./family/inet6/address/name/text()')
return ifc
for i in netconf_config.xpath('//configuration/interfaces/interface'):
info = _ifc_info(i)
......
import functools
import json
import pkg_resources
from flask import Blueprint, request, Response, current_app
from lxml import etree
......@@ -9,10 +10,7 @@ from inventory_provider import juniper
routes = Blueprint("inventory-data-query-routes", __name__)
VERSION = {
"api": "0.1",
"module": "0.1"
}
API_VERSION = '0.1'
def require_accepts_json(f):
......@@ -38,7 +36,11 @@ def require_accepts_json(f):
@require_accepts_json
def version():
return Response(
json.dumps(VERSION),
json.dumps({
'api': API_VERSION,
'module':
pkg_resources.get_distribution('inventory_provider').version
}),
mimetype="application/json"
)
......
......@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
setup(
name='inventory-provider',
version="0.12",
version="0.13",
author='GEANT',
author_email='swd@geant.org',
description='Dashboard inventory provider',
......
......@@ -66,9 +66,17 @@ def test_router_interfaces(router, client_with_mocked_data):
"type": "object",
"properties": {
"name": {"type": "string"},
"description": {"type": "string"}
"description": {"type": "string"},
"ipv4": {
"type": "array",
"items": {"type": "string"}
},
"ipv6": {
"type": "array",
"items": {"type": "string"}
}
},
"required": ["name", "description"],
"required": ["name", "description", "ipv4", "ipv6"],
"additionalProperties": False
}
}
......
......@@ -42,25 +42,33 @@ def netconf_doc(mocker, router, data_config):
return juniper.load_config(router, data_config['ssh'])
# def test_interface_list(netconf_doc):
#
# schema = {
# "$schema": "http://json-schema.org/draft-07/schema#",
# "type": "array",
# "items": {
# "type": "object",
# "properties": {
# "name": {"type": "string"},
# "description": {"type": "string"}
# },
# "required": ["name", "description"],
# "additionalProperties": False
# }
# }
#
# interfaces = list(netconf.list_interfaces(netconf_doc))
# jsonschema.validate(interfaces, schema)
# assert interfaces # at least shouldn't be empty
def test_interface_list(netconf_doc):
schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"description": {"type": "string"},
"ipv4": {
"type": "array",
"items": {"type": "string"}
},
"ipv6": {
"type": "array",
"items": {"type": "string"}
}
},
"required": ["name", "description", "ipv4", "ipv6"],
"additionalProperties": False
}
}
interfaces = list(juniper.list_interfaces(netconf_doc))
jsonschema.validate(interfaces, schema)
assert interfaces # at least shouldn't be empty
def test_bgp_list(netconf_doc):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment