added KeystoneClient
[sfa.git] / sfa / openstack / client.py
1 from sfa.util.sfalogging import logger
2 from keystoneclient.v2_0 import client as keystone_client
3 from glance import client as glance_client
4 from novaclient.v1_1 import client as nova_client
5 from sfa.util.config import Config
6
7
8 def parse_novarc(filename):
9     opts = {}
10     f = open(filename, 'r')
11     for line in f:
12         try:
13             line = line.replace('export', '').strip()
14             parts = line.split('=')
15             if len(parts) > 1:
16                 value = parts[1].replace("\'", "")
17                 value = value.replace('\"', '') 
18                 opts[parts[0]] = value
19         except:
20             pass
21     f.close()
22     return opts
23
24
25 class KeystoneClient:
26     def __init__(self, config=None):
27         if not config:
28             config = Config()
29         opts = parse_novarc(config.SFA_NOVA_NOVARC)
30         self.client = keystone_client.Client(username=opts.get('OS_USERNAME'),
31                                              password=opts.get('OS_PASSWORD'),
32                                              tenant_name=opts.get('OS_TENANT_NAME'),
33                                              auth_url=opts.get('OS_AUTH_URL'))
34    
35     def __getattr__(self, name):
36         return getattr(self.client, name) 
37
38
39 class GlanceClient:
40     def __init__(self, config=None):
41         if not config:
42             config = Config()
43         opts = parse_novarc(config.SFA_NOVA_NOVARC)
44         self.client = glance_client.get_client(host='0.0.0.0',
45                                                username=opts.get('OS_USERNAME'),
46                                                password=opts.get('OS_PASSWORD'),
47                                                tenant=opts.get('OS_TENANT_NAME'),
48                                                auth_url=opts.get('OS_AUTH_URL'))
49     def __getattr__(self, name):
50         return getattr(self.client, name)
51
52 class NovaClient:
53     def __init__(self, config=None):
54         if not config:
55             config = Config()
56         opts = parse_novarc(config.SFA_NOVA_NOVARC)
57         self.client = nova_client.Client(username=opts.get('OS_USERNAME'),
58                                          api_key=opts.get('OS_PASSWORD'),
59                                          project_id=opts.get('OS_TENANT_NAME'),
60                                          auth_url=opts.get('OS_AUTH_URL'),
61                                          region_name='',
62                                          extensions=[],
63                                          service_type='compute',
64                                          service_name='',  
65                                          )
66                               
67     def __getattr__(self, name):
68         return getattr(self.client, name)