diff --git a/inventory_provider/opsdb.py b/inventory_provider/opsdb.py index 01a4390b2ba53bf112185a508da8b760365ef42b..986bde4caae551e06954e98dd837f1d4ff373314 100644 --- a/inventory_provider/opsdb.py +++ b/inventory_provider/opsdb.py @@ -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 diff --git a/inventory_provider/routes/opsdb.py b/inventory_provider/routes/opsdb.py index b515bf443de6842d004aa35901b3d92bbeb19772..92cea909ccc0d8d98ef775292b119b65d8885fab 100644 --- a/inventory_provider/routes/opsdb.py +++ b/inventory_provider/routes/opsdb.py @@ -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")