diff --git a/planetstack/observer/steps/garbage_collector.py b/planetstack/observer/steps/garbage_collector.py
index b9a588b..6feff14 100644
--- a/planetstack/observer/steps/garbage_collector.py
+++ b/planetstack/observer/steps/garbage_collector.py
@@ -6,7 +6,7 @@
 from planetstack.config import Config
 from util.logger import Logger, logging
 from observer.openstacksyncstep import OpenStackSyncStep
-from deployment_auth import deployment_auth
+from core.models.deployment import Deployment
 from core.models import *
 
 logger = Logger(logfile='/var/log/observer.log', level=logging.INFO)
@@ -46,9 +46,9 @@
         # some deployments are at the same url. Keep track of the urls we've visited
         # to make sure we aren't making redundant calls
         completed_urls = []
-        for deployment in deployment_auth:
+        for deployment in Deployment.objects.all():
             # skip deployments that we've already processed
-            if deployment_auth[deployment]['url'] in completed_urls:
+            if deployment.auth_url in completed_urls:
                 continue
             try:
                 driver = self.driver.admin_driver(deployment=deployment)
@@ -68,7 +68,7 @@
             except:
                 logger.log_exc("GarbageCollector: Error at deployment %s" % deployment)
                                 
-            completed_urls.append(deployment_auth[deployment]['url']) 
+            completed_urls.append(deployment.auth_url) 
 
     def gc_tenants(self):
         """
@@ -95,9 +95,9 @@
         # some deployments are at the same url. Keep track of the urls we've visited
         # to make sure we aren't making redundant calls
         completed_urls = []
-        for deployment in deployment_auth:
+        for deployment in Deployment.objects.all():
             # skip deployments that we've already processed
-            if deployment_auth[deployment]['url'] in completed_urls:
+            if deployment.auth_url in completed_urls:
                 continue
 
             driver = self.driver.admin_driver(deployment=deployment)
@@ -111,7 +111,7 @@
                         driver.delete_tenant(tenant.id)
                     except:
                         logger.log_exc("GarbageCollector: delete tenant failed: %s" % tenant)
-            completed_urls.append(deployment_auth[deployment]['url'])
+            completed_urls.append(deployment.auth_url)
 
     def gc_users(self):
         """
@@ -133,9 +133,9 @@
         # some deployments are at the same url. Keep track of the urls we've visited
         # to make sure we aren't making redundant calls
         completed_urls = []
-        for deployment in deployment_auth:
+        for deployment in Deployment.objects.all():
             # skip deployments that we've already processed
-            if deployment_auth[deployment]['url'] in completed_urls:
+            if deployment.auth_url in completed_urls:
                 continue
 
             driver = self.driver.admin_driver(deployment=deployment)
@@ -149,7 +149,7 @@
                         self.driver.delete_user(user.id)
                     except:
                         logger.log_exc("GarbageCollector: delete user failed: %s" % user)
-            completed_urls.append(deployment_auth[deployment]['url'])          
+            completed_urls.append(deployment.auth_url)          
 
     def gc_user_tenant_roles(self):
         """
@@ -172,9 +172,9 @@
         # 2. Never remove a user's role at a slice they've created.
         # Keep track of all roles that must be preserved.     
         users = User.objects.all()
-        for deployment in deployment_auth:
+        for deployment in Deployment.objects.all():
             # skip deployments that we've already processed
-            if deployment_auth[deployment]['url'] in completed_urls:
+            if deployment.auth_url in completed_urls:
                 continue
 
             driver = self.driver.admin_driver(deployment=deployment)
@@ -213,7 +213,7 @@
                             logger.info("GarbageCollector: removing user role %s for %s at %s" % \
                                        (k_user_role, k_user.username, tenant.name))
                             driver.shell.keyston.remove_user_role(k_user, k_user_role, tenant)
-            completed_urls.append(deployment_auth[deployment]['url']) 
+            completed_urls.append(deployment.auth_url) 
  
     def gc_slivers(self):
         """
@@ -231,9 +231,9 @@
         # some deployments are at the same url. Keep track of the urls we've visited
         # to make sure we aren't making redundant calls
         completed_urls = []
-        for deployment in deployment_auth:
+        for deployment in Deployment.objects.all():
             # skip deployments that we've already processed
-            if deployment_auth[deployment]['url'] in completed_urls:
+            if deployment.auth_url in completed_urls:
                 continue
 
             try:
@@ -252,7 +252,7 @@
                                 logger.log_exc("GarbageCollector: destroy sliver failed: %s" % instance)
             except:
                 logger.log_exc("GarbageCollector: Error at deployment %s" % deployment) 
-            completed_urls.append(deployment_auth[deployment]['url'])
+            completed_urls.append(deployment.auth_url)
                
 
     def gc_sliver_ips(self):
@@ -284,7 +284,7 @@
 
         # collect nova nodes:
         compute_nodes_dict = {}
