remove references to OpenStackDriver and OpenStackClient outside of OpenStackManager
[plstackapi.git] / planetstack / core / serializers.py
1 from django.forms import widgets
2 from rest_framework import serializers
3 from core.models import *
4
5
6 class RoleSerializer(serializers.HyperlinkedModelSerializer):
7     # HyperlinkedModelSerializer doesn't include the id by default
8     id = serializers.Field()
9     class Meta:
10         model = Role
11         fields = ('id', 
12                   'role_id',
13                   'role_type')
14
15
16 class UserSerializer(serializers.HyperlinkedModelSerializer):
17     # HyperlinkedModelSerializer doesn't include the id by default
18     id = serializers.Field()
19     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:
23         model = User
24         fields = ('id',
25                   'user_id', 
26                   'kuser_id', 
27                   'firstname', 
28                   'lastname',
29                   'email', 
30                   'password', 
31                   'phone', 
32                   'user_url',
33                   'is_admin',
34                   'site',
35                   'slice_memberships',
36                   'site_privileges')
37                     
38 class 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
50
51 class SliceSerializer(serializers.HyperlinkedModelSerializer):
52     # HyperlinkedModelSerializer doesn't include the id by default
53     id = serializers.Field()
54     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
55     slivers = serializers.HyperlinkedRelatedField(view_name='sliver-detail')
56     subnet= serializers.HyperlinkedRelatedField(view_name='subnet-detail')
57     class Meta:
58         model = Slice
59         fields = ('id',
60                   'tenant_id',
61                   'enabled',
62                   'name',
63                   'url',
64                   'instantiation',
65                   'omf_friendly',
66                   'description',
67                   'slice_url',
68                   'network_id',
69                   'router_id',
70                   'site',
71                   'slivers',
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
110     class Meta:
111         model = Site
112         fields = ('id',
113                   'url',
114                   'name',
115                   'slices',
116                   'site_url',
117                   'enabled',
118                   'longitude',
119                   'latitude',
120                   'login_base',
121                   'tenant_id',
122                   'is_public',
123                   'abbreviated_name',
124                   'updated',
125                   'created')
126
127 class SitePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
128     id = serializers.Field()
129     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
130     user = serializers.HyperlinkedRelatedField(view_name='user-detail')
131     role = serializers.HyperlinkedRelatedField(view_name='role-detail')
132     class Meta:
133         model = SitePrivilege
134         fields = ('id',
135                   'user',
136                   'site',
137                   'role')
138
139 class DeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
140
141     # HyperlinkedModelSerializer doesn't include the id by default
142     id = serializers.Field()
143     sites = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail')
144     class Meta:
145         model = DeploymentNetwork
146         fields = ('id',
147                   'name',
148                   'sites'
149                  )
150
151 class SliverSerializer(serializers.HyperlinkedModelSerializer):
152     # HyperlinkedModelSerializer doesn't include the id by default
153     id = serializers.Field()
154     image = serializers.HyperlinkedRelatedField(view_name='image-detail')
155     key = serializers.HyperlinkedRelatedField(view_name='key-detail')
156     slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
157     deployment_network = serializers.HyperlinkedRelatedField(view_name='deployment_network-detail')
158     node = serializers.HyperlinkedRelatedField(view_name='node-detail')
159     
160     
161     #slice = serializers.PrimaryKeyRelatedField(read_only=True)
162
163     class Meta:
164         model = Sliver
165         fields = ('id',
166                   'instance_id',
167                   'name',
168                   'instance_name',
169                   'ip',
170                   'image',
171                   'key',
172                   'slice',
173                   'deploymentNetwork',
174                   'node')
175
176 class NodeSerializer(serializers.HyperlinkedModelSerializer):
177     # HyperlinkedModelSerializer doesn't include the id by default
178     id = serializers.Field()
179     class Meta:
180         model = Node
181         fields = ('id',
182                  'name')
183
184 class ImageSerializer(serializers.HyperlinkedModelSerializer):
185     # HyperlinkedModelSerializer doesn't include the id by default
186     id = serializers.Field()
187     class Meta:
188         model = Image
189         fields = ('id',
190                   'image_id',
191                   'name',
192                   'disk_format',
193                   'container_format')
194
195 serializerLookUp = { 
196                  Role: RoleSerializer,
197                  User: UserSerializer,
198                  Key: KeySerializer,
199                  Site: SiteSerializer,
200                  SitePrivilege: SitePrivilegeSerializer,
201                  Slice: SliceSerializer,
202                  SliceMembership: SliceMembershipSerializer,
203                  Subnet: SubnetSerializer,
204                  Node: NodeSerializer,
205                  Sliver: SliverSerializer,
206                  DeploymentNetwork: DeploymentNetworkSerializer,
207                  Image: ImageSerializer,
208                  None: None,
209                 }
210