update user account across deployments when user record is updated
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Wed, 16 Apr 2014 23:53:21 +0000 (19:53 -0400)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Wed, 16 Apr 2014 23:53:21 +0000 (19:53 -0400)
planetstack/observer/steps/sync_user_deployments.py
planetstack/observer/steps/sync_users.py

index cbbcb17..7110a0b 100644 (file)
@@ -29,7 +29,6 @@ class SyncUserDeployments(OpenStackSyncStep):
         for user_deployment in UserDeployments.objects.all():
             user_deploy_lookup[user_deployment.user].append(user_deployment.deployment)
        
-        user_deployments = []
         all_deployments = Deployment.objects.filter() 
         for user in User.objects.all():
             if user.is_admin:
@@ -45,13 +44,14 @@ class SyncUserDeployments(OpenStackSyncStep):
                   expected_deployment not in user_deploy_lookup[user]: 
                     # add new record
                     ud = UserDeployments(user=user, deployment=expected_deployment)
-                    user_deployments.append(ud)
+                    ud.save()
+                    #user_deployments.append(ud)
                 #else:
                 #    # update existing record
                 #    ud = UserDeployments.objects.get(user=user, deployment=expected_deployment)
                 #    user_deployments.append(ud)
 
-        return user_deployments
+        return UserDeployments.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None)) 
 
     def sync_record(self, user_deployment):
         logger.info("sync'ing user %s at deployment %s" % (user_deployment.user, user_deployment.deployment.name))
index 2550104..71f9c0f 100644 (file)
@@ -4,7 +4,7 @@ import hashlib
 from django.db.models import F, Q
 from planetstack.config import Config
 from observer.openstacksyncstep import OpenStackSyncStep
-from core.models.user import User
+from core.models.user import User, UserDeployments
 
 class SyncUsers(OpenStackSyncStep):
     provides=[User]
@@ -14,5 +14,7 @@ class SyncUsers(OpenStackSyncStep):
         return User.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
 
     def sync_record(self, user):
-        #user.save()
-        pass 
+        for user_deployment in UserDeployments.objects.filter(user=user):
+            # bump the 'updated' field so user account are updated across 
+            # deployments.
+            user_deployment.save()