Django-suit, add in Roles for specific classes site, slice, deployment, planetstack, change admin to leverage suit options
diff --git a/planetstack/core/serializers.py b/planetstack/core/serializers.py
index 94f5c3c..b83157b 100644
--- a/planetstack/core/serializers.py
+++ b/planetstack/core/serializers.py
@@ -3,38 +3,108 @@
from core.models import *
+class DeploymentSerializer(serializers.HyperlinkedModelSerializer):
+
+ # HyperlinkedModelSerializer doesn't include the id by default
+ id = serializers.Field()
+ sites = serializers.HyperlinkedRelatedField(view_name='site-detail')
+ class Meta:
+ model = Deployment
+ fields = ('id',
+ 'url',
+ 'name',
+ 'sites'
+ )
+
+class ImageSerializer(serializers.HyperlinkedModelSerializer):
+ # HyperlinkedModelSerializer doesn't include the id by default
+ id = serializers.Field()
+ class Meta:
+ model = Image
+ fields = ('id',
+ 'url',
+ 'image_id',
+ 'name',
+ 'disk_format',
+ 'container_format')
+
+class NodeSerializer(serializers.HyperlinkedModelSerializer):
+ # HyperlinkedModelSerializer doesn't include the id by default
+ id = serializers.Field()
+ class Meta:
+ model = Node
+ fields = ('id',
+ 'url',
+ 'name')
+
+class ProjectSerializer(serializers.HyperlinkedModelSerializer):
+ # HyperlinkedModelSerializer doesn't include the id by default
+ id = serializers.Field()
+ class Meta:
+ model = Project
+ fields = ('id',
+ 'url',
+ 'name')
+
+class ReservationSerializer(serializers.HyperlinkedModelSerializer):
+ # HyperlinkedModelSerializer doesn't include the id by default
+ id = serializers.Field()
+ class Meta:
+ model = Reservation
+ fields = ('id',
+ 'url',
+ 'startTime',
+ 'slice',
+ 'duration',
+ 'endTime',
+ )
+
class RoleSerializer(serializers.HyperlinkedModelSerializer):
# HyperlinkedModelSerializer doesn't include the id by default
id = serializers.Field()
class Meta:
model = Role
fields = ('id',
- 'role',
- 'role_type')
+ 'url',
+ 'role',
+ 'role_type')
-class UserSerializer(serializers.HyperlinkedModelSerializer):
+class ServiceClassSerializer(serializers.HyperlinkedModelSerializer):
# HyperlinkedModelSerializer doesn't include the id by default
id = serializers.Field()
- site = serializers.HyperlinkedRelatedField(view_name='site-detail')
- slice_memberships = serializers.HyperlinkedRelatedField(view_name='slice-membership-detail')
- site_privileges = serializers.HyperlinkedRelatedField(view_name='siteprivilege-detail')
class Meta:
- model = User
+ model = ServiceClass
fields = ('id',
- 'kuser_id',
- 'firstname',
- 'lastname',
- 'email',
- 'password',
- 'phone',
- 'public_key',
- 'user_url',
- 'is_admin',
- 'site',
- 'slice_memberships',
- 'site_privileges')
-
+ 'url',
+ 'name',
+ 'description',
+ 'commitment',
+ 'membershipFee',
+ 'membershipFeeMonths',
+ 'upgradeRequiresApproval',
+ 'upgradeFrom',
+ )
+
+class ServiceResourceSerializer(serializers.HyperlinkedModelSerializer):
+ # HyperlinkedModelSerializer doesn't include the id by default
+ id = serializers.Field()
+ serviceClass = serializers.HyperlinkedRelatedField(view_name='serviceclass-detail')
+ class Meta:
+ model = ServiceResource
+ fields = ('id',
+ 'url',
+ 'name',
+ 'serviceClass',
+ 'maxUnitsDeployment',
+ 'maxUnitsNode',
+ 'maxDuration',
+ 'bucketInRate',
+ 'bucketMaxSize',
+ 'cost',
+ 'calendarReservable',
+ )
+
class SliceSerializer(serializers.HyperlinkedModelSerializer):
# HyperlinkedModelSerializer doesn't include the id by default
id = serializers.Field()
@@ -43,6 +113,7 @@
class Meta:
model = Slice
fields = ('id',
+ 'url',
'tenant_id',
'enabled',
'name',
@@ -58,14 +129,15 @@
'updated',
'created')
-class SliceMembershipSerializer(serializers.HyperlinkedModelSerializer):
+class SlicePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
id = serializers.Field()
slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
user = serializers.HyperlinkedRelatedField(view_name='user-detail')
role = serializers.HyperlinkedRelatedField(view_name='role-detail')
class Meta:
- model = SliceMembership
+ model = SlicePrivilege
fields = ('id',
+ 'url',
'user',
'slice',
'role')
@@ -105,75 +177,90 @@
class Meta:
model = SitePrivilege
fields = ('id',
+ 'url',
'user',
'site',
'role')
-class DeploymentSerializer(serializers.HyperlinkedModelSerializer):
-
- # HyperlinkedModelSerializer doesn't include the id by default
- id = serializers.Field()
- sites = serializers.HyperlinkedRelatedField(view_name='site-detail')
- class Meta:
- model = Deployment
- fields = ('id',
- 'name',
- 'sites'
- )
-
class SliverSerializer(serializers.HyperlinkedModelSerializer):
# HyperlinkedModelSerializer doesn't include the id by default
id = serializers.Field()
image = serializers.HyperlinkedRelatedField(view_name='image-detail')
slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
- deployment = serializers.HyperlinkedRelatedField(view_name='deployment-detail')
+ deploymentNetwork = serializers.HyperlinkedRelatedField(view_name='deployment-detail')
node = serializers.HyperlinkedRelatedField(view_name='node-detail')
-
#slice = serializers.PrimaryKeyRelatedField(read_only=True)
class Meta:
model = Sliver
fields = ('id',
+ 'url',
'instance_id',
'name',
'instance_name',
'ip',
'image',
'slice',
- 'deployment',
+ 'deploymentNetwork',
'node')
-class NodeSerializer(serializers.HyperlinkedModelSerializer):
+class UserSerializer(serializers.HyperlinkedModelSerializer):
# HyperlinkedModelSerializer doesn't include the id by default
id = serializers.Field()
+ site = serializers.HyperlinkedRelatedField(view_name='site-detail')
+ slice_privileges = serializers.HyperlinkedRelatedField(view_name='sliceprivilege-detail')
+ site_privileges = serializers.HyperlinkedRelatedField(view_name='siteprivilege-detail')
class Meta:
- model = Node
+ model = User
fields = ('id',
- 'name')
-
-class ImageSerializer(serializers.HyperlinkedModelSerializer):
+ 'url',
+ 'kuser_id',
+ 'firstname',
+ 'lastname',
+ 'email',
+ 'password',
+ 'phone',
+ 'public_key',
+ 'user_url',
+ 'is_admin',
+ 'slice_privileges',
+ 'site_privileges')
+
+class TagSerializer(serializers.HyperlinkedModelSerializer):
# HyperlinkedModelSerializer doesn't include the id by default
id = serializers.Field()
+ project = serializers.HyperlinkedRelatedField(view_name='project-detail')
+ #content_type = serializers.PrimaryKeyRelatedField(read_only=True)
+ content_type = serializers.RelatedField(source = "content_type")
+ content_object = serializers.RelatedField(source='content_object')
class Meta:
- model = Image
- fields = ('id',
- 'image_id',
- 'name',
- 'disk_format',
- 'container_format')
+ model = Tag
+ fields = ('id',
+ 'url',
+ 'project',
+ 'value',
+ 'content_type',
+ 'object_id',
+ 'content_object',
+ 'name')
serializerLookUp = {
+ Deployment: DeploymentSerializer,
+ Image: ImageSerializer,
+ Node: NodeSerializer,
+ Project: ProjectSerializer,
+ Reservation: ReservationSerializer,
Role: RoleSerializer,
- User: UserSerializer,
+ ServiceClass: ServiceClassSerializer,
+ ServiceResource: ServiceResourceSerializer,
Site: SiteSerializer,
SitePrivilege: SitePrivilegeSerializer,
Slice: SliceSerializer,
- SliceMembership: SliceMembershipSerializer,
- Node: NodeSerializer,
+ SlicePrivilege: SlicePrivilegeSerializer,
Sliver: SliverSerializer,
- Deployment: DeploymentSerializer,
- Image: ImageSerializer,
+ Tag: TagSerializer,
+ User: UserSerializer,
None: None,
}