X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plstackapi%2Fcore%2Fserializers.py;h=2b703579ab357dbe2b5ef41e7cda99852511d116;hb=d90cdbf57462bac32cf35e5ff401b5d560851d78;hp=62ac271b2470376b1547f50800284fbdad725d49;hpb=7130ac36057d44c42e3630b93d1368b1e640a1ea;p=plstackapi.git diff --git a/plstackapi/core/serializers.py b/plstackapi/core/serializers.py index 62ac271..2b70357 100644 --- a/plstackapi/core/serializers.py +++ b/plstackapi/core/serializers.py @@ -1,93 +1,224 @@ from django.forms import widgets from rest_framework import serializers -from models import * +from plstackapi.core.models import * -class SliceSerializer(serializers.HyperlinkedModelSerializer): +class RoleSerializer(serializers.HyperlinkedModelSerializer): + # HyperlinkedModelSerializer doesn't include the id by default + id = serializers.Field() + class Meta: + model = Role + fields = ('id', + 'role_id', + 'role_type') + +class UserSerializer(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='site-privilege-detail') + class Meta: + model = User + fields = ('id', + 'user_id', + 'firstname', + 'lastname', + 'email', + 'password', + 'phone', + 'user_url', + 'is_admin', + 'site', + 'slice_memberships', + 'site_privileges') + +class KeySerializer(serializers.HyperlinkedModelSerializer): + id = serializers.Field() + user = serializers.HyperlinkedRelatedField(view_name='user-detail') + class Meta: + model = Key + fields = ('id', + 'name', + 'key', + 'type', + 'blacklisted', + 'user') + +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') + subnet= serializers.HyperlinkedRelatedField(view_name='subnet-detail') class Meta: model = Slice - fields = ('url', + fields = ('id', + 'tenant_id', + 'enabled', 'name', + 'url', 'instantiation', 'omf_friendly', 'description', 'slice_url', + 'network_id', + 'router_id', 'site', + 'slivers', + 'subnet', 'updated', 'created') +class SliceMembershipSerializer(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 = SitePrivilege + fields = ('id', + 'user', + 'slice', + 'role') + +class SubnetSerializer(serializers.HyperlinkedModelSerializer): + id = serializers.Field() + slice = serializers.HyperlinkedRelatedField(view_name='slice-detail') + class Meta: + model = Subnet + fields = ('id', + 'subnet_id', + 'cidr', + 'ip_version', + 'start', + 'end', + 'slice') + 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') - deploymentNetworks = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='sitedeploymentnetwork-detail') class Meta: model = Site - fields = ('url', + fields = ('id', + 'url', 'name', - 'deploymentNetworks', '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', + 'user', + 'site', + 'role') + class DeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer): - sites = serializers.HyperlinkedRelatedField(view_name='sitedeploymentnetwork-detail') + # HyperlinkedModelSerializer doesn't include the id by default + id = serializers.Field() + sites = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail') class Meta: model = DeploymentNetwork - fields = ('url', + fields = ('id', 'name', 'sites' ) -class SiteDeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer): - - site = serializers.HyperlinkedRelatedField(view_name='site-detail') - deploymentNetwork = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail') - - class Meta: - model = SiteDeploymentNetwork - fields = ('url', - 'site', - 'deploymentNetwork') - -class SliverSerializer(serializers.ModelSerializer): - slice = serializers.RelatedField(read_only=True) +class SliverSerializer(serializers.HyperlinkedModelSerializer): + # HyperlinkedModelSerializer doesn't include the id by default + id = serializers.Field() + flavor = serializers.HyperlinkedRelatedField(view_name='flavor-detail') + image = serializers.HyperlinkedRelatedField(view_name='image-detail') + key = serializers.HyperlinkedRelatedField(view_name='key-detail') + slice = serializers.HyperlinkedRelatedField(view_name='slice-detail') + deployment_network = serializers.HyperlinkedRelatedField(view_name='deployment_network-detail') + node = serializers.HyperlinkedRelatedField(view_name='node-detail') + + #slice = serializers.PrimaryKeyRelatedField(read_only=True) class Meta: model = Sliver fields = ('id', + 'instance_id', + 'name', + 'ip', + 'flavor', + 'image', + 'key', 'slice', - 'name') - -class NodeSerializer(serializers.ModelSerializer): + 'deploymentNetwork', + 'node') +class NodeSerializer(serializers.HyperlinkedModelSerializer): + # HyperlinkedModelSerializer doesn't include the id by default + id = serializers.Field() class Meta: model = Node fields = ('id', 'name') +class ImageSerializer(serializers.HyperlinkedModelSerializer): + # HyperlinkedModelSerializer doesn't include the id by default + id = serializers.Field() + class Meta: + model = Image + fields = ('id', + 'image_id', + 'name', + 'disk_format', + 'container_format') -serializerLookUp = { Site: SiteSerializer, +class FlavorSerializer(serializers.HyperlinkedModelSerializer): + # HyperlinkedModelSerializer doesn't include the id by default + id = serializers.Field() + class Meta: + model = Flavor + fields = ('id', + 'flavor_id', + 'name', + 'memory_mb', + 'disk_gb', + 'vcpus') + +serializerLookUp = { + Role: RoleSerializer, + User: UserSerializer, + Key: KeySerializer, + Site: SiteSerializer, + SitePrivilege: SitePrivilegeSerializer, Slice: SliceSerializer, + SliceMembership: SliceMembershipSerializer, + Subnet: SubnetSerializer, Node: NodeSerializer, Sliver: SliverSerializer, DeploymentNetwork: DeploymentNetworkSerializer, - SiteDeploymentNetwork: SiteDeploymentNetworkSerializer, + Image: ImageSerializer, + Flavor: FlavorSerializer, None: None, } +