avoid as much as possible accessing logger through class instances, whenever that...
[sfa.git] / sfa / openstack / client.py
index f0d717e..40a3f85 100644 (file)
@@ -14,7 +14,7 @@ def parse_novarc(filename):
             parts = line.split('=')
             if len(parts) > 1:
                 value = parts[1].replace("\'", "")
-                value = value.replace('\"', '') 
+                value = value.replace('\"', '')
                 opts[parts[0]] = value
         except:
             pass
@@ -23,37 +23,67 @@ def parse_novarc(filename):
 
 
 class KeystoneClient:
-    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)
+        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'),
+                                             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) 
+        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'),
+                                               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)
+        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'),
@@ -61,8 +91,11 @@ class NovaClient:
                                          region_name='',
                                          extensions=[],
                                          service_type='compute',
-                                         service_name='',  
+                                         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)