blob: 55cf7c8f084aeafe35abc21b377c6237047aa19e [file] [log] [blame]
Tony Mack7130ac32013-03-22 21:58:00 -04001from django.forms import widgets
2from rest_framework import serializers
Siobhan Tully30fd4292013-05-10 08:59:56 -04003from 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:
Siobhan Tully30fd4292013-05-10 08:59:56 -040023 model = User
Tony Mack5cc16ba2013-04-09 10:30:45 -040024 fields = ('id',
25 'user_id',
Siobhan Tully30fd4292013-05-10 08:59:56 -040026 'kuser_id',
Tony Mack5cc16ba2013-04-09 10:30:45 -040027 'firstname',
28 'lastname',
29 'email',
Tony Mack8484bdb2013-04-14 20:26:03 -040030 'password',
Tony Mack5cc16ba2013-04-09 10:30:45 -040031 'phone',
32 'user_url',
33 'is_admin',
34 'site',
35 'slice_memberships',
36 'site_privileges')
37
Tony Macke4cee7a2013-04-09 12:45:32 -040038class KeySerializer(serializers.HyperlinkedModelSerializer):
39 id = serializers.Field()
40 user = serializers.HyperlinkedRelatedField(view_name='user-detail')
41 class Meta:
42 model = Key
43 fields = ('id',
44 'name',
45 'key',
46 'type',
47 'blacklisted',
48 'user')
49
Tony Mack5cc16ba2013-04-09 10:30:45 -040050
Tony Mack7130ac32013-03-22 21:58:00 -040051class SliceSerializer(serializers.HyperlinkedModelSerializer):
Tony Macka2dfb372013-04-09 11:02:32 -040052 # HyperlinkedModelSerializer doesn't include the id by default
53 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -040054 site = serializers.HyperlinkedRelatedField(view_name='site-detail')
Tony Mack3a1af412013-04-09 22:36:27 -040055 slivers = serializers.HyperlinkedRelatedField(view_name='sliver-detail')
Tony Mack771f4b92013-04-12 01:49:57 -040056 subnet= serializers.HyperlinkedRelatedField(view_name='subnet-detail')
Tony Mack7130ac32013-03-22 21:58:00 -040057 class Meta:
58 model = Slice
Tony Mack879d14a2013-04-09 09:34:19 -040059 fields = ('id',
Tony Mack3a1af412013-04-09 22:36:27 -040060 'tenant_id',
61 'enabled',
Tony Mack7130ac32013-03-22 21:58:00 -040062 'name',
Tony Mack3a1af412013-04-09 22:36:27 -040063 'url',
Tony Mack7130ac32013-03-22 21:58:00 -040064 'instantiation',
65 'omf_friendly',
66 'description',
67 'slice_url',
Tony Mack3a1af412013-04-09 22:36:27 -040068 'network_id',
69 'router_id',
Tony Mack7130ac32013-03-22 21:58:00 -040070 'site',
Tony Mack3a1af412013-04-09 22:36:27 -040071 'slivers',
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 Mack7130ac32013-03-22 21:58:00 -0400109
110 class Meta:
111 model = Site
Tony Mack879d14a2013-04-09 09:34:19 -0400112 fields = ('id',
113 'url',
Tony Mack7130ac32013-03-22 21:58:00 -0400114 'name',
Tony Mack7130ac32013-03-22 21:58:00 -0400115 'slices',
116 'site_url',
117 'enabled',
118 'longitude',
119 'latitude',
120 'login_base',
Tony Macke87bffa2013-04-08 23:18:04 -0400121 'tenant_id',
Tony Mack7130ac32013-03-22 21:58:00 -0400122 'is_public',
123 'abbreviated_name',
124 'updated',
125 'created')
126
Tony Mack29c287f2013-04-11 21:07:16 -0400127class SitePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
128 id = serializers.Field()
129 site = serializers.HyperlinkedRelatedField(view_name='site-detail')
130 user = serializers.HyperlinkedRelatedField(view_name='user-detail')
131 role = serializers.HyperlinkedRelatedField(view_name='role-detail')
132 class Meta:
133 model = SitePrivilege
134 fields = ('id',
135 'user',
136 'site',
137 'role')
138
Tony Mack7130ac32013-03-22 21:58:00 -0400139class DeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
140
Tony Macka2dfb372013-04-09 11:02:32 -0400141 # HyperlinkedModelSerializer doesn't include the id by default
142 id = serializers.Field()
Tony Mack29c287f2013-04-11 21:07:16 -0400143 sites = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail')
Tony Mack7130ac32013-03-22 21:58:00 -0400144 class Meta:
145 model = DeploymentNetwork
Tony Mack879d14a2013-04-09 09:34:19 -0400146 fields = ('id',
147 'name',
Tony Mack7130ac32013-03-22 21:58:00 -0400148 'sites'
149 )
150
Tony Macka2dfb372013-04-09 11:02:32 -0400151class SliverSerializer(serializers.HyperlinkedModelSerializer):
152 # HyperlinkedModelSerializer doesn't include the id by default
153 id = serializers.Field()
Tony Mack29c287f2013-04-11 21:07:16 -0400154 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 Mack79748612013-05-01 14:52:03 -0400168 'instance_name',
Tony Mackd90cdbf2013-04-16 22:48:40 -0400169 'ip',
Tony Mack29c287f2013-04-11 21:07:16 -0400170 'image',
Tony Mack5d6598c2013-04-12 12:45:02 -0400171 'key',
Tony Mack7130ac32013-03-22 21:58:00 -0400172 'slice',
Tony Mack5d6598c2013-04-12 12:45:02 -0400173 'deploymentNetwork',
174 'node')
Tony Mack7130ac32013-03-22 21:58:00 -0400175
Tony Macka2dfb372013-04-09 11:02:32 -0400176class NodeSerializer(serializers.HyperlinkedModelSerializer):
177 # HyperlinkedModelSerializer doesn't include the id by default
178 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -0400179 class Meta:
180 model = Node
181 fields = ('id',
182 'name')
183
Tony Macka2dfb372013-04-09 11:02:32 -0400184class ImageSerializer(serializers.HyperlinkedModelSerializer):
185 # HyperlinkedModelSerializer doesn't include the id by default
186 id = serializers.Field()
Tony Mack53310082013-04-09 09:26:12 -0400187 class Meta:
188 model = Image
Tony Mack879d14a2013-04-09 09:34:19 -0400189 fields = ('id',
190 'image_id',
Tony Mack53310082013-04-09 09:26:12 -0400191 'name',
192 'disk_format',
193 'container_format')
194
Tony Macka28f1cd2013-04-07 20:02:31 -0400195serializerLookUp = {
196 Role: RoleSerializer,
Siobhan Tully30fd4292013-05-10 08:59:56 -0400197 User: UserSerializer,
Tony Macke4cee7a2013-04-09 12:45:32 -0400198 Key: KeySerializer,
Tony Macka28f1cd2013-04-07 20:02:31 -0400199 Site: SiteSerializer,
Tony Mack29c287f2013-04-11 21:07:16 -0400200 SitePrivilege: SitePrivilegeSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400201 Slice: SliceSerializer,
Tony Mack29c287f2013-04-11 21:07:16 -0400202 SliceMembership: SliceMembershipSerializer,
203 Subnet: SubnetSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400204 Node: NodeSerializer,
205 Sliver: SliverSerializer,
206 DeploymentNetwork: DeploymentNetworkSerializer,
Tony Mack53310082013-04-09 09:26:12 -0400207 Image: ImageSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400208 None: None,
209 }
Tony Mack53310082013-04-09 09:26:12 -0400210