Basic ping test

Change-Id: Ib61ebd3963db46118a0d8f5c4cea0e002f48aa9a
diff --git a/app.py b/app.py
index cb8bedb..c3e3238 100644
--- a/app.py
+++ b/app.py
@@ -3,6 +3,8 @@
 SPDX-License-Identifier: LicenseRef-ONF-Member-1.01
 """
 import sys
+import re
+from datetime import datetime
 
 from flask import Flask, request
 from flask_restful import Resource, Api
@@ -10,24 +12,30 @@
 from argparse import ArgumentParser, SUPPRESS
 
 from roc import Roc
+from prom import Prometheus
+from ping import ping
+import device
 
 app = Flask(__name__)
 api = Api(app)
 
-global roc
+devices = {} # dict imsi:device
 
 
-class Imsi(Resource):
+
+class ReachableDevices(Resource):
     def get(self):
-        return roc.get_imsi()
+        global devices
+        return device.get_reachable(devices)
 
-class Subnet(Resource):
+class UnreachableDevices(Resource):
     def get(self):
-        return roc.get_subnet()
+        global devices
+        return device.get_unreachable(devices)
 
 
-api.add_resource(Imsi, '/imsi')
-api.add_resource(Subnet, '/subnet')
+api.add_resource(ReachableDevices, '/reachable-devices')
+api.add_resource(UnreachableDevices, '/unreachable-devices')
 
 
 def build_argparser():
@@ -43,6 +51,9 @@
     args.add_argument("--password",
                       help="ROC password",
                       type=str)
+    args.add_argument("--token",
+                      help="Rancher bearer token",
+                      type=str)
     return parser
 
 
@@ -58,7 +69,22 @@
     args = build_argparser().parse_args()
 
     roc = Roc(args.user, args.password)
-    #roc.dump()
-    print(roc.get_imsi())
+    prom = Prometheus(args.token.split(':')[0], args.token.split(':')[1])
+
+    roc.update_devices(devices)
+
+    prom.update_devices(devices)
+
+    for imsi_id, device in devices.items():
+        if device.ip is None:
+            continue
+        if ping(device.ip):
+            device.reachable = True
+            device.last_reachable = datetime.now()
+            log.info("{}/{}/{} - reachable".format(device.imsi_id, device.imsi, device.ip))
+        else:
+            device.reachable = False
+            log.info("{}/{}/{} - unreachable".format(device.imsi_id, device.imsi, device.ip))
+
 
     app.run('0.0.0.0', '3333')