869056212a610420adeb13368ff062f9f16b87cf
[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',)
84
85
86 class ImageSerializer(serializers.HyperlinkedModelSerializer):
87         id = serializers.Field()
88         
89         class Meta:
90                 model = Image
91                 fields = ('id','created','updated','enacted','image_id','name','disk_format','container_format',)
92
93
94 class NetworkParameterSerializer(serializers.HyperlinkedModelSerializer):
95         id = serializers.Field()
96         
97         class Meta:
98                 model = NetworkParameter
99                 fields = ('id','created','updated','enacted','parameter','value','content_type','object_id',)
100
101
102 class SiteSerializer(serializers.HyperlinkedModelSerializer):
103         id = serializers.Field()
104         
105         class Meta:
106                 model = Site
107                 fields = ('id','created','updated','enacted','tenant_id','name','site_url','enabled','location','longitude','latitude','login_base','is_public','abbreviated_name',)
108
109
110 class SliceRoleSerializer(serializers.HyperlinkedModelSerializer):
111         id = serializers.Field()
112         
113         class Meta:
114                 model = SliceRole
115                 fields = ('id','created','updated','enacted','role',)
116
117
118 class TagSerializer(serializers.HyperlinkedModelSerializer):
119         id = serializers.Field()
120         
121         
122         sites = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='site-detail')
123         
124         
125         
126         service = serializers.HyperlinkedRelatedField(read_only=True, view_name='service-detail')
127         
128         
129         
130         slices = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='slice-detail')
131         
132         
133         
134         slivers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='sliver-detail')
135         
136         
137         
138         nodes = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='node-detail')
139         
140         
141         class Meta:
142                 model = Tag
143                 fields = ('id','created','updated','enacted','name','value','content_type','object_id',)
144
145
146 class InvoiceSerializer(serializers.HyperlinkedModelSerializer):
147         id = serializers.Field()
148         
149         
150         account = serializers.HyperlinkedRelatedField(read_only=True, view_name='account-detail')
151         
152         
153         class Meta:
154                 model = Invoice
155                 fields = ('id','created','updated','enacted','date',)
156
157
158 class PlanetStackRoleSerializer(serializers.HyperlinkedModelSerializer):
159         id = serializers.Field()
160         
161         class Meta:
162                 model = PlanetStackRole
163                 fields = ('id','created','updated','enacted','role',)
164
165
166 class SlicePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
167         id = serializers.Field()
168         
169         
170         user = serializers.HyperlinkedRelatedField(read_only=True, view_name='user-detail')
171         
172         
173         
174         slice = serializers.HyperlinkedRelatedField(read_only=True, view_name='slice-detail')
175         
176         
177         
178         role = serializers.HyperlinkedRelatedField(read_only=True, view_name='role-detail')
179         
180         
181         class Meta:
182                 model = SlicePrivilege
183                 fields = ('id','created','updated','enacted',)
184
185
186 class NetworkSliverSerializer(serializers.HyperlinkedModelSerializer):
187         id = serializers.Field()
188         
189         
190         network = serializers.HyperlinkedRelatedField(read_only=True, view_name='network-detail')
191         
192         
193         
194         sliver = serializers.HyperlinkedRelatedField(read_only=True, view_name='sliver-detail')
195         
196         
197         class Meta:
198                 model = NetworkSliver
199                 fields = ('id','created','updated','enacted','ip','port_id',)
200
201
202 class SliceSerializer(serializers.HyperlinkedModelSerializer):
203         id = serializers.Field()
204         
205         
206         site = serializers.HyperlinkedRelatedField(read_only=True, view_name='site-detail')
207         
208         
209         
210         service = serializers.HyperlinkedRelatedField(read_only=True, view_name='service-detail')
211         
212         
213         
214         networks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')
215         
216         
217         
218         networks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')
219         
220         
221         class Meta:
222                 model = Slice
223                 fields = ('id','created','updated','enacted','tenant_id','name','enabled','omf_friendly','description','slice_url','network_id','router_id','subnet_id','serviceClass','creator',)
224
225
226 class NetworkSerializer(serializers.HyperlinkedModelSerializer):
227         id = serializers.Field()
228         
229         
230         routers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='router-detail')
231         
232         
233         
234         routers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='router-detail')
235         
236         
237         class Meta:
238                 model = Network
239                 fields = ('id','created','updated','enacted','name','template','subnet','ports','labels','owner','guaranteedBandwidth','permitAllSlices','network_id','router_id','subnet_id',)
240
241
242 class ServiceSerializer(serializers.HyperlinkedModelSerializer):
243         id = serializers.Field()
244         
245         class Meta:
246                 model = Service
247                 fields = ('id','created','updated','enacted','description','enabled','name','versionNumber','published',)
248
249
250 class ServiceClassSerializer(serializers.HyperlinkedModelSerializer):
251         id = serializers.Field()
252         
253         class Meta:
254                 model = ServiceClass
255                 fields = ('id','created','updated','enacted','name','description','commitment','membershipFee','membershipFeeMonths','upgradeRequiresApproval',)
256
257
258 class SiteRoleSerializer(serializers.HyperlinkedModelSerializer):
259         id = serializers.Field()
260         
261         class Meta:
262                 model = SiteRole
263                 fields = ('id','created','updated','enacted','role',)
264
265
266 class ChargeSerializer(serializers.HyperlinkedModelSerializer):
267         id = serializers.Field()
268         
269         
270         account = serializers.HyperlinkedRelatedField(read_only=True, view_name='account-detail')
271         
272         
273         
274         slice = serializers.HyperlinkedRelatedField(read_only=True, view_name='slice-detail')
275         
276         
277         
278         invoice = serializers.HyperlinkedRelatedField(read_only=True, view_name='invoice-detail')
279         
280         
281         class Meta:
282                 model = Charge
283                 fields = ('id','created','updated','enacted','kind','state','date','object','amount','coreHours',)
284
285
286 class RoleSerializer(serializers.HyperlinkedModelSerializer):
287         id = serializers.Field()
288         
289         class Meta:
290                 model = Role
291                 fields = ('id','created','updated','enacted','role_type','role','description','content_type',)
292
293
294 class UsableObjectSerializer(serializers.HyperlinkedModelSerializer):
295         id = serializers.Field()
296         
297         class Meta:
298                 model = UsableObject
299                 fields = ('id','created','updated','enacted','name',)
300
301
302 class SliverSerializer(serializers.HyperlinkedModelSerializer):
303         id = serializers.Field()
304         
305         
306         networks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')
307         
308         
309         
310         image = serializers.HyperlinkedRelatedField(read_only=True, view_name='image-detail')
311         
312         
313         
314         slice = serializers.HyperlinkedRelatedField(read_only=True, view_name='slice-detail')
315         
316         
317         
318         node = serializers.HyperlinkedRelatedField(read_only=True, view_name='node-detail')
319         
320         
321         class Meta:
322                 model = Sliver
323                 fields = ('id','created','updated','enacted','instance_id','name','instance_name','ip','creator','deploymentNetwork','numberCores',)
324
325
326 class NodeSerializer(serializers.HyperlinkedModelSerializer):
327         id = serializers.Field()
328         
329         
330         site = serializers.HyperlinkedRelatedField(read_only=True, view_name='site-detail')
331         
332         
333         
334         deployment = serializers.HyperlinkedRelatedField(read_only=True, view_name='deployment-detail')
335         
336         
337         class Meta:
338                 model = Node
339                 fields = ('id','created','updated','enacted','name',)
340
341
342 class ReservedResourceSerializer(serializers.HyperlinkedModelSerializer):
343         id = serializers.Field()
344         
345         
346         sliver = serializers.HyperlinkedRelatedField(read_only=True, view_name='sliver-detail')
347         
348         
349         class Meta:
350                 model = ReservedResource
351                 fields = ('id','created','updated','enacted','resource','quantity','reservationSet',)
352
353
354 class PaymentSerializer(serializers.HyperlinkedModelSerializer):
355         id = serializers.Field()
356         
357         
358         account = serializers.HyperlinkedRelatedField(read_only=True, view_name='account-detail')
359         
360         
361         class Meta:
362                 model = Payment
363                 fields = ('id','created','updated','enacted','amount','date',)
364
365
366 class NetworkSliceSerializer(serializers.HyperlinkedModelSerializer):
367         id = serializers.Field()
368         
369         
370         network = serializers.HyperlinkedRelatedField(read_only=True, view_name='network-detail')
371         
372         
373         
374         slice = serializers.HyperlinkedRelatedField(read_only=True, view_name='slice-detail')
375         
376         
377         class Meta:
378                 model = NetworkSlice
379                 fields = ('id','created','updated','enacted',)
380
381
382 class PlanetStackPrivilegeSerializer(serializers.HyperlinkedModelSerializer):
383         id = serializers.Field()
384         
385         
386         user = serializers.HyperlinkedRelatedField(read_only=True, view_name='user-detail')
387         
388         
389         
390         planetstack = serializers.HyperlinkedRelatedField(read_only=True, view_name='planetstack-detail')
391         
392         
393         
394         role = serializers.HyperlinkedRelatedField(read_only=True, view_name='role-detail')
395         
396         
397         class Meta:
398                 model = PlanetStackPrivilege
399                 fields = ('id','created','updated','enacted',)
400
401
402 class UserSerializer(serializers.HyperlinkedModelSerializer):
403         id = serializers.Field()
404         
405         
406         site = serializers.HyperlinkedRelatedField(read_only=True, view_name='site-detail')
407         
408         
409         class Meta:
410                 model = User
411                 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',)
412
413
414 class DeploymentSerializer(serializers.HyperlinkedModelSerializer):
415         id = serializers.Field()
416         
417         
418         sites = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='site-detail')
419         
420         
421         class Meta:
422                 model = Deployment
423                 fields = ('id','created','updated','enacted','name',)
424
425
426 class ReservationSerializer(serializers.HyperlinkedModelSerializer):
427         id = serializers.Field()
428         
429         
430         slice = serializers.HyperlinkedRelatedField(read_only=True, view_name='slice-detail')
431         
432         
433         class Meta:
434                 model = Reservation
435                 fields = ('id','created','updated','enacted','startTime','duration',)
436
437
438 class SitePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
439         id = serializers.Field()
440         
441         
442         user = serializers.HyperlinkedRelatedField(read_only=True, view_name='user-detail')
443         
444         
445         
446         site = serializers.HyperlinkedRelatedField(read_only=True, view_name='site-detail')
447         
448         
449         
450         role = serializers.HyperlinkedRelatedField(read_only=True, view_name='role-detail')
451         
452         
453         class Meta:
454                 model = SitePrivilege
455                 fields = ('id','created','updated','enacted',)
456
457
458 class PlanetStackSerializer(serializers.HyperlinkedModelSerializer):
459         id = serializers.Field()
460         
461         class Meta:
462                 model = PlanetStack
463                 fields = ('id','created','updated','enacted','description',)
464
465
466 class AccountSerializer(serializers.HyperlinkedModelSerializer):
467         id = serializers.Field()
468         
469         
470         site = serializers.HyperlinkedRelatedField(read_only=True, view_name='site-detail')
471         
472         
473         class Meta:
474                 model = Account
475                 fields = ('id','created','updated','enacted',)
476
477
478 class NetworkParameterTypeSerializer(serializers.HyperlinkedModelSerializer):
479         id = serializers.Field()
480         
481         class Meta:
482                 model = NetworkParameterType
483                 fields = ('id','created','updated','enacted','name','description',)
484
485
486 class SiteDeploymentsSerializer(serializers.HyperlinkedModelSerializer):
487         id = serializers.Field()
488         
489         
490         site = serializers.HyperlinkedRelatedField(read_only=True, view_name='site-detail')
491         
492         
493         
494         deployment = serializers.HyperlinkedRelatedField(read_only=True, view_name='deployment-detail')
495         
496         
497         class Meta:
498                 model = SiteDeployments
499                 fields = ('id','created','updated','enacted',)
500
501
502 class DeploymentPrivilegeSerializer(serializers.HyperlinkedModelSerializer):
503         id = serializers.Field()
504         
505         
506         user = serializers.HyperlinkedRelatedField(read_only=True, view_name='user-detail')
507         
508         
509         
510         deployment = serializers.HyperlinkedRelatedField(read_only=True, view_name='deployment-detail')
511         
512         
513         
514         role = serializers.HyperlinkedRelatedField(read_only=True, view_name='role-detail')
515         
516         
517         class Meta:
518                 model = DeploymentPrivilege
519                 fields = ('id','created','updated','enacted',)
520
521
522 class DeploymentRoleSerializer(serializers.HyperlinkedModelSerializer):
523         id = serializers.Field()
524         
525         class Meta:
526                 model = DeploymentRole
527                 fields = ('id','created','updated','enacted','role',)
528
529
530 class ProjectSerializer(serializers.HyperlinkedModelSerializer):
531         id = serializers.Field()
532         
533         class Meta:
534                 model = Project
535                 fields = ('id','created','updated','enacted','name',)
536
537
538 class SliceTagSerializer(serializers.HyperlinkedModelSerializer):
539         id = serializers.Field()
540         
541         
542         slice = serializers.HyperlinkedRelatedField(read_only=True, view_name='slice-detail')
543         
544         
545         class Meta:
546                 model = SliceTag
547                 fields = ('id','created','updated','enacted','name','value',)
548
549
550 class NetworkTemplateSerializer(serializers.HyperlinkedModelSerializer):
551         id = serializers.Field()
552         
553         class Meta:
554                 model = NetworkTemplate
555                 fields = ('id','created','updated','enacted','name','description','guaranteedBandwidth','visibility','translation','sharedNetworkName','sharedNetworkId',)
556
557
558 class RouterSerializer(serializers.HyperlinkedModelSerializer):
559         id = serializers.Field()
560         
561         class Meta:
562                 model = Router
563                 fields = ('id','created','updated','enacted','name','owner',)
564
565
566 class ServiceResourceSerializer(serializers.HyperlinkedModelSerializer):
567         id = serializers.Field()
568         
569         class Meta:
570                 model = ServiceResource
571                 fields = ('id','created','updated','enacted','serviceClass','name','maxUnitsDeployment','maxUnitsNode','maxDuration','bucketInRate','bucketMaxSize','cost','calendarReservable',)
572
573
574 serializerLookUp = { 
575
576                  ServiceAttribute: ServiceAttributeSerializer,
577
578                  Image: ImageSerializer,
579
580                  NetworkParameter: NetworkParameterSerializer,
581
582                  Site: SiteSerializer,
583
584                  SliceRole: SliceRoleSerializer,
585
586                  Tag: TagSerializer,
587
588                  Invoice: InvoiceSerializer,
589
590                  PlanetStackRole: PlanetStackRoleSerializer,
591
592                  SlicePrivilege: SlicePrivilegeSerializer,
593
594                  NetworkSliver: NetworkSliverSerializer,
595
596                  Slice: SliceSerializer,
597
598                  Network: NetworkSerializer,
599
600                  Service: ServiceSerializer,
601
602                  ServiceClass: ServiceClassSerializer,
603
604                  SiteRole: SiteRoleSerializer,
605
606                  Charge: ChargeSerializer,
607
608                  Role: RoleSerializer,
609
610                  UsableObject: UsableObjectSerializer,
611
612                  Sliver: SliverSerializer,
613
614                  Node: NodeSerializer,
615
616                  ReservedResource: ReservedResourceSerializer,
617
618                  Payment: PaymentSerializer,
619
620                  NetworkSlice: NetworkSliceSerializer,
621
622                  PlanetStackPrivilege: PlanetStackPrivilegeSerializer,
623
624                  User: UserSerializer,
625
626                  Deployment: DeploymentSerializer,
627
628                  Reservation: ReservationSerializer,
629
630                  SitePrivilege: SitePrivilegeSerializer,
631
632                  PlanetStack: PlanetStackSerializer,
633
634                  Account: AccountSerializer,
635
636                  NetworkParameterType: NetworkParameterTypeSerializer,
637
638                  SiteDeployments: SiteDeploymentsSerializer,
639
640                  DeploymentPrivilege: DeploymentPrivilegeSerializer,
641
642                  DeploymentRole: DeploymentRoleSerializer,
643
644                  Project: ProjectSerializer,
645
646                  SliceTag: SliceTagSerializer,
647
648                  NetworkTemplate: NetworkTemplateSerializer,
649
650                  Router: RouterSerializer,
651
652                  ServiceResource: ServiceResourceSerializer,
653
654                  None: None,
655                 }
656
657 # Based on core/views/*.py
658
659
660 class ServiceAttributeList(generics.ListCreateAPIView):
661     queryset = ServiceAttribute.objects.select_related().all()
662     serializer_class = ServiceAttributeSerializer
663
664 class ServiceAttributeDetail(generics.RetrieveUpdateDestroyAPIView):
665     queryset = ServiceAttribute.objects.select_related().all()
666     serializer_class = ServiceAttributeSerializer
667
668
669
670 class ImageList(generics.ListCreateAPIView):
671     queryset = Image.objects.select_related().all()
672     serializer_class = ImageSerializer
673
674 class ImageDetail(generics.RetrieveUpdateDestroyAPIView):
675     queryset = Image.objects.select_related().all()
676     serializer_class = ImageSerializer
677
678
679
680 class NetworkParameterList(generics.ListCreateAPIView):
681     queryset = NetworkParameter.objects.select_related().all()
682     serializer_class = NetworkParameterSerializer
683
684 class NetworkParameterDetail(generics.RetrieveUpdateDestroyAPIView):
685     queryset = NetworkParameter.objects.select_related().all()
686     serializer_class = NetworkParameterSerializer
687
688
689
690 class SiteList(generics.ListCreateAPIView):
691     queryset = Site.objects.select_related().all()
692     serializer_class = SiteSerializer
693
694 class SiteDetail(generics.RetrieveUpdateDestroyAPIView):
695     queryset = Site.objects.select_related().all()
696     serializer_class = SiteSerializer
697
698
699
700 class SliceRoleList(generics.ListCreateAPIView):
701     queryset = SliceRole.objects.select_related().all()
702     serializer_class = SliceRoleSerializer
703
704 class SliceRoleDetail(generics.RetrieveUpdateDestroyAPIView):
705     queryset = SliceRole.objects.select_related().all()
706     serializer_class = SliceRoleSerializer
707
708
709
710 class TagList(generics.ListCreateAPIView):
711     queryset = Tag.objects.select_related().all()
712     serializer_class = TagSerializer
713
714 class TagDetail(generics.RetrieveUpdateDestroyAPIView):
715     queryset = Tag.objects.select_related().all()
716     serializer_class = TagSerializer
717
718
719
720 class InvoiceList(generics.ListCreateAPIView):
721     queryset = Invoice.objects.select_related().all()
722     serializer_class = InvoiceSerializer
723
724 class InvoiceDetail(generics.RetrieveUpdateDestroyAPIView):
725     queryset = Invoice.objects.select_related().all()
726     serializer_class = InvoiceSerializer
727
728
729
730 class PlanetStackRoleList(generics.ListCreateAPIView):
731     queryset = PlanetStackRole.objects.select_related().all()
732     serializer_class = PlanetStackRoleSerializer
733
734 class PlanetStackRoleDetail(generics.RetrieveUpdateDestroyAPIView):
735     queryset = PlanetStackRole.objects.select_related().all()
736     serializer_class = PlanetStackRoleSerializer
737
738
739
740 class SlicePrivilegeList(generics.ListCreateAPIView):
741     queryset = SlicePrivilege.objects.select_related().all()
742     serializer_class = SlicePrivilegeSerializer
743
744 class SlicePrivilegeDetail(generics.RetrieveUpdateDestroyAPIView):
745     queryset = SlicePrivilege.objects.select_related().all()
746     serializer_class = SlicePrivilegeSerializer
747
748
749
750 class NetworkSliverList(generics.ListCreateAPIView):
751     queryset = NetworkSliver.objects.select_related().all()
752     serializer_class = NetworkSliverSerializer
753
754 class NetworkSliverDetail(generics.RetrieveUpdateDestroyAPIView):
755     queryset = NetworkSliver.objects.select_related().all()
756     serializer_class = NetworkSliverSerializer
757
758
759
760 class SliceList(generics.ListCreateAPIView):
761     queryset = Slice.objects.select_related().all()
762     serializer_class = SliceSerializer
763
764 class SliceDetail(generics.RetrieveUpdateDestroyAPIView):
765     queryset = Slice.objects.select_related().all()
766     serializer_class = SliceSerializer
767
768
769
770 class NetworkList(generics.ListCreateAPIView):
771     queryset = Network.objects.select_related().all()
772     serializer_class = NetworkSerializer
773
774 class NetworkDetail(generics.RetrieveUpdateDestroyAPIView):
775     queryset = Network.objects.select_related().all()
776     serializer_class = NetworkSerializer
777
778
779
780 class ServiceList(generics.ListCreateAPIView):
781     queryset = Service.objects.select_related().all()
782     serializer_class = ServiceSerializer
783
784 class ServiceDetail(generics.RetrieveUpdateDestroyAPIView):
785     queryset = Service.objects.select_related().all()
786     serializer_class = ServiceSerializer
787
788
789
790 class ServiceClassList(generics.ListCreateAPIView):
791     queryset = ServiceClass.objects.select_related().all()
792     serializer_class = ServiceClassSerializer
793
794 class ServiceClassDetail(generics.RetrieveUpdateDestroyAPIView):
795     queryset = ServiceClass.objects.select_related().all()
796     serializer_class = ServiceClassSerializer
797
798
799
800 class SiteRoleList(generics.ListCreateAPIView):
801     queryset = SiteRole.objects.select_related().all()
802     serializer_class = SiteRoleSerializer
803
804 class SiteRoleDetail(generics.RetrieveUpdateDestroyAPIView):
805     queryset = SiteRole.objects.select_related().all()
806     serializer_class = SiteRoleSerializer
807
808
809
810 class ChargeList(generics.ListCreateAPIView):
811     queryset = Charge.objects.select_related().all()
812     serializer_class = ChargeSerializer
813
814 class ChargeDetail(generics.RetrieveUpdateDestroyAPIView):
815     queryset = Charge.objects.select_related().all()
816     serializer_class = ChargeSerializer
817
818
819
820 class RoleList(generics.ListCreateAPIView):
821     queryset = Role.objects.select_related().all()
822     serializer_class = RoleSerializer
823
824 class RoleDetail(generics.RetrieveUpdateDestroyAPIView):
825     queryset = Role.objects.select_related().all()
826     serializer_class = RoleSerializer
827
828
829
830 class UsableObjectList(generics.ListCreateAPIView):
831     queryset = UsableObject.objects.select_related().all()
832     serializer_class = UsableObjectSerializer
833
834 class UsableObjectDetail(generics.RetrieveUpdateDestroyAPIView):
835     queryset = UsableObject.objects.select_related().all()
836     serializer_class = UsableObjectSerializer
837
838
839
840 class SliverList(generics.ListCreateAPIView):
841     queryset = Sliver.objects.select_related().all()
842     serializer_class = SliverSerializer
843
844 class SliverDetail(generics.RetrieveUpdateDestroyAPIView):
845     queryset = Sliver.objects.select_related().all()
846     serializer_class = SliverSerializer
847
848
849
850 class NodeList(generics.ListCreateAPIView):
851     queryset = Node.objects.select_related().all()
852     serializer_class = NodeSerializer
853
854 class NodeDetail(generics.RetrieveUpdateDestroyAPIView):
855     queryset = Node.objects.select_related().all()
856     serializer_class = NodeSerializer
857
858
859
860 class ReservedResourceList(generics.ListCreateAPIView):
861     queryset = ReservedResource.objects.select_related().all()
862     serializer_class = ReservedResourceSerializer
863
864 class ReservedResourceDetail(generics.RetrieveUpdateDestroyAPIView):
865     queryset = ReservedResource.objects.select_related().all()
866     serializer_class = ReservedResourceSerializer
867
868
869
870 class PaymentList(generics.ListCreateAPIView):
871     queryset = Payment.objects.select_related().all()
872     serializer_class = PaymentSerializer
873
874 class PaymentDetail(generics.RetrieveUpdateDestroyAPIView):
875     queryset = Payment.objects.select_related().all()
876     serializer_class = PaymentSerializer
877
878
879
880 class NetworkSliceList(generics.ListCreateAPIView):
881     queryset = NetworkSlice.objects.select_related().all()
882     serializer_class = NetworkSliceSerializer
883
884 class NetworkSliceDetail(generics.RetrieveUpdateDestroyAPIView):
885     queryset = NetworkSlice.objects.select_related().all()
886     serializer_class = NetworkSliceSerializer
887
888
889
890 class PlanetStackPrivilegeList(generics.ListCreateAPIView):
891     queryset = PlanetStackPrivilege.objects.select_related().all()
892     serializer_class = PlanetStackPrivilegeSerializer
893
894 class PlanetStackPrivilegeDetail(generics.RetrieveUpdateDestroyAPIView):
895     queryset = PlanetStackPrivilege.objects.select_related().all()
896     serializer_class = PlanetStackPrivilegeSerializer
897
898
899
900 class UserList(generics.ListCreateAPIView):
901     queryset = User.objects.select_related().all()
902     serializer_class = UserSerializer
903
904 class UserDetail(generics.RetrieveUpdateDestroyAPIView):
905     queryset = User.objects.select_related().all()
906     serializer_class = UserSerializer
907
908
909
910 class DeploymentList(generics.ListCreateAPIView):
911     queryset = Deployment.objects.select_related().all()
912     serializer_class = DeploymentSerializer
913
914 class DeploymentDetail(generics.RetrieveUpdateDestroyAPIView):
915     queryset = Deployment.objects.select_related().all()
916     serializer_class = DeploymentSerializer
917
918
919
920 class ReservationList(generics.ListCreateAPIView):
921     queryset = Reservation.objects.select_related().all()
922     serializer_class = ReservationSerializer
923
924 class ReservationDetail(generics.RetrieveUpdateDestroyAPIView):
925     queryset = Reservation.objects.select_related().all()
926     serializer_class = ReservationSerializer
927
928
929
930 class SitePrivilegeList(generics.ListCreateAPIView):
931     queryset = SitePrivilege.objects.select_related().all()
932     serializer_class = SitePrivilegeSerializer
933
934 class SitePrivilegeDetail(generics.RetrieveUpdateDestroyAPIView):
935     queryset = SitePrivilege.objects.select_related().all()
936     serializer_class = SitePrivilegeSerializer
937
938
939
940 class PlanetStackList(generics.ListCreateAPIView):
941     queryset = PlanetStack.objects.select_related().all()
942     serializer_class = PlanetStackSerializer
943
944 class PlanetStackDetail(generics.RetrieveUpdateDestroyAPIView):
945     queryset = PlanetStack.objects.select_related().all()
946     serializer_class = PlanetStackSerializer
947
948
949
950 class AccountList(generics.ListCreateAPIView):
951     queryset = Account.objects.select_related().all()
952     serializer_class = AccountSerializer
953
954 class AccountDetail(generics.RetrieveUpdateDestroyAPIView):
955     queryset = Account.objects.select_related().all()
956     serializer_class = AccountSerializer
957
958
959
960 class NetworkParameterTypeList(generics.ListCreateAPIView):
961     queryset = NetworkParameterType.objects.select_related().all()
962     serializer_class = NetworkParameterTypeSerializer
963
964 class NetworkParameterTypeDetail(generics.RetrieveUpdateDestroyAPIView):
965     queryset = NetworkParameterType.objects.select_related().all()
966     serializer_class = NetworkParameterTypeSerializer
967
968
969
970 class SiteDeploymentsList(generics.ListCreateAPIView):
971     queryset = SiteDeployments.objects.select_related().all()
972     serializer_class = SiteDeploymentsSerializer
973
974 class SiteDeploymentsDetail(generics.RetrieveUpdateDestroyAPIView):
975     queryset = SiteDeployments.objects.select_related().all()
976     serializer_class = SiteDeploymentsSerializer
977
978
979
980 class DeploymentPrivilegeList(generics.ListCreateAPIView):
981     queryset = DeploymentPrivilege.objects.select_related().all()
982     serializer_class = DeploymentPrivilegeSerializer
983
984 class DeploymentPrivilegeDetail(generics.RetrieveUpdateDestroyAPIView):
985     queryset = DeploymentPrivilege.objects.select_related().all()
986     serializer_class = DeploymentPrivilegeSerializer
987
988
989
990 class DeploymentRoleList(generics.ListCreateAPIView):
991     queryset = DeploymentRole.objects.select_related().all()
992     serializer_class = DeploymentRoleSerializer
993
994 class DeploymentRoleDetail(generics.RetrieveUpdateDestroyAPIView):
995     queryset = DeploymentRole.objects.select_related().all()
996     serializer_class = DeploymentRoleSerializer
997
998
999
1000 class ProjectList(generics.ListCreateAPIView):
1001     queryset = Project.objects.select_related().all()
1002     serializer_class = ProjectSerializer
1003
1004 class ProjectDetail(generics.RetrieveUpdateDestroyAPIView):
1005     queryset = Project.objects.select_related().all()
1006     serializer_class = ProjectSerializer
1007
1008
1009
1010 class SliceTagList(generics.ListCreateAPIView):
1011     queryset = SliceTag.objects.select_related().all()
1012     serializer_class = SliceTagSerializer
1013
1014 class SliceTagDetail(generics.RetrieveUpdateDestroyAPIView):
1015     queryset = SliceTag.objects.select_related().all()
1016     serializer_class = SliceTagSerializer
1017
1018
1019
1020 class NetworkTemplateList(generics.ListCreateAPIView):
1021     queryset = NetworkTemplate.objects.select_related().all()
1022     serializer_class = NetworkTemplateSerializer
1023
1024 class NetworkTemplateDetail(generics.RetrieveUpdateDestroyAPIView):
1025     queryset = NetworkTemplate.objects.select_related().all()
1026     serializer_class = NetworkTemplateSerializer
1027
1028
1029
1030 class RouterList(generics.ListCreateAPIView):
1031     queryset = Router.objects.select_related().all()
1032     serializer_class = RouterSerializer
1033
1034 class RouterDetail(generics.RetrieveUpdateDestroyAPIView):
1035     queryset = Router.objects.select_related().all()
1036     serializer_class = RouterSerializer
1037
1038
1039
1040 class ServiceResourceList(generics.ListCreateAPIView):
1041     queryset = ServiceResource.objects.select_related().all()
1042     serializer_class = ServiceResourceSerializer
1043
1044 class ServiceResourceDetail(generics.RetrieveUpdateDestroyAPIView):
1045     queryset = ServiceResource.objects.select_related().all()
1046     serializer_class = ServiceResourceSerializer
1047
1048
1049