Merge branch 'onelab' of ssh://git.onelab.eu/git/myslice into fibre
[unfold.git] / rest / monitor.py
diff --git a/rest/monitor.py b/rest/monitor.py
new file mode 100644 (file)
index 0000000..2252189
--- /dev/null
@@ -0,0 +1,62 @@
+from sfa.client.sfaserverproxy import SfaServerProxy
+from sfa.client.return_value import ReturnValue
+from django.http import HttpResponse
+from rest import error
+import os,json
+import ConfigParser    
+
+def servicesStatus(request):
+    Config = ConfigParser.ConfigParser()
+    Config.read(os.getcwd() + "/myslice/monitor.ini")
+    
+    result = {}
+    
+    if not Config.has_option('monitor', 'cert') :
+        return HttpResponse(json.dumps({'error' : '-1'}), content_type="application/json")
+    
+    cert = os.path.abspath(Config.get('monitor', 'cert'))
+    if not os.path.isfile(cert) :
+         return HttpResponse(json.dumps({'error' : '-1'}), content_type="application/json")
+     
+     
+    if not Config.has_option('monitor', 'pkey') :
+        return HttpResponse(json.dumps({'error' : '-2'}), content_type="application/json")
+    
+    pkey = os.path.abspath(Config.get('monitor', 'pkey'))
+    if not os.path.isfile(pkey) :
+         return HttpResponse(json.dumps({'error' : '-2'}), content_type="application/json")
+    
+    services = Config.sections()
+    for s in services :
+        
+        if s == 'monitor' : 
+            continue
+        
+        if Config.has_option(s, 'url') :
+            result[s] = {}
+
+            if Config.has_option(s, 'name') :
+                result[s]['name'] = Config.get(s, 'name')
+            
+            if Config.has_option(s, 'description') :
+                result[s]['description'] = Config.get(s, 'description')
+            
+            if Config.has_option(s, 'type') :
+                result[s]['type'] = Config.get(s, 'type')
+                
+            server = SfaServerProxy(Config.get(s, 'url'), pkey, cert)
+            try:
+                version = server.GetVersion()
+
+                result[s]['status'] = 'ok'
+                
+                if 'interface' in version : # registry
+                    result[s]['version'] = version['sfa']
+                else :
+                    result[s]['version'] = version['geni_api']
+
+            except Exception, e:
+                result[s]['status'] = 'ko'
+
+        
+    return HttpResponse(json.dumps(result), content_type="application/json")
\ No newline at end of file