observer now supports remote openstack deployments
diff --git a/planetstack/openstack/client.py b/planetstack/openstack/client.py
index 1a6386d..c6b6b16 100644
--- a/planetstack/openstack/client.py
+++ b/planetstack/openstack/client.py
@@ -13,6 +13,7 @@
     has_openstack = False
 
 from planetstack.config import Config
+from deployment_auth import deployment_auth
 
 def require_enabled(callable):
     def wrapper(*args, **kwds):
@@ -39,16 +40,22 @@
     return opts
 
 class Client:
-    def __init__(self, username=None, password=None, tenant=None, url=None, config=None, *args, **kwds):
-        if config:
-            config = Config(config)
+    def __init__(self, username=None, password=None, tenant=None, url=None, token=None, endpoint=None, deployment=None, *args, **kwds):
+        
+            
+        if not deployment or deployment not in deployment_auth:
+            auth = deployment_auth['default']
         else:
-            config = Config()
+            auth = deployment_auth[deployment]
+            
+            
         self.has_openstack = has_openstack
-        self.username = config.nova_admin_user
-        self.password = config.nova_admin_password
-        self.tenant = config.nova_admin_tenant
-        self.url = config.nova_url
+        self.username = auth['user']
+        self.password = auth['password']
+        self.tenant = auth['tenant']
+        self.url = auth['url']
+        self.endpoint = auth['endpoint']
+        self.token = auth['token']  
 
         if username:
             self.username = username
@@ -58,6 +65,10 @@
             self.tenant = tenant
         if url:
             self.url = url
+        if token:
+            self.token = token    
+        if endpoint:
+            self.endpoint = endpoint
 
         if '@' in self.username:
             self.username = self.username[:self.username.index('@')]
@@ -80,7 +91,10 @@
             self.client = keystone_client.Client(username=self.username,
                                                  password=self.password,
                                                  tenant_name=self.tenant,
-                                                 auth_url=self.url)
+                                                 auth_url=self.url,
+                                                 endpoint=self.endpoint,
+                                                 token=self.token
+                                                )
 
     @require_enabled
     def connect(self, *args, **kwds):
diff --git a/planetstack/openstack/driver.py b/planetstack/openstack/driver.py
index 8224c17..174cf85 100644
--- a/planetstack/openstack/driver.py
+++ b/planetstack/openstack/driver.py
@@ -12,37 +12,39 @@
 
 class OpenStackDriver:
 
-    def __init__(self, config = None, client=None): 
+    def __init__(self, config = None, client=None, deployment=None):
         if config:
             self.config = Config(config)
         else:
-            self.config = Config() 
+            self.config = Config()
 
-        self.admin_client = OpenStackClient()
+        self.admin_client = OpenStackClient(deployment=deployment)
         self.admin_user = self.admin_client.keystone.users.find(name=self.admin_client.keystone.username)
 
         if client:
             self.shell = client
         else:
-            self.shell = OpenStackClient()
+            self.shell = OpenStackClient(deployment=deployment)
 
         self.enabled = manager_enabled
         self.has_openstack = has_openstack
 
-    def client_driver(self, caller=None, tenant=None):
+    def client_driver(self, caller=None, tenant=None, deployment=None):
         if caller:
             auth = {'username': caller.email,
                     'password': hashlib.md5(caller.password).hexdigest()[:6],
                     'tenant': tenant}
-            client = OpenStackClient(**auth)
+            client = OpenStackClient(deployment=deployment, **auth)
         else:
-            client = OpenStackClient(tenant=tenant)
-        driver = OpenStackDriver(client=client)
+            client = OpenStackClient(tenant=tenant, deployment=deployment)
+
+        driver = OpenStackDriver(client=client, deployment=deployment)
         return driver
 
-    def admin_driver(self, tenant=None):
-        client = OpenStackClient(tenant=tenant)
-        driver = OpenStackDriver(client=client) 
+    def admin_driver(self, tenant=None, deployment=None):
+        client = OpenStackClient(tenant=tenant, deployment=deployment)
+        driver = OpenStackDriver(client=client, deployment=deployment)
+        return driver    
 
     def create_role(self, name):
         roles = self.shell.keystone.roles.findall(name=name)