-        for deployment in deployment_auth:
+        for deployment in Deployment.objets.all():
             driver = self.driver.admin_driver(deployment=deployment) 
             compute_nodes = driver.nova.hypervisors.list()
             for compute_node in compute_nodes:
@@ -303,7 +303,7 @@
 
         # collect glance images
         glance_images_dict = {}
-        for deployment in deployment_auth:
+        for deployment in Deployment.objects.all():
             driver = self.driver.admin_driver(deployment=deployment)
             glance_images = driver.shell.glance.get_images()
             for glance_image in glance_images:
diff --git a/planetstack/observer/steps/sync_network_slivers.py b/planetstack/observer/steps/sync_network_slivers.py
index 7e69330..92485a5 100644
--- a/planetstack/observer/steps/sync_network_slivers.py
+++ b/planetstack/observer/steps/sync_network_slivers.py
@@ -30,7 +30,7 @@
         for sliver in slivers:
             slivers_by_instance_id[sliver.instance_id] = sliver
 
-        driver = self.driver.admin_driver(caller=sliver.creator, tenant=sliver.slice.name, deployment=sliver.node.deployment.name)
+        driver = self.driver.client_driver(caller=sliver.creator, tenant=sliver.slice.name, deployment=sliver.node.deployment.name)
         ports = driver.shell.quantum.list_ports()["ports"]
         for port in ports:
             if port["id"] in networkSlivers_by_port:
diff --git a/planetstack/observer/steps/sync_nodes.py b/planetstack/observer/steps/sync_nodes.py
index f09ec83..ecd32b4 100644
--- a/planetstack/observer/steps/sync_nodes.py
+++ b/planetstack/observer/steps/sync_nodes.py
@@ -25,13 +25,14 @@
         for deployment in deployments:
             driver = self.driver.admin_driver(deployment=deployment.name)
             compute_nodes = driver.shell.nova.hypervisors.list()
-            if compute_node.hypervisor_hostname not in node_hostnames:
-                # XX TODO:figure out how to correctly identify a node's site.
-                # XX pick a random site to add the node to for now
-                site_index = random.randint(0, len(sites))
-                node = Node(name=compute_node.hypervisor_hostname,
-                            site=sites[site_index], deployment=deployment)
-                new_nodes.append(node)
+            for compute_node in compute_nodes:
+                if compute_node.hypervisor_hostname not in node_hostnames:
+                    # XX TODO:figure out how to correctly identify a node's site.
+                    # XX pick a random site to add the node to for now
+                    site_index = random.randint(0, len(sites))
+                    node = Node(name=compute_node.hypervisor_hostname,
+                                site=sites[site_index], deployment=deployment)
+                    new_nodes.append(node)
 
         return new_nodes    
                  
diff --git a/planetstack/openstack/client.py b/planetstack/openstack/client.py
index 465425d..162e506 100644
--- a/planetstack/openstack/client.py
+++ b/planetstack/openstack/client.py
@@ -15,7 +15,6 @@
     has_openstack = False
 
 from planetstack.config import Config
-from deployment_auth import deployment_auth
 
 def require_enabled(callable):
     def wrapper(*args, **kwds):
@@ -44,21 +43,12 @@
 class Client:
     def __init__(self, username=None, password=None, tenant=None, url=None, token=None, endpoint=None, deployment=None, admin=True, *args, **kwds):
         
-            
-        if not deployment or deployment not in deployment_auth:
-            auth = deployment_auth['default']
-        else:
-            auth = deployment_auth[deployment]
-            
         self.has_openstack = has_openstack
-
-        self.url = auth['url']
+        self.url = deployment.auth_url
         if admin:
-            self.username = auth['user']
-            self.password = auth['password']
-            self.tenant = auth['tenant']
-            self.endpoint = auth['endpoint']
-            self.token = auth['token']  
+            self.username = deployment.admin_user
+            self.password = deployment.admin_password
+            self.tenant = deployment.admin_tenant
         else:
             self.username = None
             self.password = None
@@ -98,9 +88,7 @@
             self.client = keystone_client.Client(username=self.username,
                                                  password=self.password,
                                                  tenant_name=self.tenant,
-                                                 auth_url=self.url,
-                                                 endpoint=self.endpoint,
-                                                 token=self.token
+                                                 auth_url=self.url
                                                 )
 
     @require_enabled
diff --git a/setup.py b/setup.py
index 267f282..a250b29 100644
--- a/setup.py
+++ b/setup.py
@@ -19,7 +19,7 @@
       description='PlanetStack',
       scripts=['planetstack/planetstack-backend.py'],
       data_files=[
-        ('/etc/planetstack/', ['planetstack/plstackapi_config', 'planetstack/deployment_auth.py']),
+        ('/etc/planetstack/', ['planetstack/plstackapi_config']),
         ('/lib/systemd/system/', ['planetstack/redhat/planetstack-backend.service']),
         ])
 
