From f464a3679444ab0e9690cd61ab07c82d3f5da6cf Mon Sep 17 00:00:00 2001
From: Ciro Scognamiglio <ciro.scognamiglio@cslash.net>
Date: Thu, 14 Aug 2014 17:25:23 +0200
Subject: [PATCH] sfa monitoring fixes. cert and key is read from monitor.ini

---
 monitor/__init__.py | 17 ---------------
 rest/monitor.py     | 51 ++++++++++++++++++++++++++-------------------
 2 files changed, 30 insertions(+), 38 deletions(-)
 delete mode 100644 monitor/__init__.py

diff --git a/monitor/__init__.py b/monitor/__init__.py
deleted file mode 100644
index 206f8c03..00000000
--- a/monitor/__init__.py
+++ /dev/null
@@ -1,17 +0,0 @@
-import os
-import threading
-from sfa.client.sfaserverproxy import SfaServerProxy
-from sfa.client.return_value import ReturnValue
-
-path=os.path.dirname(os.path.abspath(__file__))
-
-SFA_KEY_FILE=os.path.abspath(path + "../myslice/sfa.pkey")
-SFA_CERT_FILE=os.path.abspath(path + "../myslice/sfa.cert")
-
-def get_version(url):
-    server=SfaServerProxy(url, SFA_KEY_FILE, SFA_CERT_FILE)
-    try:
-        version = server.GetVersion()
-    except Exception, why:
-        raise
-    return version
\ No newline at end of file
diff --git a/rest/monitor.py b/rest/monitor.py
index ad110379..22521891 100644
--- a/rest/monitor.py
+++ b/rest/monitor.py
@@ -3,19 +3,7 @@ from sfa.client.return_value import ReturnValue
 from django.http import HttpResponse
 from rest import error
 import os,json
-import ConfigParser
-
-def sfaGetVersion(url):
-    cert = os.getcwd() + "/myslice/sfa.cert"
-    pkey = os.getcwd() + "/myslice/sfa.pkey"
-
-    server = SfaServerProxy(url, pkey, cert)
-    try:
-        version = server.GetVersion()
-    except Exception, e:
-        return False
-    
-    return version
+import ConfigParser    
 
 def servicesStatus(request):
     Config = ConfigParser.ConfigParser()
@@ -23,8 +11,27 @@ def servicesStatus(request):
     
     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] = {}
 
@@ -37,17 +44,19 @@ def servicesStatus(request):
             if Config.has_option(s, 'type') :
                 result[s]['type'] = Config.get(s, 'type')
                 
-            ret = sfaGetVersion(Config.get(s, 'url'))
-            
-            if ret :
+            server = SfaServerProxy(Config.get(s, 'url'), pkey, cert)
+            try:
+                version = server.GetVersion()
+
                 result[s]['status'] = 'ok'
                 
-                if 'interface' in ret : # registry
-                    result[s]['version'] = ret['sfa']
+                if 'interface' in version : # registry
+                    result[s]['version'] = version['sfa']
                 else :
-                    result[s]['version'] = ret['geni_api']
-            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
-- 
2.47.0