blob: 6317803af67b8f842d2f2137fa106d6f5045dea9 [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:
23 model = User
24 fields = ('id',
25 'user_id',
26 'firstname',
27 'lastname',
28 'email',
29 'phone',
30 'user_url',
31 'is_admin',
32 'site',
33 'slice_memberships',
34 'site_privileges')
35
Tony Macke4cee7a2013-04-09 12:45:32 -040036class KeySerializer(serializers.HyperlinkedModelSerializer):
37 id = serializers.Field()
38 user = serializers.HyperlinkedRelatedField(view_name='user-detail')
39 class Meta:
40 model = Key
41 fields = ('id',
42 'name',
43 'key',
44 'type',
45 'blacklisted',
46 'user')
47
Tony Mack5cc16ba2013-04-09 10:30:45 -040048
Tony Mack7130ac32013-03-22 21:58:00 -040049class SliceSerializer(serializers.HyperlinkedModelSerializer):
Tony Macka2dfb372013-04-09 11:02:32 -040050 # HyperlinkedModelSerializer doesn't include the id by default
51 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -040052 site = serializers.HyperlinkedRelatedField(view_name='site-detail')
Tony Mack3a1af412013-04-09 22:36:27 -040053 slivers = serializers.HyperlinkedRelatedField(view_name='sliver-detail')
Tony Mack771f4b92013-04-12 01:49:57 -040054 subnet= serializers.HyperlinkedRelatedField(view_name='subnet-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',
Tony Mack771f4b92013-04-12 01:49:57 -040070 'subnet',
Tony Mack7130ac32013-03-22 21:58:00 -040071 'updated',
72 'created')
73
Tony Mack29c287f2013-04-11 21:07:16 -040074class SliceMembershipSerializer(serializers.HyperlinkedModelSerializer):
75 id = serializers.Field()
76 slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
77 user = serializers.HyperlinkedRelatedField(view_name='user-detail')
78 role = serializers.HyperlinkedRelatedField(view_name='role-detail')
79 class Meta:
80 model = SitePrivilege
81 fields = ('id',
82 'user',
83 'slice',
84 'role')
85
86class SubnetSerializer(serializers.HyperlinkedModelSerializer):
87 id = serializers.Field()
88 slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
89 class Meta:
90 model = Subnet
91 fields = ('id',
92 'subnet_id',
93 'cidr',
94 'ip_version',
95 'start',
96 'end',
97 'slice')
98
Tony Mack7130ac32013-03-22 21:58:00 -040099class SiteSerializer(serializers.HyperlinkedModelSerializer):
100
101 #Experimenting with whether to use ids, hyperlinks, or nested includes
102 #slices = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
103 #slices = serializers.RelatedField(many=True, read_only=True)
104 #slices = SliceSerializer(many=True)
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 slices = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='slice-detail')
Tony Mack7130ac32013-03-22 21:58:00 -0400108
109 class Meta:
110 model = Site
Tony Mack879d14a2013-04-09 09:34:19 -0400111 fields = ('id',
112 'url',
Tony Mack7130ac32013-03-22 21:58:00 -0400113 'name',
Tony Mack7130ac32013-03-22 21:58:00 -0400114 'slices',
115 'site_url',
116 'enabled',
117 'longitude',
118 'latitude',
119 'login_base',
Tony Macke87bffa2013-04-08 23:18:04 -0400120 'tenant_id',
Tony Mack7130ac32013-03-22 21:58:00 -0400121 'is_public',
122 'abbreviated_name',
123 'updated',
124 'created')
125
Tony Mack29c287f2013-04-11 21:07:16 -0400126class SitePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
127 id = serializers.Field()
128 site = serializers.HyperlinkedRelatedField(view_name='site-detail')
129 user = serializers.HyperlinkedRelatedField(view_name='user-detail')
130 role = serializers.HyperlinkedRelatedField(view_name='role-detail')
131 class Meta:
132 model = SitePrivilege
133 fields = ('id',
134 'user',
135 'site',
136 'role')
137
Tony Mack7130ac32013-03-22 21:58:00 -0400138class DeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
139
Tony Macka2dfb372013-04-09 11:02:32 -0400140 # HyperlinkedModelSerializer doesn't include the id by default
141 id = serializers.Field()
Tony Mack29c287f2013-04-11 21:07:16 -0400142 sites = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail')
Tony Mack7130ac32013-03-22 21:58:00 -0400143 class Meta:
144 model = DeploymentNetwork
Tony Mack879d14a2013-04-09 09:34:19 -0400145 fields = ('id',
146 'name',
Tony Mack7130ac32013-03-22 21:58:00 -0400147 'sites'
148 )
149
Tony Macka2dfb372013-04-09 11:02:32 -0400150class SliverSerializer(serializers.HyperlinkedModelSerializer):
151 # HyperlinkedModelSerializer doesn't include the id by default
152 id = serializers.Field()
Tony Mack29c287f2013-04-11 21:07:16 -0400153 flavor = serializers.HyperlinkedRelatedField(view_name='flavor-detail')
154 image = serializers.HyperlinkedRelatedField(view_name='image-detail')
155 key = serializers.HyperlinkedRelatedField(view_name='key-detail')
156 slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
157 deployment_network = serializers.HyperlinkedRelatedField(view_name='deployment_network-detail')
158 node = serializers.HyperlinkedRelatedField(view_name='node-detail')
159
160
Tony Mack7130ac32013-03-22 21:58:00 -0400161 #slice = serializers.PrimaryKeyRelatedField(read_only=True)
162
163 class Meta:
164 model = Sliver
165 fields = ('id',
Tony Mack29c287f2013-04-11 21:07:16 -0400166 'instance_id',
Tony Mack5d6598c2013-04-12 12:45:02 -0400167 'name',
Tony Mack29c287f2013-04-11 21:07:16 -0400168 'flavor',
169 'image',
Tony Mack5d6598c2013-04-12 12:45:02 -0400170 'key',
Tony Mack7130ac32013-03-22 21:58:00 -0400171 'slice',
Tony Mack5d6598c2013-04-12 12:45:02 -0400172 'deploymentNetwork',
173 'node')
Tony Mack7130ac32013-03-22 21:58:00 -0400174
Tony Macka2dfb372013-04-09 11:02:32 -0400175class NodeSerializer(serializers.HyperlinkedModelSerializer):
176 # HyperlinkedModelSerializer doesn't include the id by default
177 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -0400178 class Meta:
179 model = Node
180 fields = ('id',
181 'name')
182
Tony Macka2dfb372013-04-09 11:02:32 -0400183class ImageSerializer(serializers.HyperlinkedModelSerializer):
184 # HyperlinkedModelSerializer doesn't include the id by default
185 id = serializers.Field()
Tony Mack53310082013-04-09 09:26:12 -0400186 class Meta:
187 model = Image
Tony Mack879d14a2013-04-09 09:34:19 -0400188 fields = ('id',
189 'image_id',
Tony Mack53310082013-04-09 09:26:12 -0400190 'name',
191 'disk_format',
192 'container_format')
193
Tony Macka2dfb372013-04-09 11:02:32 -0400194class FlavorSerializer(serializers.HyperlinkedModelSerializer):
195 # HyperlinkedModelSerializer doesn't include the id by default
196 id = serializers.Field()
Tony Mack53310082013-04-09 09:26:12 -0400197 class Meta:
198 model = Flavor
Tony Mack879d14a2013-04-09 09:34:19 -0400199 fields = ('id',
200 'flavor_id',
Tony Mack53310082013-04-09 09:26:12 -0400201 'name',
202 'memory_mb',
203 'disk_gb',
204 'vcpus')
Tony Mack7130ac32013-03-22 21:58:00 -0400205
Tony Macka28f1cd2013-04-07 20:02:31 -0400206serializerLookUp = {
207 Role: RoleSerializer,
Tony Macka2dfb372013-04-09 11:02:32 -0400208 User: UserSerializer,
Tony Macke4cee7a2013-04-09 12:45:32 -0400209 Key: KeySerializer,
Tony Macka28f1cd2013-04-07 20:02:31 -0400210 Site: SiteSerializer,
Tony Mack29c287f2013-04-11 21:07:16 -0400211 SitePrivilege: SitePrivilegeSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400212 Slice: SliceSerializer,
Tony Mack29c287f2013-04-11 21:07:16 -0400213 SliceMembership: SliceMembershipSerializer,
214 Subnet: SubnetSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400215 Node: NodeSerializer,
216 Sliver: SliverSerializer,
217 DeploymentNetwork: DeploymentNetworkSerializer,
Tony Mack53310082013-04-09 09:26:12 -0400218 Image: ImageSerializer,
219 Flavor: FlavorSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400220 None: None,
221 }
Tony Mack53310082013-04-09 09:26:12 -0400222