blob: fbdc45454207230228ff4c34e893ef6c6b65c218 [file] [log] [blame]
Scott Bakerb63ea792016-08-11 10:24:48 -07001import os
2import base64
Scott Bakerb63ea792016-08-11 10:24:48 -07003from synchronizers.openstack.openstacksyncstep import OpenStackSyncStep
Scott Bakeraf599eb2017-03-21 12:43:26 -07004from synchronizers.new_base.syncstep import *
5from synchronizers.new_base.ansible_helper import *
Scott Bakerb63ea792016-08-11 10:24:48 -07006import json
Scott Bakeraf599eb2017-03-21 12:43:26 -07007from synchronizers.new_base.modelaccessor import *
Scott Bakerb63ea792016-08-11 10:24:48 -07008
9class SyncControllerSites(OpenStackSyncStep):
10 requested_interval=0
11 provides=[Site]
12 observes=ControllerSite
13 playbook = 'sync_controller_sites.yaml'
14
15 def fetch_pending(self, deleted=False):
Scott Bakeraf599eb2017-03-21 12:43:26 -070016 lobjs = super(SyncControllerSites, self).fetch_pending(deleted)
17
18 if not deleted:
19 # filter out objects with null controllers
20 lobjs = [x for x in lobjs if x.controller]
21
Scott Bakerb63ea792016-08-11 10:24:48 -070022 return lobjs
23
24 def map_sync_inputs(self, controller_site):
25 tenant_fields = {'endpoint':controller_site.controller.auth_url,
26 'endpoint_v3': controller_site.controller.auth_url_v3,
27 'domain': controller_site.controller.domain,
28 'admin_user': controller_site.controller.admin_user,
29 'admin_password': controller_site.controller.admin_password,
30 'admin_tenant': controller_site.controller.admin_tenant,
31 'ansible_tag': '%s@%s'%(controller_site.site.login_base,controller_site.controller.name), # name of ansible playbook
32 'tenant': controller_site.site.login_base,
33 'tenant_description': controller_site.site.name}
34 return tenant_fields
35
36 def map_sync_outputs(self, controller_site, res):
37 controller_site.tenant_id = res[0]['id']
38 controller_site.backend_status = '1 - OK'
39 controller_site.save()
40
41 def delete_record(self, controller_site):
42 controller_register = json.loads(controller_site.controller.backend_register)
43 if (controller_register.get('disabled',False)):
44 raise InnocuousException('Controller %s is disabled'%controller_site.controller.name)
45
46 if controller_site.tenant_id:
47 driver = self.driver.admin_driver(controller=controller_site.controller)
48 driver.delete_tenant(controller_site.tenant_id)
49
50 """
51 Ansible does not support tenant deletion yet
52
53 import pdb
54 pdb.set_trace()
55 template = os_template_env.get_template('delete_controller_sites.yaml')
56 tenant_fields = {'endpoint':controller_site.controller.auth_url,
57 'admin_user': controller_site.controller.admin_user,
58 'admin_password': controller_site.controller.admin_password,
59 'admin_tenant': 'admin',
60 'ansible_tag': 'controller_sites/%s@%s'%(controller_site.controller_site.site.login_base,controller_site.controller_site.deployment.name), # name of ansible playbook
61 'tenant': controller_site.controller_site.site.login_base,
62 'delete': True}
63
64 rendered = template.render(tenant_fields)
65 res = run_template('sync_controller_sites.yaml', tenant_fields)
66
67 if (len(res)!=1):
68 raise Exception('Could not assign roles for user %s'%tenant_fields['tenant'])
69 """