blob: fd0c6c6ed6dc16b9d995f489d6d8d91a6b4dc371 [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',
Siobhan Tully47ae1b52013-05-10 15:53:14 -040013 'role',
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:
Siobhan Tully30fd4292013-05-10 08:59:56 -040024 model = User
Tony Mack5cc16ba2013-04-09 10:30:45 -040025 fields = ('id',
26 'user_id',
Siobhan Tully30fd4292013-05-10 08:59:56 -040027 'kuser_id',
Tony Mack5cc16ba2013-04-09 10:30:45 -040028 'firstname',
29 'lastname',
30 'email',
Tony Mackb0d97422013-06-10 09:57:45 -040031 'password',
32 'phone',
33 'public_key',
Tony Mack5cc16ba2013-04-09 10:30:45 -040034 'user_url',
35 'is_admin',
36 'site',
37 'slice_memberships',
38 'site_privileges')
39
Tony Macke4cee7a2013-04-09 12:45:32 -040040class KeySerializer(serializers.HyperlinkedModelSerializer):
41 id = serializers.Field()
42 user = serializers.HyperlinkedRelatedField(view_name='user-detail')
43 class Meta:
44 model = Key
45 fields = ('id',
46 'name',
47 'key',
48 'type',
49 'blacklisted',
50 'user')
51
Tony Mack5cc16ba2013-04-09 10:30:45 -040052
Tony Mack7130ac32013-03-22 21:58:00 -040053class SliceSerializer(serializers.HyperlinkedModelSerializer):
Tony Macka2dfb372013-04-09 11:02:32 -040054 # HyperlinkedModelSerializer doesn't include the id by default
55 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -040056 site = serializers.HyperlinkedRelatedField(view_name='site-detail')
Tony Mack3a1af412013-04-09 22:36:27 -040057 slivers = serializers.HyperlinkedRelatedField(view_name='sliver-detail')
Tony Mack7130ac32013-03-22 21:58:00 -040058 class Meta:
59 model = Slice
Tony Mack879d14a2013-04-09 09:34:19 -040060 fields = ('id',
Tony Mack3a1af412013-04-09 22:36:27 -040061 'tenant_id',
62 'enabled',
Tony Mack7130ac32013-03-22 21:58:00 -040063 'name',
Tony Mack3a1af412013-04-09 22:36:27 -040064 'url',
Tony Mack7130ac32013-03-22 21:58:00 -040065 'omf_friendly',
66 'description',
67 'slice_url',
Tony Mack3a1af412013-04-09 22:36:27 -040068 'network_id',
69 'router_id',
Tony Mack1e7169e2013-05-07 11:09:57 -040070 'subnet_id',
Tony Mack7130ac32013-03-22 21:58:00 -040071 'site',
Tony Mack3a1af412013-04-09 22:36:27 -040072 'slivers',
Tony Mack7130ac32013-03-22 21:58:00 -040073 'updated',
74 'created')
75
Tony Mack29c287f2013-04-11 21:07:16 -040076class SliceMembershipSerializer(serializers.HyperlinkedModelSerializer):
77 id = serializers.Field()
78 slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
79 user = serializers.HyperlinkedRelatedField(view_name='user-detail')
80 role = serializers.HyperlinkedRelatedField(view_name='role-detail')
81 class Meta:
82 model = SitePrivilege
83 fields = ('id',
84 'user',
85 'slice',
86 'role')
87
Tony Mack7130ac32013-03-22 21:58:00 -040088class SiteSerializer(serializers.HyperlinkedModelSerializer):
89
90 #Experimenting with whether to use ids, hyperlinks, or nested includes
91 #slices = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
92 #slices = serializers.RelatedField(many=True, read_only=True)
93 #slices = SliceSerializer(many=True)
Tony Macka2dfb372013-04-09 11:02:32 -040094 # HyperlinkedModelSerializer doesn't include the id by default
95 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -040096 slices = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='slice-detail')
Tony Mack7130ac32013-03-22 21:58:00 -040097
98 class Meta:
99 model = Site
Tony Mack879d14a2013-04-09 09:34:19 -0400100 fields = ('id',
101 'url',
Tony Mack7130ac32013-03-22 21:58:00 -0400102 'name',
Tony Mack7130ac32013-03-22 21:58:00 -0400103 'slices',
104 'site_url',
105 'enabled',
106 'longitude',
107 'latitude',
108 'login_base',
Tony Macke87bffa2013-04-08 23:18:04 -0400109 'tenant_id',
Tony Mack7130ac32013-03-22 21:58:00 -0400110 'is_public',
111 'abbreviated_name',
112 'updated',
113 'created')
114
Tony Mack29c287f2013-04-11 21:07:16 -0400115class SitePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
116 id = serializers.Field()
117 site = serializers.HyperlinkedRelatedField(view_name='site-detail')
118 user = serializers.HyperlinkedRelatedField(view_name='user-detail')
119 role = serializers.HyperlinkedRelatedField(view_name='role-detail')
120 class Meta:
121 model = SitePrivilege
122 fields = ('id',
123 'user',
124 'site',
125 'role')
126
Siobhan Tullybf1153a2013-05-27 20:53:48 -0400127class DeploymentSerializer(serializers.HyperlinkedModelSerializer):
Tony Mack7130ac32013-03-22 21:58:00 -0400128
Tony Macka2dfb372013-04-09 11:02:32 -0400129 # HyperlinkedModelSerializer doesn't include the id by default
130 id = serializers.Field()
Tony Mack29c287f2013-04-11 21:07:16 -0400131 sites = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail')
Tony Mack7130ac32013-03-22 21:58:00 -0400132 class Meta:
Siobhan Tullybf1153a2013-05-27 20:53:48 -0400133 model = Deployment
Tony Mack879d14a2013-04-09 09:34:19 -0400134 fields = ('id',
135 'name',
Tony Mack7130ac32013-03-22 21:58:00 -0400136 'sites'
137 )
138
Tony Macka2dfb372013-04-09 11:02:32 -0400139class SliverSerializer(serializers.HyperlinkedModelSerializer):
140 # HyperlinkedModelSerializer doesn't include the id by default
141 id = serializers.Field()
Tony Mack29c287f2013-04-11 21:07:16 -0400142 image = serializers.HyperlinkedRelatedField(view_name='image-detail')
143 key = serializers.HyperlinkedRelatedField(view_name='key-detail')
144 slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
145 deployment_network = serializers.HyperlinkedRelatedField(view_name='deployment_network-detail')
146 node = serializers.HyperlinkedRelatedField(view_name='node-detail')
147
148
Tony Mack7130ac32013-03-22 21:58:00 -0400149 #slice = serializers.PrimaryKeyRelatedField(read_only=True)
150
151 class Meta:
152 model = Sliver
153 fields = ('id',
Tony Mack29c287f2013-04-11 21:07:16 -0400154 'instance_id',
Tony Mack5d6598c2013-04-12 12:45:02 -0400155 'name',
Tony Mack79748612013-05-01 14:52:03 -0400156 'instance_name',
Tony Mackd90cdbf2013-04-16 22:48:40 -0400157 'ip',
Tony Mack29c287f2013-04-11 21:07:16 -0400158 'image',
Tony Mack5d6598c2013-04-12 12:45:02 -0400159 'key',
Tony Mack7130ac32013-03-22 21:58:00 -0400160 'slice',
Tony Mack5d6598c2013-04-12 12:45:02 -0400161 'deploymentNetwork',
162 'node')
Tony Mack7130ac32013-03-22 21:58:00 -0400163
Tony Macka2dfb372013-04-09 11:02:32 -0400164class NodeSerializer(serializers.HyperlinkedModelSerializer):
165 # HyperlinkedModelSerializer doesn't include the id by default
166 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -0400167 class Meta:
168 model = Node
169 fields = ('id',
170 'name')
171
Tony Macka2dfb372013-04-09 11:02:32 -0400172class ImageSerializer(serializers.HyperlinkedModelSerializer):
173 # HyperlinkedModelSerializer doesn't include the id by default
174 id = serializers.Field()
Tony Mack53310082013-04-09 09:26:12 -0400175 class Meta:
176 model = Image
Tony Mack879d14a2013-04-09 09:34:19 -0400177 fields = ('id',
178 'image_id',
Tony Mack53310082013-04-09 09:26:12 -0400179 'name',
180 'disk_format',
181 'container_format')
182
Tony Macka28f1cd2013-04-07 20:02:31 -0400183serializerLookUp = {
184 Role: RoleSerializer,
Siobhan Tully30fd4292013-05-10 08:59:56 -0400185 User: UserSerializer,
Tony Macke4cee7a2013-04-09 12:45:32 -0400186 Key: KeySerializer,
Tony Macka28f1cd2013-04-07 20:02:31 -0400187 Site: SiteSerializer,
Tony Mack29c287f2013-04-11 21:07:16 -0400188 SitePrivilege: SitePrivilegeSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400189 Slice: SliceSerializer,
Tony Mack29c287f2013-04-11 21:07:16 -0400190 SliceMembership: SliceMembershipSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400191 Node: NodeSerializer,
192 Sliver: SliverSerializer,
Siobhan Tullybf1153a2013-05-27 20:53:48 -0400193 Deployment: DeploymentSerializer,
Tony Mack53310082013-04-09 09:26:12 -0400194 Image: ImageSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400195 None: None,
196 }
Tony Mack53310082013-04-09 09:26:12 -0400197