from core.models.site import SitePrivilege
from core.models import User
from core.models import Role
-from core.models import Deployment
+from core.models import Deployment,DeploymentLinkManager,DeploymentLinkDeletionManager
from core.models import ServiceClass
from core.models.serviceclass import get_default_serviceclass
from core.models import Tag
def save(self, *args, **kwds):
site = Site.objects.get(id=self.site.id)
- if not self.name.startswith(site.login_base):
+ # allow preexisting slices to keep their original name for now
+ if not self.id and not self.name.startswith(site.login_base):
raise ValidationError('slice name must begin with %s' % site.login_base)
if self.serviceClass is None:
qs = Slice.objects.filter(id__in=slice_ids)
return qs
+ def delete(self, *args, **kwds):
+ # delete networks associated with this slice
+ 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'))
def __unicode__(self): return u'%s' % (self.role)
class SlicePrivilege(PlCoreBase):
- user = models.ForeignKey('User', related_name='slice_privileges')
- slice = models.ForeignKey('Slice', related_name='slice_privileges')
- role = models.ForeignKey('SliceRole')
+ user = models.ForeignKey('User', related_name='sliceprivileges')
+ slice = models.ForeignKey('Slice', related_name='sliceprivileges')
+ role = models.ForeignKey('SliceRole',related_name='sliceprivileges')
def __unicode__(self): return u'%s %s %s' % (self.slice, self.user, self.role)
return qs
class SliceDeployments(PlCoreBase):
- slice = models.ForeignKey(Slice)
- deployment = models.ForeignKey(Deployment)
+ objects = DeploymentLinkManager()
+ deleted_objects = DeploymentLinkDeletionManager()
+
+ slice = models.ForeignKey(Slice, related_name='slicedeployments')
+ deployment = models.ForeignKey(Deployment, related_name='slicedeployments')
tenant_id = models.CharField(null=True, blank=True, max_length=200, help_text="Keystone tenant id")
network_id = models.CharField(null=True, blank=True, max_length=256, help_text="Quantum network")
router_id = models.CharField(null=True, blank=True, max_length=256, help_text="Quantum router id")