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 @@
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(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 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)