models and admin for ServiceClass and ServiceResource
authorScott Baker <smbaker@gmail.com>
Fri, 10 May 2013 23:50:44 +0000 (16:50 -0700)
committerScott Baker <smbaker@gmail.com>
Fri, 10 May 2013 23:50:44 +0000 (16:50 -0700)
planetstack/core/admin.py
planetstack/core/models/__init__.py
planetstack/core/models/serviceclass.py [new file with mode: 0644]
planetstack/core/models/serviceresource.py [new file with mode: 0644]

index a429520..58e9689 100644 (file)
@@ -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)
 
index 4d9387b..0fe5e47 100644 (file)
@@ -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 (file)
index 0000000..8e7d21f
--- /dev/null
@@ -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 (file)
index 0000000..3b25ffe
--- /dev/null
@@ -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)