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
8 def parse_novarc(filename):
10 f = open(filename, 'r')
13 line = line.replace('export', '').strip()
14 parts = line.split('=')
16 value = parts[1].replace("\'", "")
17 value = value.replace('\"', '')
18 opts[parts[0]] = value
27 def __init__(self, username=None, password=None, tenant=None, url=None, config=None):
30 opts = parse_novarc(config.SFA_NOVA_NOVARC)
32 opts['OS_USERNAME'] = username
34 opts['OS_PASSWORD'] = password
36 opts['OS_TENANT_NAME'] = tenant
38 opts['OS_AUTH_URL'] = url
40 self.client = keystone_client.Client(username=opts.get('OS_USERNAME'),
41 password=opts.get('OS_PASSWORD'),
44 auth_url=opts.get('OS_AUTH_URL'))
46 def connect(self, *args, **kwds):
47 self.__init__(*args, **kwds)
49 def __getattr__(self, name):
50 return getattr(self.client, name)
55 def __init__(self, config=None):
58 opts = parse_novarc(config.SFA_NOVA_NOVARC)
59 self.client = glance_client.get_client(host='0.0.0.0',
66 auth_url=opts.get('OS_AUTH_URL'))
68 def __getattr__(self, name):
69 return getattr(self.client, name)
74 def __init__(self, username=None, password=None, tenant=None, url=None, config=None):
77 opts = parse_novarc(config.SFA_NOVA_NOVARC)
79 opts['OS_USERNAME'] = username
81 opts['OS_PASSWORD'] = password
83 opts['OS_TENANT_NAME'] = tenant
85 opts['OS_AUTH_URL'] = url
87 self.client = nova_client.Client(username=opts.get('OS_USERNAME'),
88 api_key=opts.get('OS_PASSWORD'),
89 project_id=opts.get('OS_TENANT_NAME'),
90 auth_url=opts.get('OS_AUTH_URL'),
93 service_type='compute',
97 def connect(self, *args, **kwds):
98 self.__init__(*args, **kwds)
100 def __getattr__(self, name):
101 return getattr(self.client, name)