blob: f6fbe8c11fca39407b2e9de764be91ba4faed994 [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 Mack930355f2013-04-09 23:23:24 -040055 subnets = 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 'instantiation',
64 'omf_friendly',
65 'description',
66 'slice_url',
Tony Mack3a1af412013-04-09 22:36:27 -040067 'network_id',
68 'router_id',
Tony Mack7130ac32013-03-22 21:58:00 -040069 'site',
Tony Mack3a1af412013-04-09 22:36:27 -040070 'slivers',
71 'subnets',
Tony Mack7130ac32013-03-22 21:58:00 -040072 'updated',
73 'created')
74
Tony Mack29c287f2013-04-11 21:07:16 -040075class SliceMembershipSerializer(serializers.HyperlinkedModelSerializer):
76 id = serializers.Field()
77 slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
78 user = serializers.HyperlinkedRelatedField(view_name='user-detail')
79 role = serializers.HyperlinkedRelatedField(view_name='role-detail')
80 class Meta:
81 model = SitePrivilege
82 fields = ('id',
83 'user',
84 'slice',
85 'role')
86
87class SubnetSerializer(serializers.HyperlinkedModelSerializer):
88 id = serializers.Field()
89 slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
90 class Meta:
91 model = Subnet
92 fields = ('id',
93 'subnet_id',
94 'cidr',
95 'ip_version',
96 'start',
97 'end',
98 'slice')
99
Tony Mack7130ac32013-03-22 21:58:00 -0400100class SiteSerializer(serializers.HyperlinkedModelSerializer):
101
102 #Experimenting with whether to use ids, hyperlinks, or nested includes
103 #slices = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
104 #slices = serializers.RelatedField(many=True, read_only=True)
105 #slices = SliceSerializer(many=True)
Tony Macka2dfb372013-04-09 11:02:32 -0400106 # HyperlinkedModelSerializer doesn't include the id by default
107 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -0400108 slices = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='slice-detail')
Tony Mack29c287f2013-04-11 21:07:16 -0400109 deployment_networks = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='deploymentnetwork-detail')
Tony Mack7130ac32013-03-22 21:58:00 -0400110
111 class Meta:
112 model = Site
Tony Mack879d14a2013-04-09 09:34:19 -0400113 fields = ('id',
114 'url',
Tony Mack7130ac32013-03-22 21:58:00 -0400115 'name',
Tony Macke1ed6c72013-04-09 00:34:37 -0400116 'deployment_networks',
Tony Mack7130ac32013-03-22 21:58:00 -0400117 'slices',
118 'site_url',
119 'enabled',
120 'longitude',
121 'latitude',
122 'login_base',
Tony Macke87bffa2013-04-08 23:18:04 -0400123 'tenant_id',
Tony Mack7130ac32013-03-22 21:58:00 -0400124 'is_public',
125 'abbreviated_name',
126 'updated',
127 'created')
128
Tony Mack29c287f2013-04-11 21:07:16 -0400129class SitePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
130 id = serializers.Field()
131 site = serializers.HyperlinkedRelatedField(view_name='site-detail')
132 user = serializers.HyperlinkedRelatedField(view_name='user-detail')
133 role = serializers.HyperlinkedRelatedField(view_name='role-detail')
134 class Meta:
135 model = SitePrivilege
136 fields = ('id',
137 'user',
138 'site',
139 'role')
140
Tony Mack7130ac32013-03-22 21:58:00 -0400141class DeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
142
Tony Macka2dfb372013-04-09 11:02:32 -0400143 # HyperlinkedModelSerializer doesn't include the id by default
144 id = serializers.Field()
Tony Mack29c287f2013-04-11 21:07:16 -0400145 sites = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail')
Tony Mack7130ac32013-03-22 21:58:00 -0400146 class Meta:
147 model = DeploymentNetwork
Tony Mack879d14a2013-04-09 09:34:19 -0400148 fields = ('id',
149 'name',
Tony Mack7130ac32013-03-22 21:58:00 -0400150 'sites'
151 )
152
Tony Macka2dfb372013-04-09 11:02:32 -0400153class SliverSerializer(serializers.HyperlinkedModelSerializer):
154 # HyperlinkedModelSerializer doesn't include the id by default
155 id = serializers.Field()
Tony Mack29c287f2013-04-11 21:07:16 -0400156 flavor = serializers.HyperlinkedRelatedField(view_name='flavor-detail')
157 image = serializers.HyperlinkedRelatedField(view_name='image-detail')
158 key = serializers.HyperlinkedRelatedField(view_name='key-detail')
159 slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
160 deployment_network = serializers.HyperlinkedRelatedField(view_name='deployment_network-detail')
161 node = serializers.HyperlinkedRelatedField(view_name='node-detail')
162
163
Tony Mack7130ac32013-03-22 21:58:00 -0400164 #slice = serializers.PrimaryKeyRelatedField(read_only=True)
165
166 class Meta:
167 model = Sliver
168 fields = ('id',
Tony Mack29c287f2013-04-11 21:07:16 -0400169 'instance_id',
170 'name'
171 'flavor',
172 'image',
173 'key'
Tony Mack7130ac32013-03-22 21:58:00 -0400174 'slice',
Tony Mack29c287f2013-04-11 21:07:16 -0400175 'deployment_network',
176 'noode')
Tony Mack7130ac32013-03-22 21:58:00 -0400177
Tony Macka2dfb372013-04-09 11:02:32 -0400178class NodeSerializer(serializers.HyperlinkedModelSerializer):
179 # HyperlinkedModelSerializer doesn't include the id by default
180 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -0400181 class Meta:
182 model = Node
183 fields = ('id',
184 'name')
185
Tony Macka2dfb372013-04-09 11:02:32 -0400186class ImageSerializer(serializers.HyperlinkedModelSerializer):
187 # HyperlinkedModelSerializer doesn't include the id by default
188 id = serializers.Field()
Tony Mack53310082013-04-09 09:26:12 -0400189 class Meta:
190 model = Image
Tony Mack879d14a2013-04-09 09:34:19 -0400191 fields = ('id',
192 'image_id',
Tony Mack53310082013-04-09 09:26:12 -0400193 'name',
194 'disk_format',
195 'container_format')
196
Tony Macka2dfb372013-04-09 11:02:32 -0400197class FlavorSerializer(serializers.HyperlinkedModelSerializer):
198 # HyperlinkedModelSerializer doesn't include the id by default
199 id = serializers.Field()
Tony Mack53310082013-04-09 09:26:12 -0400200 class Meta:
201 model = Flavor
Tony Mack879d14a2013-04-09 09:34:19 -0400202 fields = ('id',
203 'flavor_id',
Tony Mack53310082013-04-09 09:26:12 -0400204 'name',
205 'memory_mb',
206 'disk_gb',
207 'vcpus')
Tony Mack7130ac32013-03-22 21:58:00 -0400208
Tony Macka28f1cd2013-04-07 20:02:31 -0400209serializerLookUp = {
210 Role: RoleSerializer,
Tony Macka2dfb372013-04-09 11:02:32 -0400211 User: UserSerializer,
Tony Macke4cee7a2013-04-09 12:45:32 -0400212 Key: KeySerializer,
Tony Macka28f1cd2013-04-07 20:02:31 -0400213 Site: SiteSerializer,
Tony Mack29c287f2013-04-11 21:07:16 -0400214 SitePrivilege: SitePrivilegeSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400215 Slice: SliceSerializer,
Tony Mack29c287f2013-04-11 21:07:16 -0400216 SliceMembership: SliceMembershipSerializer,
217 Subnet: SubnetSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400218 Node: NodeSerializer,
219 Sliver: SliverSerializer,
220 DeploymentNetwork: DeploymentNetworkSerializer,
Tony Mack53310082013-04-09 09:26:12 -0400221 Image: ImageSerializer,
222 Flavor: FlavorSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400223 None: None,
224 }
Tony Mack53310082013-04-09 09:26:12 -0400225