X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fopenstack_observer%2Fsteps%2Fsync_site_deployments.py;h=1d51e4e3d0dae905e3814401e32911b6f3d8aad0;hb=5eeb0f02e280976cbebee71aeb455862cf30f6e8;hp=fa89d2c6cd716ce9bd4927d54f41766d99986bd1;hpb=a358f0fb280d3da6938575be3d9c5d4a4a7e3f7a;p=plstackapi.git diff --git a/planetstack/openstack_observer/steps/sync_site_deployments.py b/planetstack/openstack_observer/steps/sync_site_deployments.py index fa89d2c..1d51e4e 100644 --- a/planetstack/openstack_observer/steps/sync_site_deployments.py +++ b/planetstack/openstack_observer/steps/sync_site_deployments.py @@ -4,25 +4,34 @@ from django.db.models import F, Q from planetstack.config import Config from observer.openstacksyncstep import OpenStackSyncStep from core.models.site import * +from observer.ansible import * class SyncSiteDeployments(OpenStackSyncStep): requested_interval=0 - provides=[Site, SiteDeployments] - - def fetch_pending(self): - return SiteDeployments.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None)) + provides=[SiteDeployments, Site] def sync_record(self, site_deployment): - if not site_deployment.tenant_id: - driver = self.driver.admin_driver(deployment=site_deployment.deployment.name) - tenant = driver.create_tenant(tenant_name=site_deployment.site.login_base, - description=site_deployment.site.name, - enabled=site_deployment.site.enabled) - site_deployment.tenant_id = tenant.id - site_deployment.save() - elif site_deployment.site.id and site_deployment.tenant_id: - driver = self.driver.admin_driver(deployment=site_deployment.deployment.name) - driver.update_tenant(site_deployment.tenant_id, - description=site_deployment.site.name, - enabled=site_deployment.site.enabled) + + template = os_template_env.get_template('sync_site_deployments.yaml') + tenant_fields = {'endpoint':site_deployment.deployment.auth_url, + 'admin_user': site_deployment.deployment.admin_user, + 'admin_password': site_deployment.deployment.admin_password, + 'admin_tenant': 'admin', + 'tenant': site_deployment.site.login_base, + 'tenant_description': site_deployment.site.name} + + rendered = template.render(tenant_fields) + res = run_template('sync_site_deployments.yaml', tenant_fields) + + if (len(res)==1): + site_deployment.tenant_id = res[0]['id'] + site_deployment.save() + elif (len(res)): + raise Exception('Could not assign roles for user %s'%tenant_fields['name']) + else: + raise Exception('Could not create or update user %s'%tenant_fields['name']) + def delete_record(self, site_deployment): + if site_deployment.tenant_id: + driver = self.driver.admin_driver(deployment=site_deployment.deployment.name) + driver.delete_tenant(site_deployment.tenant_id)