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'])]
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)
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):
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()