merge latest code
[plstackapi.git] / plstackapi / core / serializers.py
1 from django.forms import widgets
2 from rest_framework import serializers
3 from plstackapi.core.models import *
4
5
6 class RoleSerializer(serializers.HyperlinkedModelSerializer):
7     # HyperlinkedModelSerializer doesn't include the id by default
8     id = serializers.Field()
9  
10     class Meta:
11         model = Role
12         fields = ('id', 
13                   'role_id',
14                   'role_type')
15
16
17 class UserSerializer(serializers.HyperlinkedModelSerializer):
18     # HyperlinkedModelSerializer doesn't include the id by default
19     id = serializers.Field()
20     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                     
37 class 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
49
50 class SliceSerializer(serializers.HyperlinkedModelSerializer):
51     # HyperlinkedModelSerializer doesn't include the id by default
52     id = serializers.Field()
53     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
54     slivers = serializers.HyperlinkedRelatedField(view_name='sliver-detail')
55     subnets = serializers.HyperlinkedRelatedField(view_name='subnet-detail')
56     class Meta:
57         model = Slice
58         fields = ('id',
59                   'tenant_id',
60                   'enabled',
61                   'name',
62                   'url',
63                   'instantiation',
64                   'omf_friendly',
65                   'description',
66                   'slice_url',
67                   'network_id',
68                   'router_id',
69                   'site',
70                   'slivers',
71                   'subnets',
72                   'updated',
73                   'created')
74
75 class 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
87 class 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
100 class 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)
106     # HyperlinkedModelSerializer doesn't include the id by default
107     id = serializers.Field()
108     slices = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='slice-detail')
109     deployment_networks = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='deploymentnetwork-detail')
110
111     class Meta:
112         model = Site
113         fields = ('id',
114                   'url',
115                   'name',
116                   'deployment_networks',
117                   'slices',
118                   'site_url',
119                   'enabled',
120                   'longitude',
121                   'latitude',
122                   'login_base',
123                   'tenant_id',
124                   'is_public',
125                   'abbreviated_name',
126                   'updated',
127                   'created')
128
129 class SitePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
130     id = serializers.Field()
131     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
132     user = serializers.HyperlinkedRelatedField(view_name='user-detail')
133     role = serializers.HyperlinkedRelatedField(view_name='role-detail')
134     class Meta:
135         model = SitePrivilege
136         fields = ('id',
137                   'user',
138                   'site',
139                   'role')
140
141 class DeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
142
143     # HyperlinkedModelSerializer doesn't include the id by default
144     id = serializers.Field()
145     sites = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail')
146     class Meta:
147         model = DeploymentNetwork
148         fields = ('id',
149                   'name',
150                   'sites'
151                  )
152
153 class SliverSerializer(serializers.HyperlinkedModelSerializer):
154     # HyperlinkedModelSerializer doesn't include the id by default
155     id = serializers.Field()
156     flavor = serializers.HyperlinkedRelatedField(view_name='flavor-detail')
157     image = serializers.HyperlinkedRelatedField(view_name='image-detail')
158     key = serializers.HyperlinkedRelatedField(view_name='key-detail')
159     slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
160     deployment_network = serializers.HyperlinkedRelatedField(view_name='deployment_network-detail')
161     node = serializers.HyperlinkedRelatedField(view_name='node-detail')
162     
163     
164     #slice = serializers.PrimaryKeyRelatedField(read_only=True)
165
166     class Meta:
167         model = Sliver
168         fields = ('id',
169                   'instance_id',
170                   'name'
171                   'flavor',
172                   'image',
173                   'key'
174                   'slice',
175                   'deployment_network',
176                   'noode')
177
178 class NodeSerializer(serializers.HyperlinkedModelSerializer):
179     # HyperlinkedModelSerializer doesn't include the id by default
180     id = serializers.Field()
181     class Meta:
182         model = Node
183         fields = ('id',
184                  'name')
185
186 class ImageSerializer(serializers.HyperlinkedModelSerializer):
187     # HyperlinkedModelSerializer doesn't include the id by default
188     id = serializers.Field()
189     class Meta:
190         model = Image
191         fields = ('id',
192                   'image_id',
193                   'name',
194                   'disk_format',
195                   'container_format')
196
197 class FlavorSerializer(serializers.HyperlinkedModelSerializer):
198     # HyperlinkedModelSerializer doesn't include the id by default
199     id = serializers.Field()
200     class Meta:
201         model = Flavor
202         fields = ('id',
203                   'flavor_id',
204                   'name',
205                   'memory_mb',
206                   'disk_gb',
207                   'vcpus')
208
209 serializerLookUp = { 
210                  Role: RoleSerializer,
211                  User: UserSerializer,
212                  Key: KeySerializer,
213                  Site: SiteSerializer,
214                  SitePrivilege: SitePrivilegeSerializer,
215                  Slice: SliceSerializer,
216                  SliceMembership: SliceMembershipSerializer,
217                  Subnet: SubnetSerializer,
218                  Node: NodeSerializer,
219                  Sliver: SliverSerializer,
220                  DeploymentNetwork: DeploymentNetworkSerializer,
221                  Image: ImageSerializer,
222                  Flavor: FlavorSerializer, 
223                  None: None,
224                 }
225