blob: b5143f2d920db26895b738c35a1938c61d1c8a28 [file] [log] [blame]
# Copyright 2017-present Open Networking Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
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")
instances = serializers.HyperlinkedRelatedField(view_name="instance-detail")
class Meta:
model = Slice
fields = (
"id",
"url",
"tenant_id",
"enabled",
"name",
"url",
"omf_friendly",
"description",
"slice_url",
"network_id",
"router_id",
"subnet_id",
"imagePreference",
"network",
"mountDataSets",
"site",
"instances",
"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 InstanceSerializer(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 = Instance
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,
Instance: InstanceSerializer,
Tag: TagSerializer,
User: UserSerializer,
None: None,
}