From: Scott Baker Date: Fri, 10 May 2013 23:50:44 +0000 (-0700) Subject: models and admin for ServiceClass and ServiceResource X-Git-Tag: 1.0~55 X-Git-Url: http://git.onelab.eu/?p=plstackapi.git;a=commitdiff_plain;h=3de3e37d4f6357b80c6f238d6a07cd67342224b0 models and admin for ServiceClass and ServiceResource --- diff --git a/planetstack/core/admin.py b/planetstack/core/admin.py index a429520..58e9689 100644 --- a/planetstack/core/admin.py +++ b/planetstack/core/admin.py @@ -437,6 +437,17 @@ class UserAdmin(UserAdmin, OSModelAdmin): ordering = ('email',) filter_horizontal = () +class ServiceResourceInline(admin.TabularInline): + model = ServiceResource + extra = 0 + +class ServiceClassAdmin(admin.ModelAdmin): + list_display = ('name', 'commitment', 'membershipFee') + inlines = [ServiceResourceInline] + +class ServiceResourceAdmin(admin.ModelAdmin): + list_display = ('serviceClass', 'name', 'cost', 'calendarReservable', 'maxUnitsDeployment', 'maxUnitsNode') + # register a signal that caches the user's credentials when they log in def cache_credentials(sender, user, request, **kwds): auth = {'username': request.POST['username'], @@ -461,4 +472,6 @@ admin.site.register(Sliver, SliverAdmin) admin.site.register(Key, KeyAdmin) admin.site.register(Role, RoleAdmin) admin.site.register(DeploymentNetwork, DeploymentNetworkAdmin) +admin.site.register(ServiceClass, ServiceClassAdmin) +admin.site.register(ServiceResource, ServiceResourceAdmin) diff --git a/planetstack/core/models/__init__.py b/planetstack/core/models/__init__.py index 4d9387b..0fe5e47 100644 --- a/planetstack/core/models/__init__.py +++ b/planetstack/core/models/__init__.py @@ -11,4 +11,6 @@ from .slice import Slice from .slice import SliceMembership from .sliver import Sliver from .subnet import Subnet +from .serviceclass import ServiceClass +from .serviceresource import ServiceResource diff --git a/planetstack/core/models/serviceclass.py b/planetstack/core/models/serviceclass.py new file mode 100644 index 0000000..8e7d21f --- /dev/null +++ b/planetstack/core/models/serviceclass.py @@ -0,0 +1,19 @@ +import os +from django.db import models +from core.models import PlCoreBase +from core.models import Site +from core.models import DeploymentNetwork + +# Create your models here. + +class ServiceClass(PlCoreBase): + name = models.CharField(max_length=32) + description = models.CharField(max_length=255) + commitment = models.IntegerField(default=365) + membershipFee = models.IntegerField(default=0) + membershipFeeMonths = models.IntegerField(default=12) + upgradeRequiresApproval = models.BooleanField(default=False) + upgradeFrom = models.ManyToManyField('self', blank=True, null=True) + + def __unicode__(self): return u'%s' % (self.name) + diff --git a/planetstack/core/models/serviceresource.py b/planetstack/core/models/serviceresource.py new file mode 100644 index 0000000..3b25ffe --- /dev/null +++ b/planetstack/core/models/serviceresource.py @@ -0,0 +1,21 @@ +import os +from django.db import models +from core.models import PlCoreBase +from core.models import Site +from core.models import DeploymentNetwork +from core.models import ServiceClass + +# Create your models here. + +class ServiceResource(PlCoreBase): + serviceClass = models.ForeignKey(ServiceClass, related_name = "resources") + name = models.CharField(max_length=32) + maxUnitsDeployment = models.IntegerField(default=1) + maxUnitsNode = models.IntegerField(default=1) + maxDuration = models.IntegerField(default=1) + bucketInRate = models.IntegerField(default=0) + bucketMaxSize = models.IntegerField(default=0) + cost = models.IntegerField(default=0) + calendarReservable = models.BooleanField(default=True) + + def __unicode__(self): return u'%s' % (self.name)