5b713e18dc4f81ac594a2b9cc859057aa30293a5
[plstackapi.git] / planetstack / model_policies / model_policy_Site.py
1 from core.models import *
2
3 def handle(site):
4     """ 
5     ensure ControllerSiteDeployment object exists for each of the site's SiteDeployment objects
6     """
7     from core.models import SiteDeployments, Controller, ControllerSiteDeployments 
8     from collections import defaultdict
9     
10     # get current controller site deployments   
11     ctrl_site_deployments = ControllerSiteDeployments.objects.filter(site_deployment__site = site)
12     ctrl_site_deployments_dict = {} 
13     for ctrl_site_depl in controller_site_deployments:
14         ctrl_site_deployments_dict[ctrl_site_depl.site_deployment] = ctrl_cite_depl
15
16     # get current site deployments
17     site_deployments = SiteDeployments.objects.filter(site=site)
18  
19     # for each site deployment, if there is no controller site deployment create one 
20     for site_deployment in site_deployments:
21         if site_deployment not in ctrl_site_deployments_dict:
22             ctrl_site_deployment = ControllerSiteDeployment(
23                 site_deployment=site_deployment,
24                 controller=site_deployment.controller,
25             )
26             ctrl_site_deployment.save()