Skip to content
Snippets Groups Projects
Commit 6e934804 authored by Erik Reid's avatar Erik Reid
Browse files

Finished feature cosmetic-cleanups.

parents dd51118f d682a5b7
Branches
Tags
No related merge requests found
from inventory_provider import db
from inventory_provider.db import db
def get_last_known_infinera_interface_status(crs, equipment, interface):
......
File moved
from inventory_provider import db
from inventory_provider.db import db
equipment_location_query = """SELECT
......
import functools
from flask import Blueprint, request, Response, current_app, jsonify
import json
from flask import Blueprint, Response, current_app, jsonify
import jsonschema
from inventory_provider.routes import common
......@@ -9,27 +8,8 @@ from inventory_provider.routes import common
routes = Blueprint("inventory-data-classifier-support-routes", __name__)
def require_accepts_json(f):
"""
used as a route handler decorator to return an error
unless the request allows responses with type "application/json"
:param f: the function to be decorated
:return: the decorated function
"""
@functools.wraps(f)
def decorated_function(*args, **kwargs):
# TODO: use best_match to disallow */* ...?
if not request.accept_mimetypes.accept_json:
return Response(
response="response will be json",
status=406,
mimetype="text/html")
return f(*args, **kwargs)
return decorated_function
@routes.route("/infinera-dna-addresses", methods=['GET', 'POST'])
@require_accepts_json
@common.require_accepts_json
def infinera_addresses():
infinera_config = current_app.config[
"INVENTORY_PROVIDER_CONFIG"]["infinera-dna"]
......@@ -37,7 +17,7 @@ def infinera_addresses():
@routes.route("/coriant-tnms-addresses", methods=['GET', 'POST'])
@require_accepts_json
@common.require_accepts_json
def coriant_addresses():
coriant_config = current_app.config[
"INVENTORY_PROVIDER_CONFIG"]["coriant-tnms"]
......@@ -45,7 +25,7 @@ def coriant_addresses():
@routes.route("/juniper-server-addresses", methods=['GET', 'POST'])
@require_accepts_json
@common.require_accepts_json
def juniper_addresses():
backend_data_schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
......@@ -73,7 +53,7 @@ def juniper_addresses():
@routes.route("/trap-metadata/<trap_type>/<source_equipment>/<path:interface>",
methods=['GET', 'POST'])
@require_accepts_json
@common.require_accepts_json
def get_trap_metadata(trap_type, source_equipment, interface):
# todo - Move this to config
interface_info_key = "interface_services"
......
import functools
import json
import pkg_resources
from flask import Blueprint, jsonify, request, Response, current_app
from flask import Blueprint, jsonify, Response, current_app
from lxml import etree
import redis
......@@ -14,27 +13,8 @@ routes = Blueprint("inventory-data-query-routes", __name__)
API_VERSION = '0.1'
def require_accepts_json(f):
"""
used as a route handler decorator to return an error
unless the request allows responses with type "application/json"
:param f: the function to be decorated
:return: the decorated function
"""
@functools.wraps(f)
def decorated_function(*args, **kwargs):
# TODO: use best_match to disallow */* ...?
if not request.accept_mimetypes.accept_json:
return Response(
response="response will be json",
status=406,
mimetype="text/html")
return f(*args, **kwargs)
return decorated_function
@routes.route("/version", methods=['GET', 'POST'])
@require_accepts_json
@common.require_accepts_json
def version():
return Response(
json.dumps({
......@@ -47,7 +27,7 @@ def version():
@routes.route("/routers", methods=['GET', 'POST'])
@require_accepts_json
@common.require_accepts_json
def routers():
redis_config = current_app.config["INVENTORY_PROVIDER_CONFIG"]["redis"]
r = redis.StrictRedis(
......@@ -59,7 +39,7 @@ def routers():
@routes.route("/interfaces/<hostname>", methods=['GET', 'POST'])
@require_accepts_json
@common.require_accepts_json
def router_interfaces(hostname):
redis_config = current_app.config["INVENTORY_PROVIDER_CONFIG"]["redis"]
r = redis.StrictRedis(
......@@ -87,7 +67,7 @@ def router_interfaces(hostname):
@routes.route("/snmp/<hostname>", methods=['GET', 'POST'])
@require_accepts_json
@common.require_accepts_json
def snmp_ids(hostname):
redis_config = current_app.config["INVENTORY_PROVIDER_CONFIG"]["redis"]
r = redis.StrictRedis(
......@@ -117,7 +97,7 @@ def snmp_ids(hostname):
@routes.route("/debug-dump/<hostname>", methods=['GET', 'POST'])
@require_accepts_json
@common.require_accepts_json
def debug_dump_router_info(hostname):
redis_config = current_app.config["INVENTORY_PROVIDER_CONFIG"]["redis"]
r = redis.StrictRedis(
......@@ -138,7 +118,7 @@ def debug_dump_router_info(hostname):
@routes.route("/bgp/<hostname>", methods=['GET', 'POST'])
@require_accepts_json
@common.require_accepts_json
def bgp_configs(hostname):
redis_config = current_app.config["INVENTORY_PROVIDER_CONFIG"]["redis"]
r = redis.StrictRedis(
......@@ -167,7 +147,7 @@ def bgp_configs(hostname):
@routes.route("/interfaces/status/<hostname>/<path:interface>",
methods=['GET', 'POST'])
@require_accepts_json
@common.require_accepts_json
def interface_statuses(hostname, interface):
r = common.get_redis()
result = r.hget("interface_statuses",
......@@ -182,6 +162,7 @@ def interface_statuses(hostname, interface):
@routes.route("/services/<hostname>/<path:interface>",
methods=['GET', 'POST'])
@common.require_accepts_json
def services_for_interface(hostname, interface):
r = common.get_redis()
result = r.hget("interface_services",
......
import functools
import json
from flask import Blueprint, request, Response
from flask import Blueprint, Response
from inventory_provider.routes import common
routes = Blueprint("inventory-opsdb-query-routes", __name__)
......@@ -13,25 +12,6 @@ service_parent_to_children_key = "parent_to_children_circuit_relations"
interface_status_key = "interface_statuses"
def require_accepts_json(f):
"""
used as a route handler decorator to return an error
unless the request allows responses with type "application/json"
:param f: the function to be decorated
:return: the decorated function
"""
@functools.wraps(f)
def decorated_function(*args, **kwargs):
# TODO: use best_match to disallow */* ...?
if not request.accept_mimetypes.accept_json:
return Response(
response="response will be json",
status=406,
mimetype="text/html")
return f(*args, **kwargs)
return decorated_function
def _decode_utf8_dict(d):
return {k.decode('utf8'): json.loads(v) for k, v in d.items()}
......
......@@ -7,12 +7,10 @@ import redis
from lxml import etree
from inventory_provider.tasks.app import app
from inventory_provider import alarmsdb
from inventory_provider import config
from inventory_provider import constants
from inventory_provider import db
from inventory_provider import environment
from inventory_provider import opsdb
from inventory_provider.db import db, opsdb, alarmsdb
from inventory_provider import snmp
from inventory_provider import juniper
......
import inventory_provider.alarmsdb as alarmsdb
import inventory_provider.db.alarmsdb as alarmsdb
def test_infinera_interface_status(mocker):
......@@ -77,13 +77,15 @@ def test_juniper_interface_status(mocker):
def test_interface_status(mocker):
mocked_infinera = mocker.patch(
'inventory_provider.alarmsdb.get_last_known_infinera_interface_status')
'inventory_provider.db.alarmsdb'
'.get_last_known_infinera_interface_status')
mocked_infinera.return_value = "unknown"
mocked_coriant = mocker.patch(
'inventory_provider.alarmsdb.get_last_known_coriant_interface_status')
'inventory_provider.db.alarmsdb'
'.get_last_known_coriant_interface_status')
mocked_coriant.return_value = "unknown"
mocked_juniper = mocker.patch(
'inventory_provider.alarmsdb.'
'inventory_provider.db.alarmsdb.'
'get_last_known_juniper_link_interface_status')
mocked_juniper.return_value = "unknown"
assert alarmsdb.get_last_known_interface_status(None, '', '') == "unknown"
import inventory_provider.opsdb
import inventory_provider.db.opsdb
def test_update_fields(mocker):
mocker.patch("inventory_provider.opsdb._juniper_field_update")
mocker.patch("inventory_provider"
".db.opsdb._juniper_field_update")
t = {"manufacturer": "juniper"}
inventory_provider.opsdb._update_fields(t)
inventory_provider.opsdb._juniper_field_update.assert_called_once_with(t)
inventory_provider.db.opsdb._update_fields(t)
inventory_provider.db.opsdb \
._juniper_field_update.assert_called_once_with(t)
mocker.patch("inventory_provider.opsdb._infinera_field_update")
mocker.patch("inventory_provider"
".db.opsdb._infinera_field_update")
t = {"manufacturer": "infinera"}
inventory_provider.opsdb._update_fields(t)
inventory_provider.opsdb._infinera_field_update.assert_called_once_with(t)
inventory_provider.db.opsdb._update_fields(t)
inventory_provider.db.opsdb \
._infinera_field_update.assert_called_once_with(t)
f = {"manufacturer": "non-existent"}
r = inventory_provider.opsdb._update_fields(f)
r = inventory_provider.db.opsdb._update_fields(f)
assert f == r
......@@ -23,7 +27,7 @@ def test_infinera_field_update():
"card_id": "tim-b-5-7",
"port": "1"
}
r = inventory_provider.opsdb._infinera_field_update(i)
r = inventory_provider.db.opsdb._infinera_field_update(i)
assert r["equipment"] == "AMS01-DTNX10-1"
assert r["interface_name"] == "1-B-5-7-1"
......@@ -32,7 +36,7 @@ def test_infinera_field_update():
"card_id": "tim-1/2",
"port": "1"
}
r = inventory_provider.opsdb._infinera_field_update(i)
r = inventory_provider.db.opsdb._infinera_field_update(i)
assert r["equipment"] == "BUD01_CX_01"
assert r["interface_name"] == "1/2-1"
......@@ -41,7 +45,7 @@ def test_infinera_field_update():
"card_id": "tim_1/2",
"port": "1"
}
r = inventory_provider.opsdb._infinera_field_update(i)
r = inventory_provider.db.opsdb._infinera_field_update(i)
assert r["interface_name"] == "TIM_1/2-1"
......@@ -50,50 +54,50 @@ def test_juniper_field_update():
"interface_name": "xe-1/2",
"logical_unit": None
}
r = inventory_provider.opsdb._juniper_field_update(i)
r = inventory_provider.db.opsdb._juniper_field_update(i)
assert r["interface_name"] == "xe-1/2"
i["interface_name"] = "xe-1/2"
i["logical_unit"] = 101
r = inventory_provider.opsdb._juniper_field_update(i)
r = inventory_provider.db.opsdb._juniper_field_update(i)
assert r["interface_name"] == "xe-1/2.101"
i["interface_name"] = "xe-1/2"
i["logical_unit"] = 0
r = inventory_provider.opsdb._juniper_field_update(i)
r = inventory_provider.db.opsdb._juniper_field_update(i)
assert r["interface_name"] == "xe-1/2.0"
i["interface_name"] = "xe-1/2"
i["logical_unit"] = None
i["port"] = 0
r = inventory_provider.opsdb._juniper_field_update(i)
r = inventory_provider.db.opsdb._juniper_field_update(i)
assert r["interface_name"] == "xe-1/2"
i["interface_name"] = None
i["card_id"] = "xe-2/0"
i["logical_unit"] = None
i["port"] = None
r = inventory_provider.opsdb._juniper_field_update(i)
r = inventory_provider.db.opsdb._juniper_field_update(i)
assert r["interface_name"] == "xe-2/0"
i["interface_name"] = None
i["port"] = "0"
r = inventory_provider.opsdb._juniper_field_update(i)
r = inventory_provider.db.opsdb._juniper_field_update(i)
assert r["interface_name"] == "xe-2/0/0"
i["interface_name"] = None
i["port"] = 0
r = inventory_provider.opsdb._juniper_field_update(i)
r = inventory_provider.db.opsdb._juniper_field_update(i)
assert r["interface_name"] == "xe-2/0/0"
i["interface_name"] = None
i["logical_unit"] = "123"
r = inventory_provider.opsdb._juniper_field_update(i)
r = inventory_provider.db.opsdb._juniper_field_update(i)
assert r["interface_name"] == "xe-2/0/0.123"
i["interface_name"] = None
i["logical_unit"] = 123
r = inventory_provider.opsdb._juniper_field_update(i)
r = inventory_provider.db.opsdb._juniper_field_update(i)
assert r["interface_name"] == "xe-2/0/0.123"
......@@ -103,7 +107,7 @@ def test_coriant_update_fields():
"card_id": "2-3",
"port": None
}
r = inventory_provider.opsdb._coriant_field_update(i)
r = inventory_provider.db.opsdb._coriant_field_update(i)
assert r["interface_name"] == "2-3"
i = {
......@@ -111,24 +115,24 @@ def test_coriant_update_fields():
"card_id": "2-3",
"port": "4"
}
r = inventory_provider.opsdb._coriant_field_update(i)
r = inventory_provider.db.opsdb._coriant_field_update(i)
assert r["interface_name"] == "2-3/4"
def test_get_circuits(mocker):
mocker.patch("inventory_provider.opsdb.db.cursor")
mocker.patch("inventory_provider.db.db.cursor")
mocked_convert_to_dict = mocker.patch(
"inventory_provider.opsdb._convert_to_dict")
"inventory_provider.db.opsdb._convert_to_dict")
i = {"manufacturer": "infinera"}
j = {"manufacturer": "juniper"}
mocked_convert_to_dict.return_value = [i, j]
mocked_infinera_update = mocker.patch(
"inventory_provider.opsdb._infinera_field_update")
"inventory_provider.db.opsdb._infinera_field_update")
mocked_juniper_update = mocker.patch(
"inventory_provider.opsdb._juniper_field_update")
"inventory_provider.db.opsdb._juniper_field_update")
inventory_provider.opsdb.get_circuits(None)
inventory_provider.db.opsdb.get_circuits(None)
mocked_infinera_update.assert_called_once_with(i)
mocked_juniper_update.assert_called_once_with(j)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment