re-did the fine grained permission checking stuff again
[plstackapi.git] / planetstack / openstack_observer / steps / sync_slice_deployments.py
index 24b7459..03ea2ca 100644 (file)
@@ -20,30 +20,6 @@ class SyncSliceDeployments(OpenStackSyncStep):
         if (deleted):
             return SliceDeployments.deleted_objects.all()
         else:
-            # slice deployments are not visible to users. We must ensure
-            # slices are deployed at all deploymets available to their site.
-            site_deployments = SiteDeployments.objects.all()
-            site_deploy_lookup = defaultdict(list)
-            for site_deployment in site_deployments:
-                site_deploy_lookup[site_deployment.site].append(site_deployment.deployment)
-            
-            slice_deployments = SliceDeployments.objects.all()
-            slice_deploy_lookup = defaultdict(list)
-            for slice_deployment in slice_deployments:
-                slice_deploy_lookup[slice_deployment.slice].append(slice_deployment.deployment)
-            
-            all_deployments = Deployment.objects.all() 
-            for slice in Slice.objects.all():
-                # slices are added to all deployments for now
-                expected_deployments = all_deployments
-                #expected_deployments = site_deploy_lookup[slice.site]
-                for expected_deployment in expected_deployments:
-                    if slice not in slice_deploy_lookup or \
-                       expected_deployment not in slice_deploy_lookup[slice]:
-                        sd = SliceDeployments(slice=slice, deployment=expected_deployment)
-                        sd.save()
-
-            # now we can return all slice deployments that need to be enacted   
             return SliceDeployments.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
 
     def get_next_subnet(self, deployment=None):
@@ -66,6 +42,11 @@ class SyncSliceDeployments(OpenStackSyncStep):
 
     def sync_record(self, slice_deployment):
         logger.info("sync'ing slice deployment %s" % slice_deployment)
+
+        if not slice_deployment.deployment.admin_user:
+            logger.info("deployment %r has no admin_user, skipping" % slice_deployment.deployment)
+            return
+
         if not slice_deployment.tenant_id:
             nova_fields = {'tenant_name': slice_deployment.slice.name,
                    'description': slice_deployment.slice.description,