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