From 6560530fbc36dadb5b9f8229a7e2307f64b06105 Mon Sep 17 00:00:00 2001
From: Erik Reid <erik.reid@geant.org>
Date: Fri, 28 Feb 2020 14:03:21 +0100
Subject: [PATCH] added some variables to the services query conditions

---
 inventory_provider/db/opsdb.py | 31 ++++++++++++++++++++++++++-----
 1 file changed, 26 insertions(+), 5 deletions(-)

diff --git a/inventory_provider/db/opsdb.py b/inventory_provider/db/opsdb.py
index 91cffad1..32987081 100644
--- a/inventory_provider/db/opsdb.py
+++ b/inventory_provider/db/opsdb.py
@@ -31,7 +31,8 @@ circuit_hierarchy_query = """SELECT
                      LEFT JOIN events cp on cp.absid = cc.PTR_project"""
 
 
-retrieve_services_query = """SELECT *
+def retrieve_services_query(types):
+    format = """SELECT *
                     FROM (SELECT
                       c.absid AS id,
                       c.name,
@@ -141,8 +142,7 @@ retrieve_services_query = """SELECT *
                     WHERE
                         equipment IS NOT NULL
                         AND equipment != ''
-                        AND circuit_type IN (
-                          'path', 'service', 'l2circuit', 'link-aggr-group')
+                        AND circuit_type IN (%s)
                     ORDER BY
                     name,
                      FIELD(status,
@@ -152,6 +152,10 @@ retrieve_services_query = """SELECT *
                       'installed',
                       'operational')"""
 
+    assert types
+    types_string = "'" + "','".join(types) + "'"
+    return format % types_string
+
 
 def _convert_to_dict(crs):
     return [dict((crs.description[i][0], "" if value is None else value)
@@ -242,9 +246,9 @@ def get_geant_lambdas(connection):  # pragma: no cover
     return r
 
 
-def get_circuits(connection):
+def get_circuits(connection, types=['path', 'service', 'l2circuit', 'link-aggr-group']):
     with db.cursor(connection) as crs:
-        crs.execute(retrieve_services_query)
+        crs.execute(retrieve_services_query(types))
         r = _convert_to_dict(crs)
 
     r = list(map(_update_fields, r))
@@ -527,3 +531,20 @@ def get_service_users(connection, service_ids):
             crs.execute(query % ','.join([str(x) for x in chunk]))
             for r in crs.fetchall():
                 yield {'service_id': r[0], 'user': r[1]}
+
+
+if __name__ == '__main__':
+
+    from inventory_provider.db import db
+
+    db_params = {
+        'hostname': '83.97.93.8',
+        'dbname': 'opsdb',
+        'username': 'opsro',
+        'password': 'opsro'
+    }
+    with db.connection(db_params) as cx:
+        circuits = get_circuits(cx)
+
+    print(circuits)
+
-- 
GitLab