blob: 7c5dca984b61d90c6152aba1a64cde2aad720a25 [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 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 Mack1e7169e2013-05-07 11:09:57 -040068 'subnet_id',
Tony Mack7130ac32013-03-22 21:58:00 -040069 'site',
Tony Mack3a1af412013-04-09 22:36:27 -040070 'slivers',
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
Tony Mack7130ac32013-03-22 21:58:00 -040086class SiteSerializer(serializers.HyperlinkedModelSerializer):
87
88 #Experimenting with whether to use ids, hyperlinks, or nested includes
89 #slices = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
90 #slices = serializers.RelatedField(many=True, read_only=True)
91 #slices = SliceSerializer(many=True)
Tony Macka2dfb372013-04-09 11:02:32 -040092 # HyperlinkedModelSerializer doesn't include the id by default
93 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -040094 slices = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='slice-detail')
Tony Mack7130ac32013-03-22 21:58:00 -040095
96 class Meta:
97 model = Site
Tony Mack879d14a2013-04-09 09:34:19 -040098 fields = ('id',
99 'url',
Tony Mack7130ac32013-03-22 21:58:00 -0400100 'name',
Tony Mack7130ac32013-03-22 21:58:00 -0400101 'slices',
102 'site_url',
103 'enabled',
104 'longitude',
105 'latitude',
106 'login_base',
Tony Macke87bffa2013-04-08 23:18:04 -0400107 'tenant_id',
Tony Mack7130ac32013-03-22 21:58:00 -0400108 'is_public',
109 'abbreviated_name',
110 'updated',
111 'created')
112
Tony Mack29c287f2013-04-11 21:07:16 -0400113class SitePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
114 id = serializers.Field()
115 site = serializers.HyperlinkedRelatedField(view_name='site-detail')
116 user = serializers.HyperlinkedRelatedField(view_name='user-detail')
117 role = serializers.HyperlinkedRelatedField(view_name='role-detail')
118 class Meta:
119 model = SitePrivilege
120 fields = ('id',
121 'user',
122 'site',
123 'role')
124
Tony Mack7130ac32013-03-22 21:58:00 -0400125class DeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
126
Tony Macka2dfb372013-04-09 11:02:32 -0400127 # HyperlinkedModelSerializer doesn't include the id by default
128 id = serializers.Field()
Tony Mack29c287f2013-04-11 21:07:16 -0400129 sites = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail')
Tony Mack7130ac32013-03-22 21:58:00 -0400130 class Meta:
131 model = DeploymentNetwork
Tony Mack879d14a2013-04-09 09:34:19 -0400132 fields = ('id',
133 'name',
Tony Mack7130ac32013-03-22 21:58:00 -0400134 'sites'
135 )
136
Tony Macka2dfb372013-04-09 11:02:32 -0400137class SliverSerializer(serializers.HyperlinkedModelSerializer):
138 # HyperlinkedModelSerializer doesn't include the id by default
139 id = serializers.Field()
Tony Mack29c287f2013-04-11 21:07:16 -0400140 image = serializers.HyperlinkedRelatedField(view_name='image-detail')
141 key = serializers.HyperlinkedRelatedField(view_name='key-detail')
142 slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
143 deployment_network = serializers.HyperlinkedRelatedField(view_name='deployment_network-detail')
144 node = serializers.HyperlinkedRelatedField(view_name='node-detail')
145
146
Tony Mack7130ac32013-03-22 21:58:00 -0400147 #slice = serializers.PrimaryKeyRelatedField(read_only=True)
148
149 class Meta:
150 model = Sliver
151 fields = ('id',
Tony Mack29c287f2013-04-11 21:07:16 -0400152 'instance_id',
Tony Mack5d6598c2013-04-12 12:45:02 -0400153 'name',
Tony Mack79748612013-05-01 14:52:03 -0400154 'instance_name',
Tony Mackd90cdbf2013-04-16 22:48:40 -0400155 'ip',
Tony Mack29c287f2013-04-11 21:07:16 -0400156 'image',
Tony Mack5d6598c2013-04-12 12:45:02 -0400157 'key',
Tony Mack7130ac32013-03-22 21:58:00 -0400158 'slice',
Tony Mack5d6598c2013-04-12 12:45:02 -0400159 'deploymentNetwork',
160 'node')
Tony Mack7130ac32013-03-22 21:58:00 -0400161
Tony Macka2dfb372013-04-09 11:02:32 -0400162class NodeSerializer(serializers.HyperlinkedModelSerializer):
163 # HyperlinkedModelSerializer doesn't include the id by default
164 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -0400165 class Meta:
166 model = Node
167 fields = ('id',
168 'name')
169
Tony Macka2dfb372013-04-09 11:02:32 -0400170class ImageSerializer(serializers.HyperlinkedModelSerializer):
171 # HyperlinkedModelSerializer doesn't include the id by default
172 id = serializers.Field()
Tony Mack53310082013-04-09 09:26:12 -0400173 class Meta:
174 model = Image
Tony Mack879d14a2013-04-09 09:34:19 -0400175 fields = ('id',
176 'image_id',
Tony Mack53310082013-04-09 09:26:12 -0400177 'name',
178 'disk_format',
179 'container_format')
180
Tony Macka28f1cd2013-04-07 20:02:31 -0400181serializerLookUp = {
182 Role: RoleSerializer,
Siobhan Tully30fd4292013-05-10 08:59:56 -0400183 User: UserSerializer,
Tony Macke4cee7a2013-04-09 12:45:32 -0400184 Key: KeySerializer,
Tony Macka28f1cd2013-04-07 20:02:31 -0400185 Site: SiteSerializer,
Tony Mack29c287f2013-04-11 21:07:16 -0400186 SitePrivilege: SitePrivilegeSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400187 Slice: SliceSerializer,
Tony Mack29c287f2013-04-11 21:07:16 -0400188 SliceMembership: SliceMembershipSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400189 Node: NodeSerializer,
190 Sliver: SliverSerializer,
191 DeploymentNetwork: DeploymentNetworkSerializer,
Tony Mack53310082013-04-09 09:26:12 -0400192 Image: ImageSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400193 None: None,
194 }
Tony Mack53310082013-04-09 09:26:12 -0400195