blob: ca85d571cf25fbec4bc37983b6fae345845151b2 [file] [log] [blame]
Scott Baker105b6b72014-05-12 10:40:25 -07001import os
2import base64
3from django.db.models import F, Q
4from planetstack.config import Config
5from observer.openstacksyncstep import OpenStackSyncStep
6from core.models.role import Role
7from core.models.site import SiteRole
8from core.models.slice import SliceRole
9from core.models.deployment import Deployment, DeploymentRole
10
11class SyncRoles(OpenStackSyncStep):
12 provides=[Role]
13 requested_interval=0
14
15 def fetch_pending(self):
16 site_roles = SiteRole.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
17 slice_roles = SliceRole.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
18 deployment_roles = DeploymentRole.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
19
20 roles = []
21 for site_role in site_roles:
22 roles.append(site_role)
23 for slice_role in slice_roles:
24 roles.append(slice_role)
25 for deployment_role in deployment_roles:
26 roles.append(deployment_role)
27
28 return roles
29
30
31 def sync_record(self, role):
32 if not role.enacted:
33 deployments = Deployment.objects.all()
34 for deployment in deployments:
35 driver = self.driver.admin_driver(deployment=deployment.name)
36 driver.create_role(role.role)
37 role.save()
38