blob: 9a1d1189564d6ddfec5c3f92784da4284b55dcdd [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')
Tony Mack3a1af412013-04-09 22:36:27 -040054 slivers = serializers.HyperlinkedRelatedField(view_name='sliver-detail')
Tony Mack930355f2013-04-09 23:23:24 -040055 subnets = serializers.HyperlinkedRelatedField(view_name='subnet-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 'instantiation',
64 'omf_friendly',
65 'description',
66 'slice_url',
Tony Mack3a1af412013-04-09 22:36:27 -040067 'network_id',
68 'router_id',
Tony Mack7130ac32013-03-22 21:58:00 -040069 'site',
Tony Mack3a1af412013-04-09 22:36:27 -040070 'slivers',
71 'subnets',
Tony Mack7130ac32013-03-22 21:58:00 -040072 'updated',
73 'created')
74
75class SiteSerializer(serializers.HyperlinkedModelSerializer):
76
77 #Experimenting with whether to use ids, hyperlinks, or nested includes
78 #slices = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
79 #slices = serializers.RelatedField(many=True, read_only=True)
80 #slices = SliceSerializer(many=True)
Tony Macka2dfb372013-04-09 11:02:32 -040081 # HyperlinkedModelSerializer doesn't include the id by default
82 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -040083 slices = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='slice-detail')
Tony Mack6bdc4752013-04-09 01:05:37 -040084 deployment_networks = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='sitedeploymentnetwork-detail')
Tony Mack7130ac32013-03-22 21:58:00 -040085
86 class Meta:
87 model = Site
Tony Mack879d14a2013-04-09 09:34:19 -040088 fields = ('id',
89 'url',
Tony Mack7130ac32013-03-22 21:58:00 -040090 'name',
Tony Macke1ed6c72013-04-09 00:34:37 -040091 'deployment_networks',
Tony Mack7130ac32013-03-22 21:58:00 -040092 'slices',
93 'site_url',
94 'enabled',
95 'longitude',
96 'latitude',
97 'login_base',
Tony Macke87bffa2013-04-08 23:18:04 -040098 'tenant_id',
Tony Mack7130ac32013-03-22 21:58:00 -040099 'is_public',
100 'abbreviated_name',
101 'updated',
102 'created')
103
104class DeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
105
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 sites = serializers.HyperlinkedRelatedField(view_name='sitedeploymentnetwork-detail')
109 class Meta:
110 model = DeploymentNetwork
Tony Mack879d14a2013-04-09 09:34:19 -0400111 fields = ('id',
112 'name',
Tony Mack7130ac32013-03-22 21:58:00 -0400113 'sites'
114 )
115
116class SiteDeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
Tony Macka2dfb372013-04-09 11:02:32 -0400117 # HyperlinkedModelSerializer doesn't include the id by default
118 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -0400119 site = serializers.HyperlinkedRelatedField(view_name='site-detail')
120 deploymentNetwork = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail')
121
122 class Meta:
123 model = SiteDeploymentNetwork
Tony Macka2dfb372013-04-09 11:02:32 -0400124 fields = ('id',
125 'url',
Tony Mack7130ac32013-03-22 21:58:00 -0400126 'site',
127 'deploymentNetwork')
128
Tony Macka2dfb372013-04-09 11:02:32 -0400129class SliverSerializer(serializers.HyperlinkedModelSerializer):
130 # HyperlinkedModelSerializer doesn't include the id by default
131 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -0400132 slice = serializers.RelatedField(read_only=True)
133 #slice = serializers.PrimaryKeyRelatedField(read_only=True)
134
135 class Meta:
136 model = Sliver
137 fields = ('id',
138 'slice',
Tony Mack53310082013-04-09 09:26:12 -0400139 'name')
Tony Mack7130ac32013-03-22 21:58:00 -0400140
Tony Macka2dfb372013-04-09 11:02:32 -0400141class NodeSerializer(serializers.HyperlinkedModelSerializer):
142 # HyperlinkedModelSerializer doesn't include the id by default
143 id = serializers.Field()
Tony Mack7130ac32013-03-22 21:58:00 -0400144 class Meta:
145 model = Node
146 fields = ('id',
147 'name')
148
Tony Macka2dfb372013-04-09 11:02:32 -0400149class ImageSerializer(serializers.HyperlinkedModelSerializer):
150 # HyperlinkedModelSerializer doesn't include the id by default
151 id = serializers.Field()
Tony Mack53310082013-04-09 09:26:12 -0400152 class Meta:
153 model = Image
Tony Mack879d14a2013-04-09 09:34:19 -0400154 fields = ('id',
155 'image_id',
Tony Mack53310082013-04-09 09:26:12 -0400156 'name',
157 'disk_format',
158 'container_format')
159
Tony Macka2dfb372013-04-09 11:02:32 -0400160class FlavorSerializer(serializers.HyperlinkedModelSerializer):
161 # HyperlinkedModelSerializer doesn't include the id by default
162 id = serializers.Field()
Tony Mack53310082013-04-09 09:26:12 -0400163 class Meta:
164 model = Flavor
Tony Mack879d14a2013-04-09 09:34:19 -0400165 fields = ('id',
166 'flavor_id',
Tony Mack53310082013-04-09 09:26:12 -0400167 'name',
168 'memory_mb',
169 'disk_gb',
170 'vcpus')
Tony Mack7130ac32013-03-22 21:58:00 -0400171
Tony Macka28f1cd2013-04-07 20:02:31 -0400172serializerLookUp = {
173 Role: RoleSerializer,
Tony Macka2dfb372013-04-09 11:02:32 -0400174 User: UserSerializer,
Tony Macke4cee7a2013-04-09 12:45:32 -0400175 Key: KeySerializer,
Tony Macka28f1cd2013-04-07 20:02:31 -0400176 Site: SiteSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400177 Slice: SliceSerializer,
178 Node: NodeSerializer,
179 Sliver: SliverSerializer,
180 DeploymentNetwork: DeploymentNetworkSerializer,
181 SiteDeploymentNetwork: SiteDeploymentNetworkSerializer,
Tony Mack53310082013-04-09 09:26:12 -0400182 Image: ImageSerializer,
183 Flavor: FlavorSerializer,
Tony Mack7130ac32013-03-22 21:58:00 -0400184 None: None,
185 }
Tony Mack53310082013-04-09 09:26:12 -0400186