This tree was mixed up, with an old version of the EC2 Observer. This
[plstackapi.git] / planetstack / observer / steps / sync_roles.py
1 import os
2 import base64
3 from django.db.models import F, Q
4 from planetstack.config import Config
5 from observer.openstacksyncstep import OpenStackSyncStep
6 from core.models.role import Role
7 from core.models.site import SiteRole, Deployment, DeploymentRole
8 from core.models.slice import SliceRole
9
10 class SyncRoles(OpenStackSyncStep):
11     provides=[Role]
12     requested_interval=0
13
14     def fetch_pending(self):
15         site_roles = SiteRole.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
16         slice_roles = SliceRole.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
17         deployment_roles = DeploymentRole.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
18
19         roles = []
20         for site_role in site_roles:
21             roles.append(site_role)
22         for slice_role in slice_roles:
23             roles.append(slice_role)
24         for deployment_role in deployment_roles:
25             roles.append(deployment_role)
26
27         return roles
28
29
30     def sync_record(self, role):
31         if not role.enacted:
32             deployments = Deployment.objects.all()
33             for deployment in deployments:
34                 driver = self.driver.admin_driver(deployment=deployment.name)
35                 driver.create_role(role.role)
36             role.save()
37