More indentation error
[plstackapi.git] / planetstack / openstack_observer / steps / sync_site_privileges.py
index 78da7b2..bfc04b3 100644 (file)
@@ -3,9 +3,9 @@ import base64
 from django.db.models import F, Q
 from planetstack.config import Config
 from observer.openstacksyncstep import OpenStackSyncStep
-from core.models import User, UserDeployment, SitePrivilege, SiteDeployment   
+from core.models import User, ControllerUser, SitePrivilege, SiteDeployment   
 
-class SyncSitePrivileges(OpenStackSyncStep):
+class SyncSitePrivilege(OpenStackSyncStep):
     requested_interval=0
     provides=[SitePrivilege]
 
@@ -17,13 +17,14 @@ class SyncSitePrivileges(OpenStackSyncStep):
         return SitePrivilege.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
 
     def sync_record(self, site_priv):
-        # sync site privileges at all site deployments
-        site_deployments = SiteDeployment.objects.filter(site=site_priv.site)
-        for site_deployment in site_deployments:
-            user_deployments = UserDeployment.objects.filter(deployment=site_deployment.deployment)
-            if user_deployments:
-                kuser_id  = user_deployments[0].kuser_id
-                driver = self.driver.admin_driver(deployment=site_deployment.deployment.name)
+        # sync site privileges at all site controllers
+        ctrl_site_deployments = SiteDeployment.objects.filter(site_deployment__site=site_priv.site)
+        for ctrl_site_deployment in ctrl_site_deployments:
+            controller_users = ControllerUser.objects.filter(controller=ctrl_site_deployment.controller,
+                                                              user=site_priv.user)
+            if controller_users:
+                kuser_id  = controller_users[0].kuser_id
+                driver = self.driver.admin_driver(controller=ctrl_site_deployment.controller)
                 driver.add_user_role(kuser_id,
-                                     site_deployment.tenant_id,
+                                     ctrl_site_deployment.controller.tenant_id,
                                      site_priv.role.role)