X-Git-Url: http://git.onelab.eu/?p=unfold.git;a=blobdiff_plain;f=rest%2Fmonitor.py;fp=rest%2Fmonitor.py;h=225218911427aac85153b2623fa768801aba1d83;hp=0000000000000000000000000000000000000000;hb=e45ccc4c4c327a81cc6a001ceff0655358ea09c5;hpb=e494918d8e6d9dab21b9ff30c3c2db2157dc0a20 diff --git a/rest/monitor.py b/rest/monitor.py new file mode 100644 index 00000000..22521891 --- /dev/null +++ b/rest/monitor.py @@ -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