from sfa.util.sfalogging import logger
+from keystoneclient.v2_0 import client as keystone_client
from glance import client as glance_client
-from novaclient.v1_1.client import Client
+from novaclient.v1_1 import client as nova_client
from sfa.util.config import Config
return opts
+class KeystoneClient:
+ def __init__(self, username=None, password=None, tenant=None, url=None, config=None):
+ if not config:
+ config = Config()
+ opts = parse_novarc(config.SFA_NOVA_NOVARC)
+ if username:
+ opts['OS_USERNAME'] = username
+ if password:
+ opts['OS_PASSWORD'] = password
+ if tenant:
+ opts['OS_TENANT_NAME'] = tenant
+ if url:
+ opts['OS_AUTH_URL'] = url
+ self.opts = opts
+ self.client = keystone_client.Client(username=opts.get('OS_USERNAME'),
+ password=opts.get('OS_PASSWORD'),
+ tenant_name=opts.get('OS_TENANT_NAME'),
+ auth_url=opts.get('OS_AUTH_URL'))
+
+ def connect(self, *args, **kwds):
+ self.__init__(*args, **kwds)
+
+ def __getattr__(self, name):
+ return getattr(self.client, name)
+
+
class GlanceClient:
def __init__(self, config=None):
if not config:
config = Config()
opts = parse_novarc(config.SFA_NOVA_NOVARC)
-
self.client = glance_client.get_client(host='0.0.0.0',
username=opts.get('OS_USERNAME'),
password=opts.get('OS_PASSWORD'),
tenant=opts.get('OS_TENANT_NAME'),
auth_url=opts.get('OS_AUTH_URL'))
-
def __getattr__(self, name):
return getattr(self.client, name)
-
class NovaClient:
- def __init__(self, config=None):
+ def __init__(self, username=None, password=None, tenant=None, url=None, config=None):
if not config:
config = Config()
opts = parse_novarc(config.SFA_NOVA_NOVARC)
-
- self.client = Client(username=opts.get('OS_USERNAME'),
- api_key=opts.get('OS_PASSWORD'),
- project_id=opts.get('OS_TENANT_NAME'),
- auth_url=opts.get('OS_AUTH_URL'),
- region_name='',
- extensions=[],
- service_type='compute',
- service_name='',
- )
-
+ if username:
+ opts['OS_USERNAME'] = username
+ if password:
+ opts['OS_PASSWORD'] = password
+ if tenant:
+ opts['OS_TENANT_NAME'] = tenant
+ if url:
+ opts['OS_AUTH_URL'] = url
+ self.opts = opts
+ self.client = nova_client.Client(username=opts.get('OS_USERNAME'),
+ api_key=opts.get('OS_PASSWORD'),
+ project_id=opts.get('OS_TENANT_NAME'),
+ auth_url=opts.get('OS_AUTH_URL'),
+ region_name='',
+ extensions=[],
+ service_type='compute',
+ service_name='',
+ )
+ def connect(self, *args, **kwds):
+ self.__init__(*args, **kwds)
+
def __getattr__(self, name):
- return getattr(self.client, name)
-
-
+ return getattr(self.client, name)