blob: ded18597ebdbdeac9c1371bf6122e14bceb0b982 [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 Mack771f4b92013-04-12 01:49:57 -040055 subnet= serializers.HyperlinkedRelatedField(view_name='subnet-detail')
Tony Mack7130ac32013-03-22 21:58:00 -040056 class Meta:
57 model = Slice
Tony Mack879d14a2013-04-09 09:34:19 -040058 fields = ('id',
Tony Mack3a1af412013-04-09 22:36:27 -040059 'tenant_id',
60 'enabled',
Tony Mack7130ac32013-03-22 21:58:00 -040061 'name',
Tony Mack3a1af412013-04-09 22:36:27 -040062 'url',
Tony Mack7130ac32013-03-22 21:58:00 -040063 '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',
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
85class SubnetSerializer(serializers.HyperlinkedModelSerializer):
86 id = serializers.Field()
87 slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
88 class Meta:
89 model = Subnet
90 fields = ('id',
91 'subnet_id',
92 'cidr',
93 'ip_version',
94 'start',
95 'end',
96 'slice')
97
Tony Mack7130ac32013-03-22 21:58:00 -040098class SiteSerializer(serializers.HyperlinkedModelSerializer):
99
100 #Experimenting with whether to use ids, hyperlinks, or nested includes
101 #slices = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
102 #slices = serializers.RelatedField(many=True, read_only=True)
103 #slices = SliceSerializer(many=True)
Tony Macka2dfb372013-04-09 11:02:32 -0400104 # HyperlinkedModelSerializer doesn't include the id by default
105 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -0400106 slices = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='slice-detail')
Tony Mack7130ac32013-03-22 21:58:00 -0400107
108 class Meta:
109 model = Site
Tony Mack879d14a2013-04-09 09:34:19 -0400110 fields = ('id',
111 'url',
Tony Mack7130ac32013-03-22 21:58:00 -0400112 'name',
Tony Mack7130ac32013-03-22 21:58:00 -0400113 'slices',
114 'site_url',
115 'enabled',
116 'longitude',
117 'latitude',
118 'login_base',
Tony Macke87bffa2013-04-08 23:18:04 -0400119 'tenant_id',
Tony Mack7130ac32013-03-22 21:58:00 -0400120 'is_public',
121 'abbreviated_name',
122 'updated',
123 'created')
124
Tony Mack29c287f2013-04-11 21:07:16 -0400125class SitePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
126 id = serializers.Field()
127 site = serializers.HyperlinkedRelatedField(view_name='site-detail')
128 user = serializers.HyperlinkedRelatedField(view_name='user-detail')
129 role = serializers.HyperlinkedRelatedField(view_name='role-detail')
130 class Meta:
131 model = SitePrivilege
132 fields = ('id',
133 'user',
134 'site',
135 'role')
136
Tony Mack7130ac32013-03-22 21:58:00 -0400137class DeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
138
Tony Macka2dfb372013-04-09 11:02:32 -0400139 # HyperlinkedModelSerializer doesn't include the id by default
140 id = serializers.Field()
Tony Mack29c287f2013-04-11 21:07:16 -0400141 sites = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail')
Tony Mack7130ac32013-03-22 21:58:00 -0400142 class Meta:
143 model = DeploymentNetwork
Tony Mack879d14a2013-04-09 09:34:19 -0400144 fields = ('id',
145 'name',
Tony Mack7130ac32013-03-22 21:58:00 -0400146 'sites'
147 )
148
Tony Macka2dfb372013-04-09 11:02:32 -0400149class SliverSerializer(serializers.HyperlinkedModelSerializer):
150 # HyperlinkedModelSerializer doesn't include the id by default
151 id = serializers.Field()
Tony Mack29c287f2013-04-11 21:07:16 -0400152 image = serializers.HyperlinkedRelatedField(view_name='image-detail')
153 key = serializers.HyperlinkedRelatedField(view_name='key-detail')
154 slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
155 deployment_network = serializers.HyperlinkedRelatedField(view_name='deployment_network-detail')
156 node = serializers.HyperlinkedRelatedField(view_name='node-detail')
157
158
Tony Mack7130ac32013-03-22 21:58:00 -0400159 #slice = serializers.PrimaryKeyRelatedField(read_only=True)
160
161 class Meta:
162 model = Sliver
163 fields = ('id',
Tony Mack29c287f2013-04-11 21:07:16 -0400164 'instance_id',
Tony Mack5d6598c2013-04-12 12:45:02 -0400165 'name',
Tony Mack79748612013-05-01 14:52:03 -0400166 'instance_name',
Tony Mackd90cdbf2013-04-16 22:48:40 -0400167 'ip',
Tony Mack29c287f2013-04-11 21:07:16 -0400168 'image',
Tony Mack5d6598c2013-04-12 12:45:02 -0400169 'key',
Tony Mack7130ac32013-03-22 21:58:00 -0400170 'slice',
Tony Mack5d6598c2013-04-12 12:45:02 -0400171 'deploymentNetwork',
172 'node')
Tony Mack7130ac32013-03-22 21:58:00 -0400173
Tony Macka2dfb372013-04-09 11:02:32 -0400174class NodeSerializer(serializers.HyperlinkedModelSerializer):
175 # HyperlinkedModelSerializer doesn't include the id by default
176 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -0400177 class Meta:
178 model = Node
179 fields = ('id',
180 'name')
181
Tony Macka2dfb372013-04-09 11:02:32 -0400182class ImageSerializer(serializers.HyperlinkedModelSerializer):
183 # HyperlinkedModelSerializer doesn't include the id by default
184 id = serializers.Field()
Tony Mack53310082013-04-09 09:26:12 -0400185 class Meta:
186 model = Image
Tony Mack879d14a2013-04-09 09:34:19 -0400187 fields = ('id',
188 'image_id',
Tony Mack53310082013-04-09 09:26:12 -0400189 'name',
190 'disk_format',
191 'container_format')
192
Tony Macka28f1cd2013-04-07 20:02:31 -0400193serializerLookUp = {
194 Role: RoleSerializer,
Tony Mack0e723b92013-04-27 11:08:19 -0400195 PLUser: UserSerializer,
Tony Macke4cee7a2013-04-09 12:45:32 -0400196 Key: KeySerializer,
Tony Macka28f1cd2013-04-07 20:02:31 -0400197 Site: SiteSerializer,
Tony Mack29c287f2013-04-11 21:07:16 -0400198 SitePrivilege: SitePrivilegeSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400199 Slice: SliceSerializer,
Tony Mack29c287f2013-04-11 21:07:16 -0400200 SliceMembership: SliceMembershipSerializer,
201 Subnet: SubnetSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400202 Node: NodeSerializer,
203 Sliver: SliverSerializer,
204 DeploymentNetwork: DeploymentNetworkSerializer,
Tony Mack53310082013-04-09 09:26:12 -0400205 Image: ImageSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400206 None: None,
207 }
Tony Mack53310082013-04-09 09:26:12 -0400208