blob: db5af0fe47127cfaa50655dcf8289058c7fde259 [file] [log] [blame]
Tony Mack7130ac32013-03-22 21:58:00 -04001from django.forms import widgets
2from rest_framework import serializers
Tony Mackf1c12242013-04-09 16:08:43 -04003from plstackapi.core.models import *
Tony Mack7130ac32013-03-22 21:58:00 -04004
5
Tony Macka28f1cd2013-04-07 20:02:31 -04006class RoleSerializer(serializers.HyperlinkedModelSerializer):
Tony Macka2dfb372013-04-09 11:02:32 -04007 # HyperlinkedModelSerializer doesn't include the id by default
8 id = serializers.Field()
9
Tony Macka28f1cd2013-04-07 20:02:31 -040010 class Meta:
11 model = Role
Tony Mack879d14a2013-04-09 09:34:19 -040012 fields = ('id',
13 'role_id',
Tony Macka28f1cd2013-04-07 20:02:31 -040014 'role_type')
15
Tony Mack5cc16ba2013-04-09 10:30:45 -040016
17class UserSerializer(serializers.HyperlinkedModelSerializer):
Tony Macka2dfb372013-04-09 11:02:32 -040018 # HyperlinkedModelSerializer doesn't include the id by default
19 id = serializers.Field()
Tony Mack5cc16ba2013-04-09 10:30:45 -040020 site = serializers.HyperlinkedRelatedField(view_name='site-detail')
21 slice_memberships = serializers.HyperlinkedRelatedField(view_name='slice-membership-detail')
22 site_privileges = serializers.HyperlinkedRelatedField(view_name='site-privilege-detail')
23 class Meta:
24 model = User
25 fields = ('id',
26 'user_id',
27 'firstname',
28 'lastname',
29 'email',
30 'phone',
31 'user_url',
32 'is_admin',
33 'site',
34 'slice_memberships',
35 'site_privileges')
36
Tony Macke4cee7a2013-04-09 12:45:32 -040037class KeySerializer(serializers.HyperlinkedModelSerializer):
38 id = serializers.Field()
39 user = serializers.HyperlinkedRelatedField(view_name='user-detail')
40 class Meta:
41 model = Key
42 fields = ('id',
43 'name',
44 'key',
45 'type',
46 'blacklisted',
47 'user')
48
Tony Mack5cc16ba2013-04-09 10:30:45 -040049
Tony Mack7130ac32013-03-22 21:58:00 -040050class SliceSerializer(serializers.HyperlinkedModelSerializer):
Tony Macka2dfb372013-04-09 11:02:32 -040051 # HyperlinkedModelSerializer doesn't include the id by default
52 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -040053 site = serializers.HyperlinkedRelatedField(view_name='site-detail')
Tony Mack3a1af412013-04-09 22:36:27 -040054 slivers = serializers.HyperlinkedRelatedField(view_name='sliver-detail')
Tony Mack7130ac32013-03-22 21:58:00 -040055 class Meta:
56 model = Slice
Tony Mack879d14a2013-04-09 09:34:19 -040057 fields = ('id',
Tony Mack3a1af412013-04-09 22:36:27 -040058 'tenant_id',
59 'enabled',
Tony Mack7130ac32013-03-22 21:58:00 -040060 'name',
Tony Mack3a1af412013-04-09 22:36:27 -040061 'url',
Tony Mack7130ac32013-03-22 21:58:00 -040062 'instantiation',
63 'omf_friendly',
64 'description',
65 'slice_url',
Tony Mack3a1af412013-04-09 22:36:27 -040066 'network_id',
67 'router_id',
Tony Mack7130ac32013-03-22 21:58:00 -040068 'site',
Tony Mack3a1af412013-04-09 22:36:27 -040069 'slivers',
70 'subnets',
Tony Mack7130ac32013-03-22 21:58:00 -040071 'updated',
72 'created')
73
74class SiteSerializer(serializers.HyperlinkedModelSerializer):
75
76 #Experimenting with whether to use ids, hyperlinks, or nested includes
77 #slices = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
78 #slices = serializers.RelatedField(many=True, read_only=True)
79 #slices = SliceSerializer(many=True)
Tony Macka2dfb372013-04-09 11:02:32 -040080 # HyperlinkedModelSerializer doesn't include the id by default
81 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -040082 slices = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='slice-detail')
Tony Mack6bdc4752013-04-09 01:05:37 -040083 deployment_networks = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='sitedeploymentnetwork-detail')
Tony Mack7130ac32013-03-22 21:58:00 -040084
85 class Meta:
86 model = Site
Tony Mack879d14a2013-04-09 09:34:19 -040087 fields = ('id',
88 'url',
Tony Mack7130ac32013-03-22 21:58:00 -040089 'name',
Tony Macke1ed6c72013-04-09 00:34:37 -040090 'deployment_networks',
Tony Mack7130ac32013-03-22 21:58:00 -040091 'slices',
92 'site_url',
93 'enabled',
94 'longitude',
95 'latitude',
96 'login_base',
Tony Macke87bffa2013-04-08 23:18:04 -040097 'tenant_id',
Tony Mack7130ac32013-03-22 21:58:00 -040098 'is_public',
99 'abbreviated_name',
100 'updated',
101 'created')
102
103class DeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
104
Tony Macka2dfb372013-04-09 11:02:32 -0400105 # HyperlinkedModelSerializer doesn't include the id by default
106 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -0400107 sites = serializers.HyperlinkedRelatedField(view_name='sitedeploymentnetwork-detail')
108 class Meta:
109 model = DeploymentNetwork
Tony Mack879d14a2013-04-09 09:34:19 -0400110 fields = ('id',
111 'name',
Tony Mack7130ac32013-03-22 21:58:00 -0400112 'sites'
113 )
114
115class SiteDeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
Tony Macka2dfb372013-04-09 11:02:32 -0400116 # HyperlinkedModelSerializer doesn't include the id by default
117 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -0400118 site = serializers.HyperlinkedRelatedField(view_name='site-detail')
119 deploymentNetwork = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail')
120
121 class Meta:
122 model = SiteDeploymentNetwork
Tony Macka2dfb372013-04-09 11:02:32 -0400123 fields = ('id',
124 'url',
Tony Mack7130ac32013-03-22 21:58:00 -0400125 'site',
126 'deploymentNetwork')
127
Tony Macka2dfb372013-04-09 11:02:32 -0400128class SliverSerializer(serializers.HyperlinkedModelSerializer):
129 # HyperlinkedModelSerializer doesn't include the id by default
130 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -0400131 slice = serializers.RelatedField(read_only=True)
132 #slice = serializers.PrimaryKeyRelatedField(read_only=True)
133
134 class Meta:
135 model = Sliver
136 fields = ('id',
137 'slice',
Tony Mack53310082013-04-09 09:26:12 -0400138 'name')
Tony Mack7130ac32013-03-22 21:58:00 -0400139
Tony Macka2dfb372013-04-09 11:02:32 -0400140class NodeSerializer(serializers.HyperlinkedModelSerializer):
141 # HyperlinkedModelSerializer doesn't include the id by default
142 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -0400143 class Meta:
144 model = Node
145 fields = ('id',
146 'name')
147
Tony Macka2dfb372013-04-09 11:02:32 -0400148class ImageSerializer(serializers.HyperlinkedModelSerializer):
149 # HyperlinkedModelSerializer doesn't include the id by default
150 id = serializers.Field()
Tony Mack53310082013-04-09 09:26:12 -0400151 class Meta:
152 model = Image
Tony Mack879d14a2013-04-09 09:34:19 -0400153 fields = ('id',
154 'image_id',
Tony Mack53310082013-04-09 09:26:12 -0400155 'name',
156 'disk_format',
157 'container_format')
158
Tony Macka2dfb372013-04-09 11:02:32 -0400159class FlavorSerializer(serializers.HyperlinkedModelSerializer):
160 # HyperlinkedModelSerializer doesn't include the id by default
161 id = serializers.Field()
Tony Mack53310082013-04-09 09:26:12 -0400162 class Meta:
163 model = Flavor
Tony Mack879d14a2013-04-09 09:34:19 -0400164 fields = ('id',
165 'flavor_id',
Tony Mack53310082013-04-09 09:26:12 -0400166 'name',
167 'memory_mb',
168 'disk_gb',
169 'vcpus')
Tony Mack7130ac32013-03-22 21:58:00 -0400170
Tony Macka28f1cd2013-04-07 20:02:31 -0400171serializerLookUp = {
172 Role: RoleSerializer,
Tony Macka2dfb372013-04-09 11:02:32 -0400173 User: UserSerializer,
Tony Macke4cee7a2013-04-09 12:45:32 -0400174 Key: KeySerializer,
Tony Macka28f1cd2013-04-07 20:02:31 -0400175 Site: SiteSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400176 Slice: SliceSerializer,
177 Node: NodeSerializer,
178 Sliver: SliverSerializer,
179 DeploymentNetwork: DeploymentNetworkSerializer,
180 SiteDeploymentNetwork: SiteDeploymentNetworkSerializer,
Tony Mack53310082013-04-09 09:26:12 -0400181 Image: ImageSerializer,
182 Flavor: FlavorSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400183 None: None,
184 }
Tony Mack53310082013-04-09 09:26:12 -0400185