From 07f49762faa189aa1442fbc03667bf609d60c2b2 Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Mon, 7 Apr 2014 19:47:28 -0400 Subject: [PATCH] Inspect all user deployments. No need to act on ever user on every run. --- .../observer/steps/sync_user_deployments.py | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/planetstack/observer/steps/sync_user_deployments.py b/planetstack/observer/steps/sync_user_deployments.py index 5c04003..ceea4a9 100644 --- a/planetstack/observer/steps/sync_user_deployments.py +++ b/planetstack/observer/steps/sync_user_deployments.py @@ -24,9 +24,13 @@ class SyncUserDeployments(OpenStackSyncStep): site_deploy_lookup = defaultdict(list) for site_deployment in site_deployments: site_deploy_lookup[site_deployment.site].append(site_deployment.deployment) - - user_deployments = [] - for user in User.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None)): + + user_deploy_lookup = defaultdict(list) + for user_deployment in UserDeployments.objects.all(): + user_deploy_lookup[user_deployment.user].append(user_deployment.deployment) + + user_deployments = [] + for user in User.objects.filter(): if user.is_admin: # admins should have an account at all deployments expected_deployments = deployments @@ -34,8 +38,15 @@ class SyncUserDeployments(OpenStackSyncStep): # normal users should have an account at their site's deployments expected_deployments = site_deploy_lookup[user.site] for expected_deployment in expected_deployments: - ud = UserDeployments(user=user, deployment=expected_deployment) - user_deployments.append(ud) + if not user in user_deploy_lookup or \ + expected_deployment not in user_deploy_lookup[user]: + # add new record + ud = UserDeployments(user=user, deployment=expected_deployment) + user_deployments.append(ud) + #else: + # # update existing record + # ud = UserDeployments.objects.get(user=user, deployment=expected_deployment) + # user_deployments.append(ud) return user_deployments @@ -82,3 +93,5 @@ class SyncUserDeployments(OpenStackSyncStep): # user_driver.create_keypair(**key_fields) user_deployment.save() + user = User.objects.get(id=user_deployment.user.id) + user.save() -- 2.43.0