From: Tony Mack Date: Mon, 1 Dec 2014 01:50:46 +0000 (-0500) Subject: Controller replaces Deployment X-Git-Url: http://git.onelab.eu/?p=plstackapi.git;a=commitdiff_plain;h=fb7c3d8556226bb2d253e5a5f2b416ef28faa867 Controller replaces Deployment --- diff --git a/planetstack/openstack_observer/steps/sync_controller_slices.py b/planetstack/openstack_observer/steps/sync_controller_slices.py index 4c358d7..e51ba7e 100644 --- a/planetstack/openstack_observer/steps/sync_controller_slices.py +++ b/planetstack/openstack_observer/steps/sync_controller_slices.py @@ -5,28 +5,28 @@ from netaddr import IPAddress, IPNetwork from django.db.models import F, Q from planetstack.config import Config from observer.openstacksyncstep import OpenStackSyncStep -from core.models.site import Deployment, SiteDeployments -from core.models.slice import Slice, SliceDeployments -from core.models.userdeployments import UserDeployments +from core.models.site import Controller, ControllerSites +from core.models.slice import Slice, ControllerSlices +from core.models.usercontrollers import ControllerUsers from util.logger import Logger, logging from observer.ansible import * logger = Logger(level=logging.INFO) -class SyncSliceDeployments(OpenStackSyncStep): - provides=[SliceDeployments] +class SyncControllerSlices(OpenStackSyncStep): + provides=[ControllerSlices] requested_interval=0 def fetch_pending(self, deleted): if (deleted): - return SliceDeployments.deleted_objects.all() + return ControllerSlices.deleted_objects.all() else: - return SliceDeployments.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None)) + return ControllerSlices.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None)) - def get_next_subnet(self, deployment=None): + def get_next_subnet(self, controller=None): # limit ourself to 10.0.x.x for now valid_subnet = lambda net: net.startswith('10.0') - driver = self.driver.admin_driver(deployment=deployment) + driver = self.driver.admin_driver(controller=controller) subnets = driver.shell.quantum.list_subnets()['subnets'] ints = [int(IPNetwork(subnet['cidr']).ip) for subnet in subnets \ if valid_subnet(subnet['cidr'])] @@ -41,65 +41,65 @@ class SyncSliceDeployments(OpenStackSyncStep): return next_network - def sync_record(self, slice_deployment): - logger.info("sync'ing slice deployment %s" % slice_deployment) + def sync_record(self, controller_slice): + logger.info("sync'ing slice controller %s" % controller_slice) - if not slice_deployment.deployment.admin_user: - logger.info("deployment %r has no admin_user, skipping" % slice_deployment.deployment) + if not controller_slice.controller.admin_user: + logger.info("controller %r has no admin_user, skipping" % controller_slice.controller) return - deployment_users = UserDeployments.objects.filter(user=slice_deployment.slice.creator, - deployment=slice_deployment.deployment) - if not deployment_users: - logger.info("slice createor %s has not accout at deployment %s" % (slice_deployment.slice.creator, slice_deployment.deployment.name)) + controller_users = ControllerUsers.objects.filter(user=controller_slice.slice.creator, + controller=controller_slice.controller) + if not controller_users: + logger.info("slice createor %s has not accout at controller %s" % (controller_slice.slice.creator, controller_slice.controller.name)) roles = [] else: - deployment_user = deployment_users[0] + controller_user = controller_users[0] roles = ['admin'] - max_instances=int(slice_deployment.slice.max_slivers) - tenant_fields = {'endpoint':slice_deployment.deployment.auth_url, - 'admin_user': slice_deployment.deployment.admin_user, - 'admin_password': slice_deployment.deployment.admin_password, + max_instances=int(controller_slice.slice.max_slivers) + tenant_fields = {'endpoint':controller_slice.controller.auth_url, + 'admin_user': controller_slice.controller.admin_user, + 'admin_password': controller_slice.controller.admin_password, 'admin_tenant': 'admin', - 'tenant': slice_deployment.slice.name, - 'tenant_description': slice_deployment.slice.description, + 'tenant': controller_slice.slice.name, + 'tenant_description': controller_slice.slice.description, 'roles':roles, - 'name':deployment_user.user.email, + 'name':controller_user.user.email, 'max_instances':max_instances} - res = run_template('sync_slice_deployments.yaml', tenant_fields) + res = run_template('sync_controller_slices.yaml', tenant_fields) expected_num = len(roles)+1 if (len(res)!=expected_num): - raise Exception('Could not sync tenants for slice %s'%slice_deployment.slice.name) + raise Exception('Could not sync tenants for slice %s'%controller_slice.slice.name) else: tenant_id = res[0]['id'] - if (not slice_deployment.tenant_id): + if (not controller_slice.tenant_id): handle = os.popen('nova quota-update --instances %d %s'%(max_instances,tenant_id)) output = handle.read() result = handle.close() if (result): - logging.info('Could not update quota for %s'%slice_deployment.slice.name) - slice_deployment.tenant_id = tenant_id - slice_deployment.save() + logging.info('Could not update quota for %s'%controller_slice.slice.name) + controller_slice.tenant_id = tenant_id + controller_slice.save() - def delete_record(self, slice_deployment): - user = User.objects.get(id=slice_deployment.slice.creator.id) - driver = OpenStackDriver().admin_driver(deployment=slice_deployment.deployment.name) + def delete_record(self, controller_slice): + user = User.objects.get(id=controller_slice.slice.creator.id) + driver = OpenStackDriver().admin_driver(controller=controller_slice.controller.name) client_driver = driver.client_driver(caller=user, - tenant=slice_deployment.slice.name, - deployment=slice_deployment.deployment.name) + tenant=controller_slice.slice.name, + controller=controller_slice.controller.name) - if slice_deployment.router_id and slice_deployment.subnet_id: - client_driver.delete_router_interface(slice_deployment.router_id, slice_deployment.subnet_id) - if slice_deployment.subnet_id: - client_driver.delete_subnet(slice_deployment.subnet_id) - if slice_deployment.router_id: - client_driver.delete_router(slice_deployment.router_id) - if slice_deployment.network_id: - client_driver.delete_network(slice_deployment.network_id) - if slice_deployment.tenant_id: - driver.delete_tenant(slice_deployment.tenant_id) + if controller_slice.router_id and controller_slice.subnet_id: + client_driver.delete_router_interface(controller_slice.router_id, controller_slice.subnet_id) + if controller_slice.subnet_id: + client_driver.delete_subnet(controller_slice.subnet_id) + if controller_slice.router_id: + client_driver.delete_router(controller_slice.router_id) + if controller_slice.network_id: + client_driver.delete_network(controller_slice.network_id) + if controller_slice.tenant_id: + driver.delete_tenant(controller_slice.tenant_id) diff --git a/planetstack/openstack_observer/steps/sync_networks.py b/planetstack/openstack_observer/steps/sync_networks.py index 99f2c01..a4e9552 100644 --- a/planetstack/openstack_observer/steps/sync_networks.py +++ b/planetstack/openstack_observer/steps/sync_networks.py @@ -5,7 +5,7 @@ from planetstack.config import Config from observer.openstacksyncstep import OpenStackSyncStep from core.models.network import * from util.logger import Logger, logging -from observer.steps.sync_network_deployments import * +from observer.steps.sync_controller_networks import * logger = Logger(level=logging.INFO) @@ -17,10 +17,10 @@ class SyncNetworks(OpenStackSyncStep): network.save() def delete_record(self, network): - network_deployment_deleter = SyncNetworkDeployments().delete_record - for network_deployment in NetworkDeployments.objects.filter(network=network): + controller_networks_deleter = SyncControllerNetworks().delete_record + for controller_network in ControllerNetworks.objects.filter(network=network): try: - network_deployment_deleter(network_deployment) + controller_network_deleter(controller_network) except Exception,e: - logger.log_exc("Failed to delete network deployment %s" % network_deployment) + logger.log_exc("Failed to delete controller network %s" % controller_network) raise e diff --git a/planetstack/openstack_observer/steps/sync_roles.py b/planetstack/openstack_observer/steps/sync_roles.py index bb837db..155718a 100644 --- a/planetstack/openstack_observer/steps/sync_roles.py +++ b/planetstack/openstack_observer/steps/sync_roles.py @@ -4,7 +4,7 @@ from django.db.models import F, Q from planetstack.config import Config from observer.openstacksyncstep import OpenStackSyncStep from core.models.role import Role -from core.models.site import SiteRole, Deployment, DeploymentRole +from core.models.site import SiteRole, Controller, DeploymentRole from core.models.slice import SliceRole class SyncRoles(OpenStackSyncStep): @@ -18,24 +18,24 @@ class SyncRoles(OpenStackSyncStep): site_roles = SiteRole.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None)) slice_roles = SliceRole.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None)) - deployment_roles = DeploymentRole.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None)) + controller_roles = DeploymentRole.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None)) roles = [] for site_role in site_roles: roles.append(site_role) for slice_role in slice_roles: roles.append(slice_role) - for deployment_role in deployment_roles: - roles.append(deployment_role) + for controller_role in controller_roles: + roles.append(controller_role) return roles def sync_record(self, role): if not role.enacted: - deployments = Deployment.objects.all() - for deployment in deployments: - driver = self.driver.admin_driver(deployment=deployment.name) + controllers = Controller.objects.all() + for controller in controllers: + driver = self.driver.admin_driver(controller=controller.name) driver.create_role(role.role) role.save()