blob: 0ffd86bd22ff51a6c027bc2b63bd1427b7ba9667 [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')
54
55 class Meta:
56 model = Slice
Tony Mack879d14a2013-04-09 09:34:19 -040057 fields = ('id',
58 'url',
Tony Mack7130ac32013-03-22 21:58:00 -040059 'name',
60 'instantiation',
61 'omf_friendly',
62 'description',
63 'slice_url',
64 'site',
65 'updated',
66 'created')
67
68class SiteSerializer(serializers.HyperlinkedModelSerializer):
69
70 #Experimenting with whether to use ids, hyperlinks, or nested includes
71 #slices = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
72 #slices = serializers.RelatedField(many=True, read_only=True)
73 #slices = SliceSerializer(many=True)
Tony Macka2dfb372013-04-09 11:02:32 -040074 # HyperlinkedModelSerializer doesn't include the id by default
75 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -040076 slices = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='slice-detail')
Tony Mack6bdc4752013-04-09 01:05:37 -040077 deployment_networks = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='sitedeploymentnetwork-detail')
Tony Mack7130ac32013-03-22 21:58:00 -040078
79 class Meta:
80 model = Site
Tony Mack879d14a2013-04-09 09:34:19 -040081 fields = ('id',
82 'url',
Tony Mack7130ac32013-03-22 21:58:00 -040083 'name',
Tony Macke1ed6c72013-04-09 00:34:37 -040084 'deployment_networks',
Tony Mack7130ac32013-03-22 21:58:00 -040085 'slices',
86 'site_url',
87 'enabled',
88 'longitude',
89 'latitude',
90 'login_base',
Tony Macke87bffa2013-04-08 23:18:04 -040091 'tenant_id',
Tony Mack7130ac32013-03-22 21:58:00 -040092 'is_public',
93 'abbreviated_name',
94 'updated',
95 'created')
96
97class DeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
98
Tony Macka2dfb372013-04-09 11:02:32 -040099 # HyperlinkedModelSerializer doesn't include the id by default
100 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -0400101 sites = serializers.HyperlinkedRelatedField(view_name='sitedeploymentnetwork-detail')
102 class Meta:
103 model = DeploymentNetwork
Tony Mack879d14a2013-04-09 09:34:19 -0400104 fields = ('id',
105 'name',
Tony Mack7130ac32013-03-22 21:58:00 -0400106 'sites'
107 )
108
109class SiteDeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
Tony Macka2dfb372013-04-09 11:02:32 -0400110 # HyperlinkedModelSerializer doesn't include the id by default
111 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -0400112 site = serializers.HyperlinkedRelatedField(view_name='site-detail')
113 deploymentNetwork = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail')
114
115 class Meta:
116 model = SiteDeploymentNetwork
Tony Macka2dfb372013-04-09 11:02:32 -0400117 fields = ('id',
118 'url',
Tony Mack7130ac32013-03-22 21:58:00 -0400119 'site',
120 'deploymentNetwork')
121
Tony Macka2dfb372013-04-09 11:02:32 -0400122class SliverSerializer(serializers.HyperlinkedModelSerializer):
123 # HyperlinkedModelSerializer doesn't include the id by default
124 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -0400125 slice = serializers.RelatedField(read_only=True)
126 #slice = serializers.PrimaryKeyRelatedField(read_only=True)
127
128 class Meta:
129 model = Sliver
130 fields = ('id',
131 'slice',
Tony Mack53310082013-04-09 09:26:12 -0400132 'name')
Tony Mack7130ac32013-03-22 21:58:00 -0400133
Tony Macka2dfb372013-04-09 11:02:32 -0400134class NodeSerializer(serializers.HyperlinkedModelSerializer):
135 # HyperlinkedModelSerializer doesn't include the id by default
136 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -0400137 class Meta:
138 model = Node
139 fields = ('id',
140 'name')
141
Tony Macka2dfb372013-04-09 11:02:32 -0400142class ImageSerializer(serializers.HyperlinkedModelSerializer):
143 # HyperlinkedModelSerializer doesn't include the id by default
144 id = serializers.Field()
Tony Mack53310082013-04-09 09:26:12 -0400145 class Meta:
146 model = Image
Tony Mack879d14a2013-04-09 09:34:19 -0400147 fields = ('id',
148 'image_id',
Tony Mack53310082013-04-09 09:26:12 -0400149 'name',
150 'disk_format',
151 'container_format')
152
Tony Macka2dfb372013-04-09 11:02:32 -0400153class FlavorSerializer(serializers.HyperlinkedModelSerializer):
154 # HyperlinkedModelSerializer doesn't include the id by default
155 id = serializers.Field()
Tony Mack53310082013-04-09 09:26:12 -0400156 class Meta:
157 model = Flavor
Tony Mack879d14a2013-04-09 09:34:19 -0400158 fields = ('id',
159 'flavor_id',
Tony Mack53310082013-04-09 09:26:12 -0400160 'name',
161 'memory_mb',
162 'disk_gb',
163 'vcpus')
Tony Mack7130ac32013-03-22 21:58:00 -0400164
Tony Macka28f1cd2013-04-07 20:02:31 -0400165serializerLookUp = {
166 Role: RoleSerializer,
Tony Macka2dfb372013-04-09 11:02:32 -0400167 User: UserSerializer,
Tony Macke4cee7a2013-04-09 12:45:32 -0400168 Key: KeySerializer,
Tony Macka28f1cd2013-04-07 20:02:31 -0400169 Site: SiteSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400170 Slice: SliceSerializer,
171 Node: NodeSerializer,
172 Sliver: SliverSerializer,
173 DeploymentNetwork: DeploymentNetworkSerializer,
174 SiteDeploymentNetwork: SiteDeploymentNetworkSerializer,
Tony Mack53310082013-04-09 09:26:12 -0400175 Image: ImageSerializer,
176 Flavor: FlavorSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400177 None: None,
178 }
Tony Mack53310082013-04-09 09:26:12 -0400179