From bd2f11df48ba0ea700e97eed4b6feac20a0e8761 Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Sat, 3 Jan 2015 17:26:06 -0500 Subject: [PATCH] removing ControllerSiteDeployment object. Move tenant_id field to SiteDeployments model --- planetstack/core/migrations/0001_initial.py | 18 +------- planetstack/core/models/site.py | 11 +---- .../model_policies/model_policy_Site.py | 26 ----------- .../steps/sync_controller_site_deployments.py | 46 +++++++++---------- 4 files changed, 25 insertions(+), 76 deletions(-) delete mode 100644 planetstack/model_policies/model_policy_Site.py diff --git a/planetstack/core/migrations/0001_initial.py b/planetstack/core/migrations/0001_initial.py index de0de8a..8e1ec76 100644 --- a/planetstack/core/migrations/0001_initial.py +++ b/planetstack/core/migrations/0001_initial.py @@ -210,23 +210,6 @@ class Migration(migrations.Migration): }, bases=(models.Model,), ), - migrations.CreateModel( - name='ControllerSiteDeployments', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('created', models.DateTimeField(default=django.utils.timezone.now, auto_now_add=True)), - ('updated', models.DateTimeField(default=django.utils.timezone.now, auto_now=True)), - ('enacted', models.DateTimeField(default=None, null=True, blank=True)), - ('backend_status', models.CharField(default=b'Provisioning in progress', max_length=140)), - ('deleted', models.BooleanField(default=False)), - ('tenant_id', models.CharField(help_text=b'Keystone tenant id', max_length=200, null=True, blank=True)), - ('controller', models.ForeignKey(related_name=b'controllersitedeployments', to='core.Controller')), - ], - options={ - 'abstract': False, - }, - bases=(models.Model,), - ), migrations.CreateModel( name='ControllerSlices', fields=[ @@ -829,6 +812,7 @@ class Migration(migrations.Migration): ('enacted', models.DateTimeField(default=None, null=True, blank=True)), ('backend_status', models.CharField(default=b'Provisioning in progress', max_length=140)), ('deleted', models.BooleanField(default=False)), + ('tenant_id', models.CharField(help_text=b'Keystone tenant id', max_length=200, null=True, blank=True)), ('availability_zone', models.CharField(help_text=b'OpenStack availability zone', max_length=200, null=True, blank=True)), ('controller', models.ForeignKey(related_name=b'sitedeployments', blank=True, to='core.Controller', null=True)), ('deployment', models.ForeignKey(related_name=b'sitedeployments', to='core.Deployment')), diff --git a/planetstack/core/models/site.py b/planetstack/core/models/site.py index c7516d8..c61f5eb 100644 --- a/planetstack/core/models/site.py +++ b/planetstack/core/models/site.py @@ -316,15 +316,6 @@ class SiteDeployments(PlCoreBase): deployment = models.ForeignKey(Deployment,related_name='sitedeployments') controller = models.ForeignKey(Controller, null=True, blank=True, related_name='sitedeployments') availability_zone = models.CharField(max_length=200, null=True, blank=True, help_text="OpenStack availability zone") - - def __unicode__(self): return u'%s %s' % (self.deployment, self.site) - -class ControllerSiteDeployments(PlCoreBase): - objects = ControllerLinkManager() - deleted_objects = ControllerLinkDeletionManager() - - controller = models.ForeignKey(Controller, related_name='controllersitedeployments') - site_deployment = models.ForeignKey(SiteDeployments, related_name='controllersitedeployments') tenant_id = models.CharField(null=True, blank=True, max_length=200, help_text="Keystone tenant id") - def __unicode__(self): return u'%s %s' % (self.controller, self.site_deployment) + def __unicode__(self): return u'%s %s' % (self.deployment, self.site) diff --git a/planetstack/model_policies/model_policy_Site.py b/planetstack/model_policies/model_policy_Site.py deleted file mode 100644 index 5b713e1..0000000 --- a/planetstack/model_policies/model_policy_Site.py +++ /dev/null @@ -1,26 +0,0 @@ -from core.models import * - -def handle(site): - """ - ensure ControllerSiteDeployment object exists for each of the site's SiteDeployment objects - """ - from core.models import SiteDeployments, Controller, ControllerSiteDeployments - from collections import defaultdict - - # get current controller site deployments - ctrl_site_deployments = ControllerSiteDeployments.objects.filter(site_deployment__site = site) - ctrl_site_deployments_dict = {} - for ctrl_site_depl in controller_site_deployments: - ctrl_site_deployments_dict[ctrl_site_depl.site_deployment] = ctrl_cite_depl - - # get current site deployments - site_deployments = SiteDeployments.objects.filter(site=site) - - # for each site deployment, if there is no controller site deployment create one - for site_deployment in site_deployments: - if site_deployment not in ctrl_site_deployments_dict: - ctrl_site_deployment = ControllerSiteDeployment( - site_deployment=site_deployment, - controller=site_deployment.controller, - ) - ctrl_site_deployment.save() diff --git a/planetstack/openstack_observer/steps/sync_controller_site_deployments.py b/planetstack/openstack_observer/steps/sync_controller_site_deployments.py index d0e4a7f..a923608 100644 --- a/planetstack/openstack_observer/steps/sync_controller_site_deployments.py +++ b/planetstack/openstack_observer/steps/sync_controller_site_deployments.py @@ -8,51 +8,51 @@ from observer.ansible import * class SyncControllerSiteDeployments(OpenStackSyncStep): requested_interval=0 - provides=[ControllerSiteDeployments, SiteDeployments] + provides=[SiteDeployments] - def sync_record(self, controller_site_deployment): + def sync_record(self, site_deployment): template = os_template_env.get_template('sync_controller_site_deployments.yaml') - tenant_fields = {'endpoint':controller_site_deployment.controller.auth_url, - 'admin_user': controller_site_deployment.controller.admin_user, - 'admin_password': controller_site_deployment.controller.admin_password, - 'admin_tenant': controller_site_deployment.controller.admin_tenant, - 'ansible_tag': '%s@%s'%(controller_site_deployment.site_deployment.site.login_base,controller_site_deployment.site_deployment.deployment.name), # name of ansible playbook - 'tenant': controller_site_deployment.site_deployment.site.login_base, - 'tenant_description': controller_site_deployment.site_deployment.site.name} + tenant_fields = {'endpoint':site_deployment.controller.auth_url, + 'admin_user': site_deployment.controller.admin_user, + 'admin_password': site_deployment.controller.admin_password, + 'admin_tenant': site_deployment.controller.admin_tenant, + 'ansible_tag': '%s@%s'%(site_deployment.site.login_base,site_deployment.site_deployment.deployment.name), # name of ansible playbook + 'tenant': site_deployment.site.login_base, + 'tenant_description': site_deployment.site.name} rendered = template.render(tenant_fields) - res = run_template('sync_controller_site_deployments.yaml', tenant_fields, path='site_deployments') + res = run_template('sync_controller_site_deployments.yaml', tenant_fields, path='controller_site_deployments') if (len(res)==1): - controller_site_deployment.tenant_id = res[0]['id'] - controller_site_deployment.save() + site_deployment.tenant_id = res[0]['id'] + site_deployment.save() elif (len(res)): 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_site_deployment): - if controller_site_deployment.tenant_id: - driver = self.driver.admin_driver(controller=controller_site_deployment.controller) - driver.delete_tenant(controller_site_deployment.tenant_id) + def delete_record(self, site_deployment): + if site_deployment.tenant_id: + driver = self.driver.admin_driver(controller=site_deployment.controller) + driver.delete_tenant(site_deployment.tenant_id) """ Ansible does not support tenant deletion yet import pdb pdb.set_trace() - template = os_template_env.get_template('delete_controller_site_deployments.yaml') - tenant_fields = {'endpoint':controller_site_deployment.controller.auth_url, - 'admin_user': controller_site_deployment.controller.admin_user, - 'admin_password': controller_site_deployment.controller.admin_password, + template = os_template_env.get_template('delete_site_deployments.yaml') + tenant_fields = {'endpoint':site_deployment.controller.auth_url, + 'admin_user': site_deployment.controller.admin_user, + 'admin_password': site_deployment.controller.admin_password, 'admin_tenant': 'admin', - 'ansible_tag': 'site_deployments/%s@%s'%(controller_site_deployment.site_deployment.site.login_base,controller_site_deployment.site_deployment.deployment.name), # name of ansible playbook - 'tenant': controller_site_deployment.site_deployment.site.login_base, + 'ansible_tag': 'site_deployments/%s@%s'%(site_deployment.site_deployment.site.login_base,site_deployment.site_deployment.deployment.name), # name of ansible playbook + 'tenant': site_deployment.site_deployment.site.login_base, 'delete': True} rendered = template.render(tenant_fields) - res = run_template('sync_controller_site_deployments.yaml', tenant_fields) + res = run_template('sync_site_deployments.yaml', tenant_fields) if (len(res)!=1): raise Exception('Could not assign roles for user %s'%tenant_fields['tenant']) -- 2.43.0