blob: 33e083620c9e47708c148579fef995383935f3e6 [file] [log] [blame]
from core.models import Slice, SliceDeployments, User
from observer.deleter import Deleter
from openstack.driver import OpenStackDriver
class SliceDeploymentDeleter(Deleter):
model='SliceDeployments'
def call(self, pk):
slice_deployment = SliceDeployments.objects.get(pk=pk)
user = User.objects.get(id=slice_deployment.slice.creator.id)
driver = OpenStackDriver().admin_driver(deployment=slice_deployment.deployment.name)
client_driver = driver.client_driver(caller=user,
tenant=slice_deployment.slice.name,
deployment=slice_deployment.deployment.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)
# delete external route
#subnet = None
#subnets = client_driver.shell.quantum.list_subnets()['subnets']
#for snet in subnets:
# if snet['id'] == slice_deployment.subnet_id:
# subnet = snet
#if subnet:
# driver.delete_external_route(subnet)
slice_deployment.delete()