blob: b6d430a1bcc70bd1691333c335cdfb80fea8120b [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()
Tony Macka28f1cd2013-04-07 20:02:31 -04009 class Meta:
10 model = Role
Tony Mack879d14a2013-04-09 09:34:19 -040011 fields = ('id',
12 'role_id',
Tony Macka28f1cd2013-04-07 20:02:31 -040013 'role_type')
14
Tony Mack5cc16ba2013-04-09 10:30:45 -040015
16class UserSerializer(serializers.HyperlinkedModelSerializer):
Tony Macka2dfb372013-04-09 11:02:32 -040017 # HyperlinkedModelSerializer doesn't include the id by default
18 id = serializers.Field()
Tony Mack5cc16ba2013-04-09 10:30:45 -040019 site = serializers.HyperlinkedRelatedField(view_name='site-detail')
20 slice_memberships = serializers.HyperlinkedRelatedField(view_name='slice-membership-detail')
21 site_privileges = serializers.HyperlinkedRelatedField(view_name='site-privilege-detail')
22 class Meta:
Tony Mack0e723b92013-04-27 11:08:19 -040023 model = PLUser
Tony Mack5cc16ba2013-04-09 10:30:45 -040024 fields = ('id',
25 'user_id',
26 'firstname',
27 'lastname',
28 'email',
Tony Mack8484bdb2013-04-14 20:26:03 -040029 'password',
Tony Mack5cc16ba2013-04-09 10:30:45 -040030 '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 'omf_friendly',
63 'description',
64 'slice_url',
Tony Mack3a1af412013-04-09 22:36:27 -040065 'network_id',
66 'router_id',
Tony Mack1e7169e2013-05-07 11:09:57 -040067 'subnet_id',
Tony Mack7130ac32013-03-22 21:58:00 -040068 'site',
Tony Mack3a1af412013-04-09 22:36:27 -040069 'slivers',
Tony Mack7130ac32013-03-22 21:58:00 -040070 'updated',
71 'created')
72
Tony Mack29c287f2013-04-11 21:07:16 -040073class SliceMembershipSerializer(serializers.HyperlinkedModelSerializer):
74 id = serializers.Field()
75 slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
76 user = serializers.HyperlinkedRelatedField(view_name='user-detail')
77 role = serializers.HyperlinkedRelatedField(view_name='role-detail')
78 class Meta:
79 model = SitePrivilege
80 fields = ('id',
81 'user',
82 'slice',
83 'role')
84
Tony Mack7130ac32013-03-22 21:58:00 -040085class SiteSerializer(serializers.HyperlinkedModelSerializer):
86
87 #Experimenting with whether to use ids, hyperlinks, or nested includes
88 #slices = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
89 #slices = serializers.RelatedField(many=True, read_only=True)
90 #slices = SliceSerializer(many=True)
Tony Macka2dfb372013-04-09 11:02:32 -040091 # HyperlinkedModelSerializer doesn't include the id by default
92 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -040093 slices = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='slice-detail')
Tony Mack7130ac32013-03-22 21:58:00 -040094
95 class Meta:
96 model = Site
Tony Mack879d14a2013-04-09 09:34:19 -040097 fields = ('id',
98 'url',
Tony Mack7130ac32013-03-22 21:58:00 -040099 'name',
Tony Mack7130ac32013-03-22 21:58:00 -0400100 'slices',
101 'site_url',
102 'enabled',
103 'longitude',
104 'latitude',
105 'login_base',
Tony Macke87bffa2013-04-08 23:18:04 -0400106 'tenant_id',
Tony Mack7130ac32013-03-22 21:58:00 -0400107 'is_public',
108 'abbreviated_name',
109 'updated',
110 'created')
111
Tony Mack29c287f2013-04-11 21:07:16 -0400112class SitePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
113 id = serializers.Field()
114 site = serializers.HyperlinkedRelatedField(view_name='site-detail')
115 user = serializers.HyperlinkedRelatedField(view_name='user-detail')
116 role = serializers.HyperlinkedRelatedField(view_name='role-detail')
117 class Meta:
118 model = SitePrivilege
119 fields = ('id',
120 'user',
121 'site',
122 'role')
123
Tony Mack7130ac32013-03-22 21:58:00 -0400124class DeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
125
Tony Macka2dfb372013-04-09 11:02:32 -0400126 # HyperlinkedModelSerializer doesn't include the id by default
127 id = serializers.Field()
Tony Mack29c287f2013-04-11 21:07:16 -0400128 sites = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail')
Tony Mack7130ac32013-03-22 21:58:00 -0400129 class Meta:
130 model = DeploymentNetwork
Tony Mack879d14a2013-04-09 09:34:19 -0400131 fields = ('id',
132 'name',
Tony Mack7130ac32013-03-22 21:58:00 -0400133 'sites'
134 )
135
Tony Macka2dfb372013-04-09 11:02:32 -0400136class SliverSerializer(serializers.HyperlinkedModelSerializer):
137 # HyperlinkedModelSerializer doesn't include the id by default
138 id = serializers.Field()
Tony Mack29c287f2013-04-11 21:07:16 -0400139 image = serializers.HyperlinkedRelatedField(view_name='image-detail')
140 key = serializers.HyperlinkedRelatedField(view_name='key-detail')
141 slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
142 deployment_network = serializers.HyperlinkedRelatedField(view_name='deployment_network-detail')
143 node = serializers.HyperlinkedRelatedField(view_name='node-detail')
144
145
Tony Mack7130ac32013-03-22 21:58:00 -0400146 #slice = serializers.PrimaryKeyRelatedField(read_only=True)
147
148 class Meta:
149 model = Sliver
150 fields = ('id',
Tony Mack29c287f2013-04-11 21:07:16 -0400151 'instance_id',
Tony Mack5d6598c2013-04-12 12:45:02 -0400152 'name',
Tony Mack79748612013-05-01 14:52:03 -0400153 'instance_name',
Tony Mackd90cdbf2013-04-16 22:48:40 -0400154 'ip',
Tony Mack29c287f2013-04-11 21:07:16 -0400155 'image',
Tony Mack5d6598c2013-04-12 12:45:02 -0400156 'key',
Tony Mack7130ac32013-03-22 21:58:00 -0400157 'slice',
Tony Mack5d6598c2013-04-12 12:45:02 -0400158 'deploymentNetwork',
159 'node')
Tony Mack7130ac32013-03-22 21:58:00 -0400160
Tony Macka2dfb372013-04-09 11:02:32 -0400161class NodeSerializer(serializers.HyperlinkedModelSerializer):
162 # HyperlinkedModelSerializer doesn't include the id by default
163 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -0400164 class Meta:
165 model = Node
166 fields = ('id',
167 'name')
168
Tony Macka2dfb372013-04-09 11:02:32 -0400169class ImageSerializer(serializers.HyperlinkedModelSerializer):
170 # HyperlinkedModelSerializer doesn't include the id by default
171 id = serializers.Field()
Tony Mack53310082013-04-09 09:26:12 -0400172 class Meta:
173 model = Image
Tony Mack879d14a2013-04-09 09:34:19 -0400174 fields = ('id',
175 'image_id',
Tony Mack53310082013-04-09 09:26:12 -0400176 'name',
177 'disk_format',
178 'container_format')
179
Tony Macka28f1cd2013-04-07 20:02:31 -0400180serializerLookUp = {
181 Role: RoleSerializer,
Tony Mack0e723b92013-04-27 11:08:19 -0400182 PLUser: UserSerializer,
Tony Macke4cee7a2013-04-09 12:45:32 -0400183 Key: KeySerializer,
Tony Macka28f1cd2013-04-07 20:02:31 -0400184 Site: SiteSerializer,
Tony Mack29c287f2013-04-11 21:07:16 -0400185 SitePrivilege: SitePrivilegeSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400186 Slice: SliceSerializer,
Tony Mack29c287f2013-04-11 21:07:16 -0400187 SliceMembership: SliceMembershipSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400188 Node: NodeSerializer,
189 Sliver: SliverSerializer,
190 DeploymentNetwork: DeploymentNetworkSerializer,
Tony Mack53310082013-04-09 09:26:12 -0400191 Image: ImageSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400192 None: None,
193 }
Tony Mack53310082013-04-09 09:26:12 -0400194