91ed73a4dbbdd817da968dec1dcdca7daa939f27
[plstackapi.git] / planetstack / genapi.py
1 from rest_framework.decorators import api_view
2 from rest_framework.response import Response
3 from rest_framework.reverse import reverse
4 from rest_framework import serializers
5 from rest_framework import generics
6 from core.models import *
7 from django.forms import widgets
8
9 """
10         Schema of the generator object:
11                 all: Set of all Model objects
12                 all_if(regex): Set of Model objects that match regex
13         
14         Model object:
15                 plural: English plural of object name
16                 camel: CamelCase version of object name
17                 refs: list of references to other Model objects
18                 props: list of properties minus refs
19
20         TODO: Deal with subnets
21 """
22
23 # Based on api_root.py
24
25 @api_view(['GET'])
26 def api_root(request, format=None):
27     return Response({
28                 'serviceattributes': reverse('serviceattribute-list', request=request, format=format),
29                 'images': reverse('image-list', request=request, format=format),
30                 'networkparameters': reverse('networkparameter-list', request=request, format=format),
31                 'sites': reverse('site-list', request=request, format=format),
32                 'sliceroles': reverse('slicerole-list', request=request, format=format),
33                 'tags': reverse('tag-list', request=request, format=format),
34                 'invoices': reverse('invoice-list', request=request, format=format),
35                 'planetstackroles': reverse('planetstackrole-list', request=request, format=format),
36                 'sliceprivileges': reverse('sliceprivilege-list', request=request, format=format),
37                 'networkslivers': reverse('networksliver-list', request=request, format=format),
38                 'slices': reverse('slice-list', request=request, format=format),
39                 'networks': reverse('network-list', request=request, format=format),
40                 'services': reverse('service-list', request=request, format=format),
41                 'serviceclasses': reverse('serviceclass-list', request=request, format=format),
42                 'siteroles': reverse('siterole-list', request=request, format=format),
43                 'charges': reverse('charge-list', request=request, format=format),
44                 'roles': reverse('role-list', request=request, format=format),
45                 'usableobjects': reverse('usableobject-list', request=request, format=format),
46                 'slivers': reverse('sliver-list', request=request, format=format),
47                 'nodes': reverse('node-list', request=request, format=format),
48                 'reservedresources': reverse('reservedresource-list', request=request, format=format),
49                 'payments': reverse('payment-list', request=request, format=format),
50                 'networkslices': reverse('networkslice-list', request=request, format=format),
51                 'planetstackprivileges': reverse('planetstackprivilege-list', request=request, format=format),
52                 'users': reverse('user-list', request=request, format=format),
53                 'deployments': reverse('deployment-list', request=request, format=format),
54                 'reservations': reverse('reservation-list', request=request, format=format),
55                 'siteprivileges': reverse('siteprivilege-list', request=request, format=format),
56                 'planetstacks': reverse('planetstack-list', request=request, format=format),
57                 'accounts': reverse('account-list', request=request, format=format),
58                 'networkparametertypes': reverse('networkparametertype-list', request=request, format=format),
59                 'sitedeploymentses': reverse('sitedeployments-list', request=request, format=format),
60                 'deploymentprivileges': reverse('deploymentprivilege-list', request=request, format=format),
61                 'deploymentroles': reverse('deploymentrole-list', request=request, format=format),
62                 'projects': reverse('project-list', request=request, format=format),
63                 'slicetags': reverse('slicetag-list', request=request, format=format),
64                 'networktemplates': reverse('networktemplate-list', request=request, format=format),
65                 'routers': reverse('router-list', request=request, format=format),
66                 'serviceresources': reverse('serviceresource-list', request=request, format=format),
67                 
68     })
69
70 # Based on serializers.py
71
72
73
74 class ServiceAttributeSerializer(serializers.HyperlinkedModelSerializer):
75         id = serializers.Field()
76         
77         
78         service = serializers.HyperlinkedRelatedField(read_only=True, view_name='service-detail')
79         
80         
81         class Meta:
82                 model = ServiceAttribute
83                 fields = ('id','created','updated','enacted','name','value','service',)
84
85
86 class ImageSerializer(serializers.HyperlinkedModelSerializer):
87         id = serializers.Field()
88         
89         
90         slivers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='sliver-detail')
91         
92         
93         class Meta:
94                 model = Image
95                 fields = ('id','created','updated','enacted','image_id','name','disk_format','container_format','slivers',)
96
97
98 class NetworkParameterSerializer(serializers.HyperlinkedModelSerializer):
99         id = serializers.Field()
100         
101         class Meta:
102                 model = NetworkParameter
103                 fields = ('id','created','updated','enacted','parameter','value','content_type','object_id',)
104
105
106 class SiteSerializer(serializers.HyperlinkedModelSerializer):
107         id = serializers.Field()
108         
109         
110         slices = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='slice-detail')
111         
112         
113         
114         nodes = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='node-detail')
115         
116         
117         
118         users = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='user-detail')
119         
120         
121         
122         site_privileges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='siteprivilege-detail')
123         
124         
125         
126         accounts = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='account-detail')
127         
128         
129         class Meta:
130                 model = Site
131                 fields = ('id','created','updated','enacted','tenant_id','name','site_url','enabled','location','longitude','latitude','login_base','is_public','abbreviated_name','slices','nodes','users','site_privileges','accounts',)
132
133
134 class SliceRoleSerializer(serializers.HyperlinkedModelSerializer):
135         id = serializers.Field()
136         
137         class Meta:
138                 model = SliceRole
139                 fields = ('id','created','updated','enacted','role',)
140
141
142 class TagSerializer(serializers.HyperlinkedModelSerializer):
143         id = serializers.Field()
144         
145         
146         sites = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='site-detail')
147         
148         
149         
150         serviceattributes = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='site-detail')
151         
152         
153         
154         service = serializers.HyperlinkedRelatedField(read_only=True, view_name='service-detail')
155         
156         
157         
158         slices = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='slice-detail')
159         
160         
161         
162         service = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='slice-detail')
163         
164         
165         
166         slivers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='sliver-detail')
167         
168         
169         
170         slivers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='sliver-detail')
171         
172         
173         
174         nodes = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='node-detail')
175         
176         
177         
178         nodes = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='node-detail')
179         
180         
181         class Meta:
182                 model = Tag
183                 fields = ('id','created','updated','enacted','name','value','content_type','object_id','sites','serviceattributes','service','slices','service','slivers','slivers','nodes','nodes',)
184
185
186 class InvoiceSerializer(serializers.HyperlinkedModelSerializer):
187         id = serializers.Field()
188         
189         
190         account = serializers.HyperlinkedRelatedField(read_only=True, view_name='account-detail')
191         
192         
193         
194         charges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='charge-detail')
195         
196         
197         class Meta:
198                 model = Invoice
199                 fields = ('id','created','updated','enacted','date','account','charges',)
200
201
202 class PlanetStackRoleSerializer(serializers.HyperlinkedModelSerializer):
203         id = serializers.Field()
204         
205         class Meta:
206                 model = PlanetStackRole
207                 fields = ('id','created','updated','enacted','role',)
208
209
210 class SlicePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
211         id = serializers.Field()
212         
213         
214         user = serializers.HyperlinkedRelatedField(read_only=True, view_name='user-detail')
215         
216         
217         
218         slice = serializers.HyperlinkedRelatedField(read_only=True, view_name='slice-detail')
219         
220         
221         
222         role = serializers.HyperlinkedRelatedField(read_only=True, view_name='role-detail')
223         
224         
225         class Meta:
226                 model = SlicePrivilege
227                 fields = ('id','created','updated','enacted','user','slice','role',)
228
229
230 class NetworkSliverSerializer(serializers.HyperlinkedModelSerializer):
231         id = serializers.Field()
232         
233         
234         network = serializers.HyperlinkedRelatedField(read_only=True, view_name='network-detail')
235         
236         
237         
238         sliver = serializers.HyperlinkedRelatedField(read_only=True, view_name='sliver-detail')
239         
240         
241         class Meta:
242                 model = NetworkSliver
243                 fields = ('id','created','updated','enacted','ip','port_id','network','sliver',)
244
245
246 class SliceSerializer(serializers.HyperlinkedModelSerializer):
247         id = serializers.Field()
248         
249         
250         slice_privileges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='sliceprivilege-detail')
251         
252         
253         
254         site = serializers.HyperlinkedRelatedField(read_only=True, view_name='site-detail')
255         
256         
257         
258         service = serializers.HyperlinkedRelatedField(read_only=True, view_name='service-detail')
259         
260         
261         
262         networks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')
263         
264         
265         
266         service = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')
267         
268         
269         
270         networks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')
271         
272         
273         
274         service = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')
275         
276         
277         
278         charges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='charge-detail')
279         
280         
281         
282         slivers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='sliver-detail')
283         
284         
285         
286         reservations = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='reservation-detail')
287         
288         
289         
290         slicetags = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='slicetag-detail')
291         
292         
293         class Meta:
294                 model = Slice
295                 fields = ('id','created','updated','enacted','tenant_id','name','enabled','omf_friendly','description','slice_url','network_id','router_id','subnet_id','serviceClass','creator','slice_privileges','site','service','networks','service','networks','service','charges','slivers','reservations','slicetags',)
296
297
298 class NetworkSerializer(serializers.HyperlinkedModelSerializer):
299         id = serializers.Field()
300         
301         
302         routers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='router-detail')
303         
304         
305         
306         slicetags = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='router-detail')
307         
308         
309         
310         routers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='router-detail')
311         
312         
313         
314         slicetags = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='router-detail')
315         
316         
317         class Meta:
318                 model = Network
319                 fields = ('id','created','updated','enacted','name','template','subnet','ports','labels','owner','guaranteedBandwidth','permitAllSlices','network_id','router_id','subnet_id','routers','slicetags','routers','slicetags',)
320
321
322 class ServiceSerializer(serializers.HyperlinkedModelSerializer):
323         id = serializers.Field()
324         
325         
326         serviceattributes = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='serviceattribute-detail')
327         
328         
329         
330         tags = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='tag-detail')
331         
332         
333         
334         service = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='slice-detail')
335         
336         
337         class Meta:
338                 model = Service
339                 fields = ('id','created','updated','enacted','description','enabled','name','versionNumber','published','serviceattributes','tags','service',)
340
341
342 class ServiceClassSerializer(serializers.HyperlinkedModelSerializer):
343         id = serializers.Field()
344         
345         class Meta:
346                 model = ServiceClass
347                 fields = ('id','created','updated','enacted','name','description','commitment','membershipFee','membershipFeeMonths','upgradeRequiresApproval',)
348
349
350 class SiteRoleSerializer(serializers.HyperlinkedModelSerializer):
351         id = serializers.Field()
352         
353         class Meta:
354                 model = SiteRole
355                 fields = ('id','created','updated','enacted','role',)
356
357
358 class ChargeSerializer(serializers.HyperlinkedModelSerializer):
359         id = serializers.Field()
360         
361         
362         account = serializers.HyperlinkedRelatedField(read_only=True, view_name='account-detail')
363         
364         
365         
366         slice = serializers.HyperlinkedRelatedField(read_only=True, view_name='slice-detail')
367         
368         
369         
370         invoice = serializers.HyperlinkedRelatedField(read_only=True, view_name='invoice-detail')
371         
372         
373         class Meta:
374                 model = Charge
375                 fields = ('id','created','updated','enacted','kind','state','date','object','amount','coreHours','account','slice','invoice',)
376
377
378 class RoleSerializer(serializers.HyperlinkedModelSerializer):
379         id = serializers.Field()
380         
381         class Meta:
382                 model = Role
383                 fields = ('id','created','updated','enacted','role_type','role','description','content_type',)
384
385
386 class UsableObjectSerializer(serializers.HyperlinkedModelSerializer):
387         id = serializers.Field()
388         
389         class Meta:
390                 model = UsableObject
391                 fields = ('id','created','updated','enacted','name',)
392
393
394 class SliverSerializer(serializers.HyperlinkedModelSerializer):
395         id = serializers.Field()
396         
397         
398         networks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')
399         
400         
401         
402         service = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')
403         
404         
405         
406         service = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='serviceclass-detail')
407         
408         
409         
410         image = serializers.HyperlinkedRelatedField(read_only=True, view_name='image-detail')
411         
412         
413         
414         slice = serializers.HyperlinkedRelatedField(read_only=True, view_name='slice-detail')
415         
416         
417         
418         node = serializers.HyperlinkedRelatedField(read_only=True, view_name='node-detail')
419         
420         
421         
422         reservedResourrces = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='reservedresource-detail')
423         
424         
425         class Meta:
426                 model = Sliver
427                 fields = ('id','created','updated','enacted','instance_id','name','instance_name','ip','creator','deploymentNetwork','numberCores','networks','service','service','image','slice','node','reservedResourrces',)
428
429
430 class NodeSerializer(serializers.HyperlinkedModelSerializer):
431         id = serializers.Field()
432         
433         
434         slivers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='sliver-detail')
435         
436         
437         
438         site = serializers.HyperlinkedRelatedField(read_only=True, view_name='site-detail')
439         
440         
441         
442         deployment = serializers.HyperlinkedRelatedField(read_only=True, view_name='deployment-detail')
443         
444         
445         class Meta:
446                 model = Node
447                 fields = ('id','created','updated','enacted','name','slivers','site','deployment',)
448
449
450 class ReservedResourceSerializer(serializers.HyperlinkedModelSerializer):
451         id = serializers.Field()
452         
453         
454         sliver = serializers.HyperlinkedRelatedField(read_only=True, view_name='sliver-detail')
455         
456         
457         class Meta:
458                 model = ReservedResource
459                 fields = ('id','created','updated','enacted','resource','quantity','reservationSet','sliver',)
460
461
462 class PaymentSerializer(serializers.HyperlinkedModelSerializer):
463         id = serializers.Field()
464         
465         
466         account = serializers.HyperlinkedRelatedField(read_only=True, view_name='account-detail')
467         
468         
469         class Meta:
470                 model = Payment
471                 fields = ('id','created','updated','enacted','amount','date','account',)
472
473
474 class NetworkSliceSerializer(serializers.HyperlinkedModelSerializer):
475         id = serializers.Field()
476         
477         
478         network = serializers.HyperlinkedRelatedField(read_only=True, view_name='network-detail')
479         
480         
481         
482         slice = serializers.HyperlinkedRelatedField(read_only=True, view_name='slice-detail')
483         
484         
485         class Meta:
486                 model = NetworkSlice
487                 fields = ('id','created','updated','enacted','network','slice',)
488
489
490 class PlanetStackPrivilegeSerializer(serializers.HyperlinkedModelSerializer):
491         id = serializers.Field()
492         
493         
494         user = serializers.HyperlinkedRelatedField(read_only=True, view_name='user-detail')
495         
496         
497         
498         planetstack = serializers.HyperlinkedRelatedField(read_only=True, view_name='planetstack-detail')
499         
500         
501         
502         role = serializers.HyperlinkedRelatedField(read_only=True, view_name='role-detail')
503         
504         
505         class Meta:
506                 model = PlanetStackPrivilege
507                 fields = ('id','created','updated','enacted','user','planetstack','role',)
508
509
510 class UserSerializer(serializers.HyperlinkedModelSerializer):
511         id = serializers.Field()
512         
513         
514         slice_privileges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='sliceprivilege-detail')
515         
516         
517         
518         planetstack_privileges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='planetstackprivilege-detail')
519         
520         
521         
522         site = serializers.HyperlinkedRelatedField(read_only=True, view_name='site-detail')
523         
524         
525         
526         site_privileges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='siteprivilege-detail')
527         
528         
529         
530         deployment_privileges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='deploymentprivilege-detail')
531         
532         
533         class Meta:
534                 model = User
535                 fields = ('id','password','last_login','email','username','kuser_id','firstname','lastname','phone','user_url','public_key','is_active','is_admin','is_staff','is_readonly','created','updated','enacted','timezone','slice_privileges','planetstack_privileges','site','site_privileges','deployment_privileges',)
536
537
538 class DeploymentSerializer(serializers.HyperlinkedModelSerializer):
539         id = serializers.Field()
540         
541         
542         sites = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='site-detail')
543         
544         
545         
546         serviceattributes = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='site-detail')
547         
548         
549         
550         nodes = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='node-detail')
551         
552         
553         
554         deployment_privileges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='deploymentprivilege-detail')
555         
556         
557         class Meta:
558                 model = Deployment
559                 fields = ('id','created','updated','enacted','name','sites','serviceattributes','nodes','deployment_privileges',)
560
561
562 class ReservationSerializer(serializers.HyperlinkedModelSerializer):
563         id = serializers.Field()
564         
565         
566         slice = serializers.HyperlinkedRelatedField(read_only=True, view_name='slice-detail')
567         
568         
569         class Meta:
570                 model = Reservation
571                 fields = ('id','created','updated','enacted','startTime','duration','slice',)
572
573
574 class SitePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
575         id = serializers.Field()
576         
577         
578         user = serializers.HyperlinkedRelatedField(read_only=True, view_name='user-detail')
579         
580         
581         
582         site = serializers.HyperlinkedRelatedField(read_only=True, view_name='site-detail')
583         
584         
585         
586         role = serializers.HyperlinkedRelatedField(read_only=True, view_name='role-detail')
587         
588         
589         class Meta:
590                 model = SitePrivilege
591                 fields = ('id','created','updated','enacted','user','site','role',)
592
593
594 class PlanetStackSerializer(serializers.HyperlinkedModelSerializer):
595         id = serializers.Field()
596         
597         
598         planetstack_privileges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='planetstackprivilege-detail')
599         
600         
601         class Meta:
602                 model = PlanetStack
603                 fields = ('id','created','updated','enacted','description','planetstack_privileges',)
604
605
606 class AccountSerializer(serializers.HyperlinkedModelSerializer):
607         id = serializers.Field()
608         
609         
610         invoices = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='invoice-detail')
611         
612         
613         
614         charges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='charge-detail')
615         
616         
617         
618         payments = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='payment-detail')
619         
620         
621         
622         site = serializers.HyperlinkedRelatedField(read_only=True, view_name='site-detail')
623         
624         
625         class Meta:
626                 model = Account
627                 fields = ('id','created','updated','enacted','invoices','charges','payments','site',)
628
629
630 class NetworkParameterTypeSerializer(serializers.HyperlinkedModelSerializer):
631         id = serializers.Field()
632         
633         class Meta:
634                 model = NetworkParameterType
635                 fields = ('id','created','updated','enacted','name','description',)
636
637
638 class SiteDeploymentsSerializer(serializers.HyperlinkedModelSerializer):
639         id = serializers.Field()
640         
641         
642         site = serializers.HyperlinkedRelatedField(read_only=True, view_name='site-detail')
643         
644         
645         
646         deployment = serializers.HyperlinkedRelatedField(read_only=True, view_name='deployment-detail')
647         
648         
649         class Meta:
650                 model = SiteDeployments
651                 fields = ('id','created','updated','enacted','site','deployment',)
652
653
654 class DeploymentPrivilegeSerializer(serializers.HyperlinkedModelSerializer):
655         id = serializers.Field()
656         
657         
658         user = serializers.HyperlinkedRelatedField(read_only=True, view_name='user-detail')
659         
660         
661         
662         deployment = serializers.HyperlinkedRelatedField(read_only=True, view_name='deployment-detail')
663         
664         
665         
666         role = serializers.HyperlinkedRelatedField(read_only=True, view_name='role-detail')
667         
668         
669         class Meta:
670                 model = DeploymentPrivilege
671                 fields = ('id','created','updated','enacted','user','deployment','role',)
672
673
674 class DeploymentRoleSerializer(serializers.HyperlinkedModelSerializer):
675         id = serializers.Field()
676         
677         class Meta:
678                 model = DeploymentRole
679                 fields = ('id','created','updated','enacted','role',)
680
681
682 class ProjectSerializer(serializers.HyperlinkedModelSerializer):
683         id = serializers.Field()
684         
685         class Meta:
686                 model = Project
687                 fields = ('id','created','updated','enacted','name',)
688
689
690 class SliceTagSerializer(serializers.HyperlinkedModelSerializer):
691         id = serializers.Field()
692         
693         
694         slice = serializers.HyperlinkedRelatedField(read_only=True, view_name='slice-detail')
695         
696         
697         class Meta:
698                 model = SliceTag
699                 fields = ('id','created','updated','enacted','name','value','slice',)
700
701
702 class NetworkTemplateSerializer(serializers.HyperlinkedModelSerializer):
703         id = serializers.Field()
704         
705         class Meta:
706                 model = NetworkTemplate
707                 fields = ('id','created','updated','enacted','name','description','guaranteedBandwidth','visibility','translation','sharedNetworkName','sharedNetworkId',)
708
709
710 class RouterSerializer(serializers.HyperlinkedModelSerializer):
711         id = serializers.Field()
712         
713         class Meta:
714                 model = Router
715                 fields = ('id','created','updated','enacted','name','owner',)
716
717
718 class ServiceResourceSerializer(serializers.HyperlinkedModelSerializer):
719         id = serializers.Field()
720         
721         class Meta:
722                 model = ServiceResource
723                 fields = ('id','created','updated','enacted','serviceClass','name','maxUnitsDeployment','maxUnitsNode','maxDuration','bucketInRate','bucketMaxSize','cost','calendarReservable',)
724
725
726 serializerLookUp = { 
727
728                  ServiceAttribute: ServiceAttributeSerializer,
729
730                  Image: ImageSerializer,
731
732                  NetworkParameter: NetworkParameterSerializer,
733
734                  Site: SiteSerializer,
735
736                  SliceRole: SliceRoleSerializer,
737
738                  Tag: TagSerializer,
739
740                  Invoice: InvoiceSerializer,
741
742                  PlanetStackRole: PlanetStackRoleSerializer,
743
744                  SlicePrivilege: SlicePrivilegeSerializer,
745
746                  NetworkSliver: NetworkSliverSerializer,
747
748                  Slice: SliceSerializer,
749
750                  Network: NetworkSerializer,
751
752                  Service: ServiceSerializer,
753
754                  ServiceClass: ServiceClassSerializer,
755
756                  SiteRole: SiteRoleSerializer,
757
758                  Charge: ChargeSerializer,
759
760                  Role: RoleSerializer,
761
762                  UsableObject: UsableObjectSerializer,
763
764                  Sliver: SliverSerializer,
765
766                  Node: NodeSerializer,
767
768                  ReservedResource: ReservedResourceSerializer,
769
770                  Payment: PaymentSerializer,
771
772                  NetworkSlice: NetworkSliceSerializer,
773
774                  PlanetStackPrivilege: PlanetStackPrivilegeSerializer,
775
776                  User: UserSerializer,
777
778                  Deployment: DeploymentSerializer,
779
780                  Reservation: ReservationSerializer,
781
782                  SitePrivilege: SitePrivilegeSerializer,
783
784                  PlanetStack: PlanetStackSerializer,
785
786                  Account: AccountSerializer,
787
788                  NetworkParameterType: NetworkParameterTypeSerializer,
789
790                  SiteDeployments: SiteDeploymentsSerializer,
791
792                  DeploymentPrivilege: DeploymentPrivilegeSerializer,
793
794                  DeploymentRole: DeploymentRoleSerializer,
795
796                  Project: ProjectSerializer,
797
798                  SliceTag: SliceTagSerializer,
799
800                  NetworkTemplate: NetworkTemplateSerializer,
801
802                  Router: RouterSerializer,
803
804                  ServiceResource: ServiceResourceSerializer,
805
806                  None: None,
807                 }
808
809 # Based on core/views/*.py
810
811
812 class ServiceAttributeList(generics.ListCreateAPIView):
813     queryset = ServiceAttribute.objects.select_related().all()
814     serializer_class = ServiceAttributeSerializer
815
816 class ServiceAttributeDetail(generics.RetrieveUpdateDestroyAPIView):
817     queryset = ServiceAttribute.objects.select_related().all()
818     serializer_class = ServiceAttributeSerializer
819
820
821
822 class ImageList(generics.ListCreateAPIView):
823     queryset = Image.objects.select_related().all()
824     serializer_class = ImageSerializer
825
826 class ImageDetail(generics.RetrieveUpdateDestroyAPIView):
827     queryset = Image.objects.select_related().all()
828     serializer_class = ImageSerializer
829
830
831
832 class NetworkParameterList(generics.ListCreateAPIView):
833     queryset = NetworkParameter.objects.select_related().all()
834     serializer_class = NetworkParameterSerializer
835
836 class NetworkParameterDetail(generics.RetrieveUpdateDestroyAPIView):
837     queryset = NetworkParameter.objects.select_related().all()
838     serializer_class = NetworkParameterSerializer
839
840
841
842 class SiteList(generics.ListCreateAPIView):
843     queryset = Site.objects.select_related().all()
844     serializer_class = SiteSerializer
845
846 class SiteDetail(generics.RetrieveUpdateDestroyAPIView):
847     queryset = Site.objects.select_related().all()
848     serializer_class = SiteSerializer
849
850
851
852 class SliceRoleList(generics.ListCreateAPIView):
853     queryset = SliceRole.objects.select_related().all()
854     serializer_class = SliceRoleSerializer
855
856 class SliceRoleDetail(generics.RetrieveUpdateDestroyAPIView):
857     queryset = SliceRole.objects.select_related().all()
858     serializer_class = SliceRoleSerializer
859
860
861
862 class TagList(generics.ListCreateAPIView):
863     queryset = Tag.objects.select_related().all()
864     serializer_class = TagSerializer
865
866 class TagDetail(generics.RetrieveUpdateDestroyAPIView):
867     queryset = Tag.objects.select_related().all()
868     serializer_class = TagSerializer
869
870
871
872 class InvoiceList(generics.ListCreateAPIView):
873     queryset = Invoice.objects.select_related().all()
874     serializer_class = InvoiceSerializer
875
876 class InvoiceDetail(generics.RetrieveUpdateDestroyAPIView):
877     queryset = Invoice.objects.select_related().all()
878     serializer_class = InvoiceSerializer
879
880
881
882 class PlanetStackRoleList(generics.ListCreateAPIView):
883     queryset = PlanetStackRole.objects.select_related().all()
884     serializer_class = PlanetStackRoleSerializer
885
886 class PlanetStackRoleDetail(generics.RetrieveUpdateDestroyAPIView):
887     queryset = PlanetStackRole.objects.select_related().all()
888     serializer_class = PlanetStackRoleSerializer
889
890
891
892 class SlicePrivilegeList(generics.ListCreateAPIView):
893     queryset = SlicePrivilege.objects.select_related().all()
894     serializer_class = SlicePrivilegeSerializer
895
896 class SlicePrivilegeDetail(generics.RetrieveUpdateDestroyAPIView):
897     queryset = SlicePrivilege.objects.select_related().all()
898     serializer_class = SlicePrivilegeSerializer
899
900
901
902 class NetworkSliverList(generics.ListCreateAPIView):
903     queryset = NetworkSliver.objects.select_related().all()
904     serializer_class = NetworkSliverSerializer
905
906 class NetworkSliverDetail(generics.RetrieveUpdateDestroyAPIView):
907     queryset = NetworkSliver.objects.select_related().all()
908     serializer_class = NetworkSliverSerializer
909
910
911
912 class SliceList(generics.ListCreateAPIView):
913     queryset = Slice.objects.select_related().all()
914     serializer_class = SliceSerializer
915
916 class SliceDetail(generics.RetrieveUpdateDestroyAPIView):
917     queryset = Slice.objects.select_related().all()
918     serializer_class = SliceSerializer
919
920
921
922 class NetworkList(generics.ListCreateAPIView):
923     queryset = Network.objects.select_related().all()
924     serializer_class = NetworkSerializer
925
926 class NetworkDetail(generics.RetrieveUpdateDestroyAPIView):
927     queryset = Network.objects.select_related().all()
928     serializer_class = NetworkSerializer
929
930
931
932 class ServiceList(generics.ListCreateAPIView):
933     queryset = Service.objects.select_related().all()
934     serializer_class = ServiceSerializer
935
936 class ServiceDetail(generics.RetrieveUpdateDestroyAPIView):
937     queryset = Service.objects.select_related().all()
938     serializer_class = ServiceSerializer
939
940
941
942 class ServiceClassList(generics.ListCreateAPIView):
943     queryset = ServiceClass.objects.select_related().all()
944     serializer_class = ServiceClassSerializer
945
946 class ServiceClassDetail(generics.RetrieveUpdateDestroyAPIView):
947     queryset = ServiceClass.objects.select_related().all()
948     serializer_class = ServiceClassSerializer
949
950
951
952 class SiteRoleList(generics.ListCreateAPIView):
953     queryset = SiteRole.objects.select_related().all()
954     serializer_class = SiteRoleSerializer
955
956 class SiteRoleDetail(generics.RetrieveUpdateDestroyAPIView):
957     queryset = SiteRole.objects.select_related().all()
958     serializer_class = SiteRoleSerializer
959
960
961
962 class ChargeList(generics.ListCreateAPIView):
963     queryset = Charge.objects.select_related().all()
964     serializer_class = ChargeSerializer
965
966 class ChargeDetail(generics.RetrieveUpdateDestroyAPIView):
967     queryset = Charge.objects.select_related().all()
968     serializer_class = ChargeSerializer
969
970
971
972 class RoleList(generics.ListCreateAPIView):
973     queryset = Role.objects.select_related().all()
974     serializer_class = RoleSerializer
975
976 class RoleDetail(generics.RetrieveUpdateDestroyAPIView):
977     queryset = Role.objects.select_related().all()
978     serializer_class = RoleSerializer
979
980
981
982 class UsableObjectList(generics.ListCreateAPIView):
983     queryset = UsableObject.objects.select_related().all()
984     serializer_class = UsableObjectSerializer
985
986 class UsableObjectDetail(generics.RetrieveUpdateDestroyAPIView):
987     queryset = UsableObject.objects.select_related().all()
988     serializer_class = UsableObjectSerializer
989
990
991
992 class SliverList(generics.ListCreateAPIView):
993     queryset = Sliver.objects.select_related().all()
994     serializer_class = SliverSerializer
995
996 class SliverDetail(generics.RetrieveUpdateDestroyAPIView):
997     queryset = Sliver.objects.select_related().all()
998     serializer_class = SliverSerializer
999
1000
1001
1002 class NodeList(generics.ListCreateAPIView):
1003     queryset = Node.objects.select_related().all()
1004     serializer_class = NodeSerializer
1005
1006 class NodeDetail(generics.RetrieveUpdateDestroyAPIView):
1007     queryset = Node.objects.select_related().all()
1008     serializer_class = NodeSerializer
1009
1010
1011
1012 class ReservedResourceList(generics.ListCreateAPIView):
1013     queryset = ReservedResource.objects.select_related().all()
1014     serializer_class = ReservedResourceSerializer
1015
1016 class ReservedResourceDetail(generics.RetrieveUpdateDestroyAPIView):
1017     queryset = ReservedResource.objects.select_related().all()
1018     serializer_class = ReservedResourceSerializer
1019
1020
1021
1022 class PaymentList(generics.ListCreateAPIView):
1023     queryset = Payment.objects.select_related().all()
1024     serializer_class = PaymentSerializer
1025
1026 class PaymentDetail(generics.RetrieveUpdateDestroyAPIView):
1027     queryset = Payment.objects.select_related().all()
1028     serializer_class = PaymentSerializer
1029
1030
1031
1032 class NetworkSliceList(generics.ListCreateAPIView):
1033     queryset = NetworkSlice.objects.select_related().all()
1034     serializer_class = NetworkSliceSerializer
1035
1036 class NetworkSliceDetail(generics.RetrieveUpdateDestroyAPIView):
1037     queryset = NetworkSlice.objects.select_related().all()
1038     serializer_class = NetworkSliceSerializer
1039
1040
1041
1042 class PlanetStackPrivilegeList(generics.ListCreateAPIView):
1043     queryset = PlanetStackPrivilege.objects.select_related().all()
1044     serializer_class = PlanetStackPrivilegeSerializer
1045
1046 class PlanetStackPrivilegeDetail(generics.RetrieveUpdateDestroyAPIView):
1047     queryset = PlanetStackPrivilege.objects.select_related().all()
1048     serializer_class = PlanetStackPrivilegeSerializer
1049
1050
1051
1052 class UserList(generics.ListCreateAPIView):
1053     queryset = User.objects.select_related().all()
1054     serializer_class = UserSerializer
1055
1056 class UserDetail(generics.RetrieveUpdateDestroyAPIView):
1057     queryset = User.objects.select_related().all()
1058     serializer_class = UserSerializer
1059
1060
1061
1062 class DeploymentList(generics.ListCreateAPIView):
1063     queryset = Deployment.objects.select_related().all()
1064     serializer_class = DeploymentSerializer
1065
1066 class DeploymentDetail(generics.RetrieveUpdateDestroyAPIView):
1067     queryset = Deployment.objects.select_related().all()
1068     serializer_class = DeploymentSerializer
1069
1070
1071
1072 class ReservationList(generics.ListCreateAPIView):
1073     queryset = Reservation.objects.select_related().all()
1074     serializer_class = ReservationSerializer
1075
1076 class ReservationDetail(generics.RetrieveUpdateDestroyAPIView):
1077     queryset = Reservation.objects.select_related().all()
1078     serializer_class = ReservationSerializer
1079
1080
1081
1082 class SitePrivilegeList(generics.ListCreateAPIView):
1083     queryset = SitePrivilege.objects.select_related().all()
1084     serializer_class = SitePrivilegeSerializer
1085
1086 class SitePrivilegeDetail(generics.RetrieveUpdateDestroyAPIView):
1087     queryset = SitePrivilege.objects.select_related().all()
1088     serializer_class = SitePrivilegeSerializer
1089
1090
1091
1092 class PlanetStackList(generics.ListCreateAPIView):
1093     queryset = PlanetStack.objects.select_related().all()
1094     serializer_class = PlanetStackSerializer
1095
1096 class PlanetStackDetail(generics.RetrieveUpdateDestroyAPIView):
1097     queryset = PlanetStack.objects.select_related().all()
1098     serializer_class = PlanetStackSerializer
1099
1100
1101
1102 class AccountList(generics.ListCreateAPIView):
1103     queryset = Account.objects.select_related().all()
1104     serializer_class = AccountSerializer
1105
1106 class AccountDetail(generics.RetrieveUpdateDestroyAPIView):
1107     queryset = Account.objects.select_related().all()
1108     serializer_class = AccountSerializer
1109
1110
1111
1112 class NetworkParameterTypeList(generics.ListCreateAPIView):
1113     queryset = NetworkParameterType.objects.select_related().all()
1114     serializer_class = NetworkParameterTypeSerializer
1115
1116 class NetworkParameterTypeDetail(generics.RetrieveUpdateDestroyAPIView):
1117     queryset = NetworkParameterType.objects.select_related().all()
1118     serializer_class = NetworkParameterTypeSerializer
1119
1120
1121
1122 class SiteDeploymentsList(generics.ListCreateAPIView):
1123     queryset = SiteDeployments.objects.select_related().all()
1124     serializer_class = SiteDeploymentsSerializer
1125
1126 class SiteDeploymentsDetail(generics.RetrieveUpdateDestroyAPIView):
1127     queryset = SiteDeployments.objects.select_related().all()
1128     serializer_class = SiteDeploymentsSerializer
1129
1130
1131
1132 class DeploymentPrivilegeList(generics.ListCreateAPIView):
1133     queryset = DeploymentPrivilege.objects.select_related().all()
1134     serializer_class = DeploymentPrivilegeSerializer
1135
1136 class DeploymentPrivilegeDetail(generics.RetrieveUpdateDestroyAPIView):
1137     queryset = DeploymentPrivilege.objects.select_related().all()
1138     serializer_class = DeploymentPrivilegeSerializer
1139
1140
1141
1142 class DeploymentRoleList(generics.ListCreateAPIView):
1143     queryset = DeploymentRole.objects.select_related().all()
1144     serializer_class = DeploymentRoleSerializer
1145
1146 class DeploymentRoleDetail(generics.RetrieveUpdateDestroyAPIView):
1147     queryset = DeploymentRole.objects.select_related().all()
1148     serializer_class = DeploymentRoleSerializer
1149
1150
1151
1152 class ProjectList(generics.ListCreateAPIView):
1153     queryset = Project.objects.select_related().all()
1154     serializer_class = ProjectSerializer
1155
1156 class ProjectDetail(generics.RetrieveUpdateDestroyAPIView):
1157     queryset = Project.objects.select_related().all()
1158     serializer_class = ProjectSerializer
1159
1160
1161
1162 class SliceTagList(generics.ListCreateAPIView):
1163     queryset = SliceTag.objects.select_related().all()
1164     serializer_class = SliceTagSerializer
1165
1166 class SliceTagDetail(generics.RetrieveUpdateDestroyAPIView):
1167     queryset = SliceTag.objects.select_related().all()
1168     serializer_class = SliceTagSerializer
1169
1170
1171
1172 class NetworkTemplateList(generics.ListCreateAPIView):
1173     queryset = NetworkTemplate.objects.select_related().all()
1174     serializer_class = NetworkTemplateSerializer
1175
1176 class NetworkTemplateDetail(generics.RetrieveUpdateDestroyAPIView):
1177     queryset = NetworkTemplate.objects.select_related().all()
1178     serializer_class = NetworkTemplateSerializer
1179
1180
1181
1182 class RouterList(generics.ListCreateAPIView):
1183     queryset = Router.objects.select_related().all()
1184     serializer_class = RouterSerializer
1185
1186 class RouterDetail(generics.RetrieveUpdateDestroyAPIView):
1187     queryset = Router.objects.select_related().all()
1188     serializer_class = RouterSerializer
1189
1190
1191
1192 class ServiceResourceList(generics.ListCreateAPIView):
1193     queryset = ServiceResource.objects.select_related().all()
1194     serializer_class = ServiceResourceSerializer
1195
1196 class ServiceResourceDetail(generics.RetrieveUpdateDestroyAPIView):
1197     queryset = ServiceResource.objects.select_related().all()
1198     serializer_class = ServiceResourceSerializer
1199
1200
1201