blob: b83157b8087431c82117744825425235103f34ae [file] [log] [blame]
from django.forms import widgets
from rest_framework import serializers
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',
'url',
'role',
'role_type')
class ServiceClassSerializer(serializers.HyperlinkedModelSerializer):
# HyperlinkedModelSerializer doesn't include the id by default
id = serializers.Field()
class Meta:
model = ServiceClass
fields = ('id',
'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()
site = serializers.HyperlinkedRelatedField(view_name='site-detail')
slivers = serializers.HyperlinkedRelatedField(view_name='sliver-detail')
class Meta:
model = Slice
fields = ('id',
'url',
'tenant_id',
'enabled',
'name',
'url',
'omf_friendly',
'description',
'slice_url',
'network_id',
'router_id',
'subnet_id',
'site',
'slivers',
'updated',
'created')
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 = SlicePrivilege
fields = ('id',
'url',
'user',
'slice',
'role')
class SiteSerializer(serializers.HyperlinkedModelSerializer):
#Experimenting with whether to use ids, hyperlinks, or nested includes
#slices = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
#slices = serializers.RelatedField(many=True, read_only=True)
#slices = SliceSerializer(many=True)
# HyperlinkedModelSerializer doesn't include the id by default
id = serializers.Field()
slices = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='slice-detail')
class Meta:
model = Site
fields = ('id',
'url',
'name',
'slices',
'site_url',
'enabled',
'longitude',
'latitude',
'login_base',
'tenant_id',
'is_public',
'abbreviated_name',
'updated',
'created')
class SitePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
id = serializers.Field()
site = serializers.HyperlinkedRelatedField(view_name='site-detail')
user = serializers.HyperlinkedRelatedField(view_name='user-detail')
role = serializers.HyperlinkedRelatedField(view_name='role-detail')
class Meta:
model = SitePrivilege
fields = ('id',
'url',
'user',
'site',
'role')
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')
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',
'deploymentNetwork',
'node')
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 = User
fields = ('id',
'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 = 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,
ServiceClass: ServiceClassSerializer,
ServiceResource: ServiceResourceSerializer,
Site: SiteSerializer,
SitePrivilege: SitePrivilegeSerializer,
Slice: SliceSerializer,
SlicePrivilege: SlicePrivilegeSerializer,
Sliver: SliverSerializer,
Tag: TagSerializer,
User: UserSerializer,
None: None,
}