[AETHER-3071] Export num configured and reachable devices to Prometheus
Change-Id: I8cf178e6596460433f3b82c85e3d311e6f96f032
diff --git a/app.py b/app.py
index cc85ce4..3adb9dd 100644
--- a/app.py
+++ b/app.py
@@ -8,7 +8,6 @@
import time
from flask import Flask, request
-from flask_restful import Resource, Api
import logging as log
from argparse import ArgumentParser, SUPPRESS
import threading
@@ -19,40 +18,39 @@
import device
app = Flask(__name__)
-api = Api(app)
devices = {} # dict imsi:device
lock = threading.Lock()
-class Devices(Resource):
- def get(self):
- global devices, lock
- with lock:
- all = {}
- for _, device in devices.items():
- all[device.imsi_id] = {'ip':device.ip, 'imsi':device.imsi, 'last_reachable':'{:%Y-%m-%d %H:%M:%S}'.format(device.last_reachable)}
- return all
+@app.route("/devices")
+def get_devices():
+ global devices, lock
+ with lock:
+ all = {}
+ for _, device in devices.items():
+ all[device.imsi_id] = {'ip':device.ip, 'imsi':device.imsi, 'last_reachable':'{:%Y-%m-%d %H:%M:%S}'.format(device.last_reachable)}
+ return all
-class ReachableDevices(Resource):
- def get(self):
- global devices, lock
- with lock:
- reachable = {}
- for _, device in devices.items():
- if device.reachable is True:
- reachable[device.imsi_id] = {'ip':device.ip, 'imsi':device.imsi, 'last_reachable':'{:%Y-%m-%d %H:%M:%S}'.format(device.last_reachable)}
- return reachable
+@app.route("/devices/reachable")
+def get_devices_reachable():
+ global devices, lock
+ with lock:
+ reachable = {}
+ for _, device in devices.items():
+ if device.reachable is True:
+ reachable[device.imsi_id] = {'ip':device.ip, 'imsi':device.imsi, 'last_reachable':'{:%Y-%m-%d %H:%M:%S}'.format(device.last_reachable)}
+ return reachable
-class UnreachableDevices(Resource):
- def get(self):
- global devices, lock
- with lock:
- unreachable = {}
- for _, device in devices.items():
- if device.reachable is False:
- unreachable[device.imsi_id] = {'ip':device.ip, 'imsi':device.imsi, 'last_reachable':'{:%Y-%m-%d %H:%M:%S}'.format(device.last_reachable)}
- return unreachable
+@app.route("/devices/unreachable")
+def get_devices_unreachable():
+ global devices, lock
+ with lock:
+ unreachable = {}
+ for _, device in devices.items():
+ if device.reachable is False:
+ unreachable[device.imsi_id] = {'ip':device.ip, 'imsi':device.imsi, 'last_reachable':'{:%Y-%m-%d %H:%M:%S}'.format(device.last_reachable)}
+ return unreachable
@@ -116,10 +114,6 @@
datefmt='%Y-%m-%d %H:%M:%S',
stream=sys.stdout)
- api.add_resource(Devices, '/devices')
- api.add_resource(ReachableDevices, '/devices/reachable')
- api.add_resource(UnreachableDevices, '/devices/unreachable')
-
log.info("Starting network-diag-app...")
args = build_argparser().parse_args()