X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fopenstack_observer%2Fsteps%2Fsync_controller_sites.py;h=2dc13daa0acfeede0dc492b9a13fc250fd484419;hb=267606314830fbc5deb9e28dc0d47e8cbf8d68b1;hp=7e76cc4182598bc79b1a16f3916ad7de49521ba7;hpb=67626f8405423db3fc2ff69c1d08776a5d92a082;p=plstackapi.git diff --git a/planetstack/openstack_observer/steps/sync_controller_sites.py b/planetstack/openstack_observer/steps/sync_controller_sites.py index 7e76cc4..2dc13da 100644 --- a/planetstack/openstack_observer/steps/sync_controller_sites.py +++ b/planetstack/openstack_observer/steps/sync_controller_sites.py @@ -2,36 +2,58 @@ import os import base64 from django.db.models import F, Q from planetstack.config import Config -from observer.openstacksyncstep import OpenStackSyncStep +from openstack_observer.openstacksyncstep import OpenStackSyncStep from core.models.site import * from observer.ansible import * class SyncControllerSites(OpenStackSyncStep): requested_interval=0 - provides=[Controller, Site] + provides=[Site] - def sync_record(self, controller): + def fetch_pending(self, deleted=False): + pending = super(OpenStackSyncStep, self).fetch_pending(deleted) + return pending.filter(controller__isnull=False) + + def sync_record(self, controller_site): template = os_template_env.get_template('sync_controller_sites.yaml') - tenant_fields = {'endpoint':controller.auth_url, - 'admin_user': controller.admin_user, - 'admin_password': controller.admin_password, + tenant_fields = {'endpoint':controller_site.controller.auth_url, + 'admin_user': controller_site.controller.admin_user, + 'admin_password': controller_site.controller.admin_password, + 'admin_tenant': controller_site.controller.admin_tenant, + 'ansible_tag': '%s@%s'%(controller_site.site.login_base,controller_site.controller.name), # name of ansible playbook + 'tenant': controller_site.site.login_base, + 'tenant_description': controller_site.site.name} + + rendered = template.render(tenant_fields) + res = run_template('sync_controller_sites.yaml', tenant_fields, path='controller_sites', expected_num=1) + + controller_site.tenant_id = res[0]['id'] + controller_site.backend_status = '1 - OK' + controller_site.save() + + def delete_record(self, controller_site): + if controller_site.tenant_id: + driver = self.driver.admin_driver(controller=controller_site.controller) + driver.delete_tenant(controller_site.tenant_id) + + """ + Ansible does not support tenant deletion yet + + import pdb + pdb.set_trace() + template = os_template_env.get_template('delete_controller_sites.yaml') + tenant_fields = {'endpoint':controller_site.controller.auth_url, + 'admin_user': controller_site.controller.admin_user, + 'admin_password': controller_site.controller.admin_password, 'admin_tenant': 'admin', - 'tenant': controller.site_deployment.site.login_base, - 'tenant_description': controller.site_deployment.site.name} + 'ansible_tag': 'controller_sites/%s@%s'%(controller_site.controller_site.site.login_base,controller_site.controller_site.deployment.name), # name of ansible playbook + 'tenant': controller_site.controller_site.site.login_base, + 'delete': True} rendered = template.render(tenant_fields) res = run_template('sync_controller_sites.yaml', tenant_fields) - if (len(res)==1): - controller.tenant_id = res[0]['id'] - controller.save() - elif (len(res)): + if (len(res)!=1): raise Exception('Could not assign roles for user %s'%tenant_fields['tenant']) - else: - raise Exception('Could not create or update user %s'%tenant_fields['tenant']) - - def delete_record(self, controller): - if controller.tenant_id: - driver = self.driver.admin_driver(controller=controller) - driver.delete_tenant(controller.tenant_id) + """