Merge branch 'master' of ssh://git.planet-lab.org/git/plstackapi
diff --git a/planetstack/observer/steps/garbage_collector.py b/planetstack/observer/steps/garbage_collector.py
index 4e0a865..495469f 100644
--- a/planetstack/observer/steps/garbage_collector.py
+++ b/planetstack/observer/steps/garbage_collector.py
@@ -21,7 +21,7 @@
             #self.gc_tenants()
             #self.gc_users()
             #self.gc_user_tenant_roles()
-            #self.gc_slivers()
+            self.gc_slivers()
             #self.gc_sliver_ips()
             #self.gc_external_routes()
             pass 
@@ -184,6 +184,8 @@
             sliver_dict[sliver.instance_id] = sliver
 
         for tenant in self.driver.shell.keystone.tenants.list():
+            if tenant.name in ['admin', 'services']:
+                continue
             # delete sliver that don't have a sliver record
             tenant_driver = self.driver.client_driver(tenant=tenant.name, deployment=sliver.node.deployment)
             for instance in tenant_driver.nova.servers.list():
diff --git a/planetstack/observer/steps/sync_network_deployments.py b/planetstack/observer/steps/sync_network_deployments.py
index f9a4bc0..d1b51d5 100644
--- a/planetstack/observer/steps/sync_network_deployments.py
+++ b/planetstack/observer/steps/sync_network_deployments.py
@@ -7,13 +7,14 @@
 from observer.openstacksyncstep import OpenStackSyncStep
 from core.models.network import *
 from core.models.slice import *
+from core.models.slice import Sliver
 from util.logger import Logger, logging
 
 logger = Logger(level=logging.INFO)
 
 class SyncNetworkDeployments(OpenStackSyncStep):
     requested_interval = 0 
-    provides=[NetworkDeployments]
+    provides=[Networ, NetworkDeployments, Sliver]
     
     def fetch_pending(self):
         # network deployments are not visible to users. We must ensure
diff --git a/planetstack/observer/steps/sync_sliver_ips.py b/planetstack/observer/steps/sync_sliver_ips.py
index 83e33eb..e2212d1 100644
--- a/planetstack/observer/steps/sync_sliver_ips.py
+++ b/planetstack/observer/steps/sync_sliver_ips.py
@@ -24,5 +24,6 @@
         if not ips:
             return
         sliver.ip = ips[0]['addr']
-        sliver.save()
-        logger.info("saved sliver ip: %s %s" % (sliver, ips[0]))
+        if sliver.ip:
+            sliver.save()
+            logger.info("saved sliver ip: %s %s" % (sliver, ips[0]))
diff --git a/planetstack/observer/steps/sync_slivers.py b/planetstack/observer/steps/sync_slivers.py
index 473b3ac..b576bbc 100644
--- a/planetstack/observer/steps/sync_slivers.py
+++ b/planetstack/observer/steps/sync_slivers.py
@@ -76,13 +76,6 @@
                                'public_key': sliver.creator.public_key}
                 driver.create_keypair(**key_fields)       
  
-            slice_deployments = SliceDeployments.objects.filter(slice = sliver.slice, 
-                                                               deployment = sliver.deploymentNetwork)
-            for slice_deployment in slice_deployments:
-                if slice_deployment.keyname:
-                    keyname = slice_deployment.keyname
-                    break 
- 
             instance = driver.spawn_instance(name=sliver.name,
                                 key_name = keyname,
                                 image_id = image_id,