from django.db import models
from core.models import PlCoreBase
from core.models import Site
from django.db import models
from core.models import PlCoreBase
from core.models import Site
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 Tag
from django.contrib.contenttypes import generic
from core.models import Service
from core.models import Deployment
name = models.CharField(unique=True, help_text="The Name of the Slice", max_length=80)
enabled = models.BooleanField(default=True, help_text="Status for this Slice")
name = models.CharField(unique=True, help_text="The Name of the Slice", max_length=80)
enabled = models.BooleanField(default=True, help_text="Status for this Slice")
description=models.TextField(blank=True,help_text="High level description of the slice and expected activities", max_length=1024)
slice_url = models.URLField(blank=True, max_length=512)
site = models.ForeignKey(Site, related_name='slices', help_text="The Site this Slice belongs to")
description=models.TextField(blank=True,help_text="High level description of the slice and expected activities", max_length=1024)
slice_url = models.URLField(blank=True, max_length=512)
site = models.ForeignKey(Site, related_name='slices', help_text="The Site this Slice belongs to")
- 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")
- imagePreference = models.CharField(default="abc",null=True, blank=True, max_length=256)
+ 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)
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)
- serviceClass = models.ForeignKey(ServiceClass, related_name = "slices", null=True, default=ServiceClass.get_default)
+ serviceClass = models.ForeignKey(ServiceClass, related_name = "slices", null=True, default=get_default_serviceclass)
creator = models.ForeignKey(User, related_name='slices', blank=True, null=True)
def __unicode__(self): return u'%s' % (self.name)
creator = models.ForeignKey(User, related_name='slices', blank=True, null=True)
def __unicode__(self): return u'%s' % (self.name)
+
+ site = Site.objects.get(id=self.site.id)
+ # 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:
# We allowed None=True for serviceClass because Django evolution
# will fail unless it is allowed. But, we we really don't want it to
if self.serviceClass is None:
# We allowed None=True for serviceClass because Django evolution
# will fail unless it is allowed. But, we we really don't want it to
slice_privs = SlicePrivilege.objects.filter(user=user, slice=self)
for slice_priv in slice_privs:
if slice_priv.role.role == 'admin':
return True
slice_privs = SlicePrivilege.objects.filter(user=user, slice=self)
for slice_priv in slice_privs:
if slice_priv.role.role == 'admin':
return True
+ # pis can see slices at their sites
+ sites = [sp.site for sp in SitePrivilege.objects.filter(user=user)\
+ if sp.role.role == 'pi']
+ slice_ids.extend([s.id for s in Slice.objects.filter(site__in=sites)])
slice = models.ForeignKey(Slice)
deployment = models.ForeignKey(Deployment)
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")
slice = models.ForeignKey(Slice)
deployment = models.ForeignKey(Deployment)
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")