updating deleters
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Wed, 2 Apr 2014 00:24:47 +0000 (20:24 -0400)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Wed, 2 Apr 2014 00:24:47 +0000 (20:24 -0400)
planetstack/observer/deleters/site_deleter.py
planetstack/observer/deleters/slice_deleter.py
planetstack/observer/deleters/sliver_deleter.py
planetstack/observer/deleters/user_deleter.py

index a558eaf..468dfe8 100644 (file)
@@ -1,4 +1,4 @@
-from core.models import Site
+from core.models import Site, SiteDeployments
 from observer.deleter import Deleter
 
 class SiteDeleter(Deleter):
@@ -6,6 +6,10 @@ class SiteDeleter(Deleter):
     
     def call(self, pk):
         site = Site.objects.get(pk=pk)
-        if site.tenant_id:
-            self.driver.delete_tenant(site.tenant_id)
+        site_deployments = SiteDeployments.objects.filter(site=site)
+        for site_deployment in site_deployments:
+            if site_deployment.tenant_id:
+                driver = self.driver.admin_driver(deployment=site_deployment.deployment.name 
+                driver.delete_tenant(site_deployment.tenant_id)
+            site_deployment.delete()
         site.delete() 
index 6796d7a..d007a68 100644 (file)
@@ -1,4 +1,4 @@
-from core.models import Slice
+from core.models import Slice, SliceDeployments, User
 from observer.deleter import Deleter
 
 class SliceDeleter(Deleter):
@@ -6,17 +6,26 @@ class SliceDeleter(Deleter):
 
        def call(self, pk):
                slice = Slice.objects.get(pk=pk)
-        self.driver.delete_router_interface(slice.router_id, slice.subnet_id)
-        self.driver.delete_subnet(slice.subnet_id)
-        self.driver.delete_router(slice.router_id)
-        self.driver.delete_network(slice.network_id)
-        self.driver.delete_tenant(slice.tenant_id)
-        # delete external route
-        subnet = None
-        subnets = self.driver.shell.quantum.list_subnets()['subnets']
-        for snet in subnets:
-            if snet['id'] == slice.subnet_id:
-                subnet = snet
-        if subnet:
-            self.driver.delete_external_route(subnet)
+        slice_deployments = SliceDeployments.objects.filter(slice=slice)
+        for slice_deployment in slice_deployments:
+            user = User.get(user=slice.creator)
+            driver = self.driver.admin_driver(deployment=slice_deployment.deployment.name)
+            client_driver = self.driver.client_driver(caller=user,
+                                                      tenant=slice.name,
+                                                      deployment=slice_deployment.deployment.name) 
+
+            client_driver.delete_router_interface(slice.router_id, slice.subnet_id)
+            client_driver.delete_subnet(slice.subnet_id)
+            client_driver.delete_router(slice.router_id)
+            client_driver.delete_network(slice.network_id)
+            driver.delete_tenant(slice.tenant_id)
+            # delete external route
+            subnet = None
+            subnets = client_driver.shell.quantum.list_subnets()['subnets']
+            for snet in subnets:
+                if snet['id'] == slice.subnet_id:
+                    subnet = snet
+            if subnet:
+                driver.delete_external_route(subnet)
+            slice_deployment.delete()
         slice.delete()
index d76b533..097f0f7 100644 (file)
@@ -1,4 +1,4 @@
-from core.models import Sliver
+from core.models import Sliver, SliceDeployments
 from observer.deleter import Deleter
 
 class SliverDeleter(Deleter):
@@ -7,5 +7,8 @@ class SliverDeleter(Deleter):
     def call(self, pk):
         sliver = Sliver.objects.get(pk=pk)
         if sliver.instance_id:
-            self.driver.destroy_instance(sliver.instance_id)
+            driver = self.driver.client_driver(caller=sliver.creator, 
+                                               tenant=sliver.slice.name,
+                                               deployment=sliver.deploymentNetwork.name)
+            driver.destroy_instance(sliver.instance_id)
         sliver.delete()
index f250993..b82ea4a 100644 (file)
@@ -1,4 +1,4 @@
-from core.models import User
+from core.models import User, UserDeployments
 from observer.deleter import Deleter
 
 class UserDeleter(Deleter):
@@ -6,6 +6,10 @@ class UserDeleter(Deleter):
 
     def call(self, pk):
         user = User.objects.get(pk=pk)
-        if user.kuser_id:
-            self.driver.delete_user(user.kuser_id)
+        user_deployments = UserDeployments.objects.filter(user=user)
+        for user_deployment in user_deployments:
+            if user_deployment.user.kuser_id:
+                driver = self.driver.admin_driver(deployment=user_deployment.deployment.name)
+                driver.delete_user(user_deployment.user.kuser_id)
+            user_deployment.delete()
         user.delete()