Adjust to new roc api
Change-Id: I67dc8d45ec6421d957af697b2f650c66b7c73a3d
diff --git a/app.py b/app.py
index 4a53c31..fded67e 100644
--- a/app.py
+++ b/app.py
@@ -3,9 +3,7 @@
SPDX-License-Identifier: LicenseRef-ONF-Member-1.01
"""
import sys
-import re
from datetime import datetime
-import time
from flask import Flask, request
import logging as log
@@ -15,11 +13,10 @@
from roc import Roc
from prom import Prometheus
from ping import ping
-import device
app = Flask(__name__)
-devices = {} # dict imsi:device
+devices = {} # dict imsi:device
lock = threading.Lock()
probe_start = threading.Event()
probe_stop = threading.Event()
@@ -31,9 +28,10 @@
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)}
+ 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/reachable")
def get_devices_reachable():
global devices, lock
@@ -41,9 +39,10 @@
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)}
+ 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/unreachable")
def get_devices_unreachable():
global devices, lock
@@ -51,14 +50,17 @@
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)}
+ 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("/probe")
def probe():
update_and_probe()
return get_devices_reachable()
+
+# curl http://localhost:3333/config?period=0
@app.route("/config")
def config():
global args, probe_stop
@@ -104,8 +106,21 @@
help="Probing period in sec",
type=int,
default=180)
+ args.add_argument("--url",
+ help="ROC url",
+ type=str,
+ default="https://roc.menlo.aetherproject.org/aether-roc-api/aether/v2.0.0/connectivity-service-v2/")
+ args.add_argument("--enterprise",
+ help="Enterprise Id",
+ type=str,
+ default="aether-onf")
+ args.add_argument("--site",
+ help="Site Id",
+ type=str,
+ default="menlo-4g")
return parser
+
def update(roc, prom, old):
new = roc.update_devices(old)
if new is not None:
@@ -114,7 +129,8 @@
new = old
return new
-def probe(devices):
+
+def do_probe(devices):
for imsi_id, device in devices.items():
if device.ip is None:
continue
@@ -126,13 +142,15 @@
device.reachable = False
log.info("{}/{}/{} - unreachable".format(device.imsi_id, device.imsi, device.ip))
+
def update_and_probe():
global devices, lock
new = update(roc, prom, devices)
- probe(new)
+ do_probe(new)
with lock:
devices = new
+
def work_thread(roc, prom):
global args
while True:
@@ -146,6 +164,7 @@
probe_stop.clear()
break
+
if __name__ == '__main__':
log.basicConfig(
@@ -158,7 +177,7 @@
args = build_argparser().parse_args()
- roc = Roc(args.user, args.password)
+ roc = Roc(args.url, args.user, args.password, args.enterprise, args.site)
prom = Prometheus(args.token.split(':')[0], args.token.split(':')[1])
t = threading.Thread(target=work_thread, args=(roc, prom,))