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, Controller, ControllerRole
8 from core.models.slice import SliceRole
10 class SyncRoles(OpenStackSyncStep):
14 def fetch_pending(self, deleted):
15 # Deleting roles is not supported yet
19 site_roles = SiteRole.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
20 slice_roles = SliceRole.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
21 controller_roles = ControllerRole.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
24 for site_role in site_roles:
25 roles.append(site_role)
26 for slice_role in slice_roles:
27 roles.append(slice_role)
28 for controller_role in controller_roles:
29 roles.append(controller_role)
34 def sync_record(self, role):
36 controllers = Controller.objects.all()
37 for controller in controllers:
38 driver = self.driver.admin_driver(controller=controller.name)
39 driver.create_role(role.role)