from core.models.site import SitePrivilege
from core.models import User
from core.models import Role
-from core.models import Deployment,DeploymentLinkManager,DeploymentLinkDeletionManager
+from core.models import Controller,ControllerLinkManager,ControllerLinkDeletionManager
from core.models import ServiceClass
from core.models.serviceclass import get_default_serviceclass
from core.models import Tag
from django.contrib.contenttypes import generic
from core.models import Service
-from core.models import Deployment
+from core.models import Controller
+from core.models import Flavor, Image
from django.core.exceptions import ValidationError
# Create your models here.
slice_url = models.URLField(blank=True, max_length=512)
site = models.ForeignKey(Site, related_name='slices', help_text="The Site this Slice belongs to")
max_slivers = models.IntegerField(default=10)
- imagePreference = models.CharField(default="Ubuntu 12.04 LTS", null=True, blank=True, max_length=256)
service = models.ForeignKey(Service, related_name='service', null=True, blank=True)
network = models.CharField(default="Private Only",null=True, blank=True, max_length=256)
- mountDataSets = models.CharField(default="GenBank",null=True, blank=True, max_length=256)
tags = generic.GenericRelation(Tag)
-
serviceClass = models.ForeignKey(ServiceClass, related_name = "slices", null=True, default=get_default_serviceclass)
creator = models.ForeignKey(User, related_name='slices', blank=True, null=True)
+ # for tenant view
+ default_flavor = models.ForeignKey(Flavor, related_name = "slices", null=True, blank=True)
+ default_image = models.ForeignKey(Image, related_name = "slices", null=True, blank=True);
+ mount_data_sets = models.CharField(default="GenBank",null=True, blank=True, max_length=256)
+
def __unicode__(self): return u'%s' % (self.name)
@property
from core.models.network import Network
nets = Network.objects.filter(slices=self)
nets.delete()
- super(SliceAdmin, self).delete(*args, **kwds)
+ # delete slice controllers
+ slice_controllers = ControllerSlice.objects.filter(slice=self)
+ slice_controllers.delete()
+ # delete slice privilege
+ slice_privileges = SlicePrivilege.objects.filter(slice=self)
+ slice_privileges.delete()
+ # continue with normal delete
+ super(Slice, self).delete(*args, **kwds)
+
class SliceRole(PlCoreBase):
ROLE_CHOICES = (('admin','Admin'),('default','Default'))
qs = SlicePrivilege.objects.filter(id__in=sp_ids)
return qs
-class SliceDeployment(PlCoreBase):
- objects = DeploymentLinkManager()
- deleted_objects = DeploymentLinkDeletionManager()
+class ControllerSlice(PlCoreBase):
+ objects = ControllerLinkManager()
+ deleted_objects = ControllerLinkDeletionManager()
- slice = models.ForeignKey(Slice, related_name='slicedeployments')
- deployment = models.ForeignKey(Deployment, related_name='slicedeployments')
+ controller = models.ForeignKey(Controller, related_name='controllerslices')
+ slice = models.ForeignKey(Slice, related_name='controllerslices')
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")
- subnet_id = models.CharField(null=True, blank=True, max_length=256, help_text="Quantum subnet id")
- def __unicode__(self): return u'%s %s' % (self.slice, self.deployment)
+ def __unicode__(self): return u'%s %s' % (self.slice, self.controller)
@staticmethod
def select_by_user(user):
if user.is_admin:
- qs = SliceDeployment.objects.all()
+ qs = ControllerSlice.objects.all()
else:
slices = Slice.select_by_user(user)
- qs = SliceDeployment.objects.filter(slice__in=slices)
+ qs = ControllerSlice.objects.filter(slice__in=slices)
return qs
+
+ def get_cpu_stats(self):
+ filter = 'project_id=%s'%self.tenant_id
+ return monitor.get_meter('cpu',filter,None)
+
+ def get_bw_stats(self):
+ filter = 'project_id=%s'%self.tenant_id
+ return monitor.get_meter('network.outgoing.bytes',filter,None)
+
+ def get_node_stats(self):
+ return len(self.slice.slivers)