Merge branch 'master' of ssh://git.planet-lab.org/git/plstackapi
authorScott Baker <smbaker@gmail.com>
Thu, 13 Nov 2014 01:03:08 +0000 (17:03 -0800)
committerScott Baker <smbaker@gmail.com>
Thu, 13 Nov 2014 01:03:08 +0000 (17:03 -0800)
opencloud.spec
planetstack/core/models/plcorebase.py
planetstack/core/models/slice.py
planetstack/dependency_walker.py
planetstack/model_policies/model_policy_Slice.py
planetstack/openstack_observer/steps/sync_networks.py

index dc2c91a..6d79ed5 100644 (file)
@@ -1,7 +1,7 @@
 Summary: OpenCloud core services
 Name: opencloud
-Version: 1.0.27
-Release: 3
+Version: 1.0.28
+Release: 2
 License: GPL+
 Group: Development/Tools
 Source0: %{_tmppath}/%{name}-%{version}.tar.gz
index e483a79..612e925 100644 (file)
@@ -7,6 +7,7 @@ from django.forms.models import model_to_dict
 from django.utils import timezone
 from django.core.exceptions import PermissionDenied
 import model_policy
+from model_autodeletion import ephemeral_models
 
 try:
     # This is a no-op if observer_disabled is set to 1 in the config file
@@ -201,6 +202,10 @@ class PlCoreBase(models.Model): # , DiffModelMixIn):
         # filtering of visible objects by user.
         return cls.objects.all()
 
+    @classmethod
+    def is_ephemeral(cls):
+       return cls in ephemeral_models
+
 
 
 
index d438bdf..24d02aa 100644 (file)
@@ -92,7 +92,15 @@ class Slice(PlCoreBase):
         from core.models.network import Network
         nets = Network.objects.filter(slices=self)
         nets.delete() 
+        # delete slice deployments
+        slice_deployments = SliceDeployments.objects.filter(slice=self)
+        slice_deployments.delete()
+        # delete slice privilege
+        slice_privileges = SlicePrivilege.objects.filter(slice=self)
+        slice_privileges.delete() 
+        # continue with normal delete
         super(SliceAdmin, self).delete(*args, **kwds) 
+         
 
 class SliceRole(PlCoreBase):
     ROLE_CHOICES = (('admin','Admin'),('default','Default'))
index ca1959e..93e1847 100755 (executable)
@@ -79,6 +79,7 @@ def __walk_deps(fn, object, deps):
 
                        for o in peer_objects:
                                fn(o, object)
+                               # Uncomment the following line to enable recursion
                                # walk_inv_deps(fn, o)
 
 def p(x):
index 7523e3e..7b436b4 100644 (file)
@@ -35,13 +35,13 @@ def handle(slice):
                        private_net = network
        if not public_nets:
                 # ensure there is at least one public network, and default it to dedicated
-               dedicated_public_net = Network(
-                   name = slice.name+'-public',
-                   template = NetworkTemplate.objects.get(name='Public dedicated IPv4'),
+               nat_net = Network(
+                   name = slice.name+'-nat',
+                   template = NetworkTemplate.objects.get(name='Public shared IPv4'),
                    owner = slice
                    )
-               dedicated_public_net.save()
-                public_nets.append(dedicated_public_net)
+               nat_net.save()
+                public_nets.append(nat_net)
 
        if not private_net:
                private_net = Network(
index 5174fe6..99f2c01 100644 (file)
@@ -21,6 +21,6 @@ class SyncNetworks(OpenStackSyncStep):
         for network_deployment in NetworkDeployments.objects.filter(network=network):
             try:
                 network_deployment_deleter(network_deployment)    
-            except Exeption,e:
+            except Exception,e:
                 logger.log_exc("Failed to delete network deployment %s" % network_deployment)
                 raise e