2 from django.db import models
3 from core.models import PlCoreBase, Site, Slice, Sliver
4 from django.contrib.contenttypes.models import ContentType
5 from django.contrib.contenttypes import generic
7 # Create your models here.
9 class Network(PlCoreBase):
10 VISIBILITY_CHOICES = (('public', 'public'), ('private', 'private'))
12 name = models.CharField(max_length=32)
13 subnet = models.CharField(max_length=32)
14 ports = models.CharField(max_length=1024)
15 labels = models.CharField(max_length=1024)
16 slice = models.ForeignKey(Slice, related_name="networks")
17 visibility = models.CharField(max_length=30, choices=VISIBILITY_CHOICES, default="private")
18 guaranteedBandwidth = models.IntegerField(default=0)
19 permittedSlices = models.ManyToManyField(Slice, blank=True, related_name="permittedNetworks")
20 boundSlivers = models.ManyToManyField(Sliver, blank=True, related_name="boundNetworks", through="NetworkBoundSliver")
22 def __unicode__(self): return u'%s' % (self.name)
24 class NetworkBoundSliver(PlCoreBase):
25 network = models.ForeignKey(Network)
26 sliver = models.ForeignKey(Sliver)
27 ip = models.GenericIPAddressField(help_text="Sliver ip address", blank=True, null=True)
29 def __unicode__(self): return u'foo!'
31 class Router(PlCoreBase):
32 name = models.CharField(max_length=32)
33 owner = models.ForeignKey(Slice, related_name="routers")
34 networks = models.ManyToManyField(Network, blank=True, related_name="routers")
36 def __unicode__(self): return u'%s' % (self.name)
38 class NetworkParameterType(PlCoreBase):
39 name = models.SlugField(help_text="The name of this tag", max_length=128)
41 def __unicode__(self): return u'%s' % (self.name)
43 class NetworkParameter(PlCoreBase):
44 networkParameterType = models.ForeignKey(NetworkParameterType, related_name="parameters", help_text="The name of the parameter")
45 value = models.CharField(help_text="The value of this parameter", max_length=1024)
47 # The required fields to do a ObjectType lookup, and object_id assignment
48 content_type = models.ForeignKey(ContentType)
49 object_id = models.PositiveIntegerField()
50 content_object = generic.GenericForeignKey('content_type', 'object_id')
52 def __unicode__(self):
53 return self.networkParameterType.name