AiC and REST login
[myslice.git] / rest / monitor.py
1 from sfa.client.sfaserverproxy import SfaServerProxy
2 from sfa.client.return_value import ReturnValue
3 from django.http import HttpResponse
4 from rest import error
5 import os,json
6 import ConfigParser    
7
8 def servicesStatus(request):
9     Config = ConfigParser.ConfigParser()
10     monitor_file = os.path.abspath(os.path.dirname(__file__) + '/../myslice/monitor.ini')
11     Config.read(monitor_file)
12     
13     result = {}
14     
15     if not Config.has_option('monitor', 'cert') :
16         return HttpResponse(json.dumps({'error' : '-1'}), content_type="application/json")
17     
18     cert = os.path.abspath(Config.get('monitor', 'cert'))
19     if not os.path.isfile(cert) :
20          return HttpResponse(json.dumps({'error' : '-2'}), content_type="application/json")
21      
22      
23     if not Config.has_option('monitor', 'pkey') :
24         return HttpResponse(json.dumps({'error' : '-3'}), content_type="application/json")
25     
26     pkey = os.path.abspath(Config.get('monitor', 'pkey'))
27     if not os.path.isfile(pkey) :
28          return HttpResponse(json.dumps({'error' : '-4'}), content_type="application/json")
29     
30     services = Config.sections()
31     for s in services :
32         
33         if s == 'monitor' : 
34             continue
35         
36         if Config.has_option(s, 'url') :
37             result[s] = {}
38
39             if Config.has_option(s, 'name') :
40                 result[s]['name'] = Config.get(s, 'name')
41             
42             if Config.has_option(s, 'description') :
43                 result[s]['description'] = Config.get(s, 'description')
44             
45             if Config.has_option(s, 'type') :
46                 result[s]['type'] = Config.get(s, 'type')
47                 
48             server = SfaServerProxy(Config.get(s, 'url'), pkey, cert)
49             try:
50                 version = server.GetVersion()
51
52                 result[s]['status'] = 'ok'
53                 
54                 if 'interface' in version : # registry
55                     result[s]['version'] = version['sfa']
56                 else :
57                     result[s]['version'] = version['geni_api']
58
59             except Exception, e:
60                 result[s]['status'] = 'ko'
61
62         
63     return HttpResponse(json.dumps(result), content_type="application/json")