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

added a working route that tests the db connection

parent 8c7e39f1
Branches
Tags
No related merge requests found
......@@ -7,14 +7,14 @@ from inventory_provider.constants import DATABASE_LOGGER_NAME
@contextlib.contextmanager
def connection(alarmsdb):
def connection(opsdb):
cx = None
try:
cx = mysql.connector.connect(
host=alarmsdb["hostname"],
user=alarmsdb["username"],
passwd=alarmsdb["password"],
db=alarmsdb["dbname"])
host=opsdb["hostname"],
user=opsdb["username"],
passwd=opsdb["password"],
db=opsdb["dbname"])
yield cx
finally:
if cx:
......@@ -35,8 +35,9 @@ def cursor(cnx):
def _db_test(db, router):
database_logger = logging.getLogger(DATABASE_LOGGER_NAME)
with cursor(db) as crs:
database_logger.debug("_db_test: %r" % router)
query = "SELECT absid FROM routers WHERE hostname = %s"
query = "select model, manufacturer from equipment where name = %s"
crs.execute(query, (router['hostname'],))
for (absid,) in crs:
database_logger.debug("absid: %r" % absid)
for (model, manufacturer) in crs:
database_logger.debug("%s: %s %s" % (
router['hostname'], model, manufacturer))
yield {"model": model, "manufacturer": manufacturer}
\ No newline at end of file
......@@ -2,9 +2,9 @@ import functools
import json
from flask import Blueprint, request, Response, current_app
import redis
from inventory_provider import opsdb
routes = Blueprint("inventory-data-query-routes", __name__)
routes = Blueprint("inventory-opsdb-query-routes", __name__)
VERSION = {
"api": "0.1",
......@@ -31,22 +31,19 @@ def require_accepts_json(f):
return decorated_function
@routes.route("/version", methods=['GET', 'POST'])
@routes.route("/test", methods=['GET', 'POST'])
@require_accepts_json
def version():
return Response(
json.dumps(VERSION),
mimetype="application/json"
)
def opsdb_test():
config = current_app.config['INVENTORY_PROVIDER_CONFIG']
result = []
with opsdb.connection(config['ops-db']) as db:
for r in config['routers']:
result.append({
'router': r['hostname'],
'info': list(opsdb._db_test(db, r))
})
@routes.route("/routers", methods=['GET', 'POST'])
@require_accepts_json
def routers():
redis_config = current_app.config["INVENTORY_PROVIDER_CONFIG"]["redis"]
r = redis.StrictRedis(
host=redis_config["hostname"],
port=redis_config["port"])
return Response(
json.dumps(list([k.decode("utf-8") for k in r.keys("*")])),
json.dumps(result),
mimetype="application/json")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment