7320fc4e1cf05ac08770cdab3696f75a7169e86e
[vfc/nfvo/lcm.git] / lcm / ns_vnfs / serializers / serializers.py
1 # Copyright 2018 ZTE Corporation.
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 #         http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 from rest_framework import serializers
16 from lcm.pub.utils.enumutil import enum_to_list
17 from lcm.ns.enum import LCM_NOTIFICATION_STATUS
18 from lcm.ns_vnfs.enum import RESOURCE_CHANGE_TYPE, LIFE_CYCLE_OPERATION, VNFC_CHANGE_TYPE, NETWORK_RESOURCE_TYPE, SCALE_VNF_TYPE, CANDIDATE_IDENTIFIER_TYPE, PLACE_VNF_REQUEST_STATUS
19
20
21 class InstVnfReqSerializer(serializers.Serializer):
22     vnfIndex = serializers.CharField(
23         help_text="Index of VNF",
24         required=True)
25     nsInstanceId = serializers.CharField(
26         help_text="ID of NS instance",
27         required=True)
28     additionalParamForVnf = serializers.ListField(
29         child=(serializers.DictField(help_text="Additional param for VNF")),
30         required=False,
31         allow_null=True)
32
33
34 class InstVnfRespSerializer(serializers.Serializer):
35     vnfInstId = serializers.CharField(
36         help_text="ID of VNF instance",
37         required=True)
38     jobId = serializers.CharField(
39         help_text="ID of Job",
40         required=True)
41
42
43 class VnfVmsSerializer(serializers.Serializer):
44     vmId = serializers.CharField(
45         help_text="ID of VM",
46         required=True)
47     vmName = serializers.CharField(
48         help_text="Name of VM",
49         required=False,
50         allow_null=True,
51         allow_blank=True)
52
53
54 class GetVnfRespSerializer(serializers.Serializer):
55     vnfInstId = serializers.CharField(
56         help_text="ID of VNF instance",
57         required=True)
58     vnfName = serializers.CharField(
59         help_text="Name of VNF instance",
60         required=True)
61     vnfStatus = serializers.CharField(
62         help_text="Status of VNF instance",
63         required=True)
64     vnfVms = VnfVmsSerializer(
65         help_text="VMs of VNF",
66         many=True)
67
68
69 class TerminateVnfReqSerializer(serializers.Serializer):
70     terminationType = serializers.CharField(
71         help_text="Termination Type",
72         required=False,
73         allow_null=True)
74     gracefulTerminationTimeout = serializers.CharField(
75         help_text="Graceful Termination Timeout",
76         required=False,
77         allow_null=True,
78         allow_blank=True)
79
80
81 class TerminateVnfRespSerializer(serializers.Serializer):
82     jobId = serializers.CharField(
83         help_text="ID of Job",
84         required=True)
85
86
87 class ResourceChangeSerializer(serializers.Serializer):
88     type = serializers.ChoiceField(
89         help_text="Change Type",
90         choices=enum_to_list(RESOURCE_CHANGE_TYPE),
91         required=True)
92     resourceDefinitionId = serializers.CharField(
93         help_text="Identifier of resource",
94         required=False,
95         allow_null=True,
96         allow_blank=True)
97     vdu = serializers.CharField(
98         help_text="Identifier identifier of VDU",
99         required=False,
100         allow_null=True,
101         allow_blank=True)
102
103
104 class GrantVnfReqSerializer(serializers.Serializer):
105     vnfInstanceId = serializers.CharField(
106         help_text="ID of VNF instance",
107         required=True)
108     vnfDescriptorId = serializers.CharField(
109         help_text="ID of VNF Descriptor",
110         required=False,
111         allow_null=True,
112         allow_blank=True)
113     lifecycleOperation = serializers.ChoiceField(
114         help_text="Lifecycle Operation",
115         choices=enum_to_list(LIFE_CYCLE_OPERATION),
116         required=True)
117     jobId = serializers.CharField(
118         help_text="ID of Job",
119         required=False,
120         allow_null=True,
121         allow_blank=True)
122     addResource = ResourceChangeSerializer(
123         help_text="Add resources",
124         many=True)
125     removeResource = ResourceChangeSerializer(
126         help_text="Remove resources",
127         many=True)
128     additionalParam = serializers.DictField(
129         help_text="Additional parameters passed to the NFVO, specific to the VNF and the LCM operation. The currently interpreted keys are the following: vimId",
130         child=serializers.CharField(help_text="Additional parameters", allow_blank=True),
131         required=False,
132         allow_null=True)
133
134
135 class AccessinfoSerializer(serializers.Serializer):
136     tenant = serializers.CharField(
137         help_text="Name of tenant",
138         required=True)
139
140
141 class VimSerializer(serializers.Serializer):
142     vimid = serializers.CharField(
143         help_text="ID of VIM",
144         required=True)
145     accessinfo = AccessinfoSerializer(
146         help_text="Access Info",
147         required=False)
148     accessInfo = AccessinfoSerializer(
149         help_text="Access Info",
150         required=False)
151
152
153 class GrantVnfRespSerializer(serializers.Serializer):
154     vnfInstanceId = serializers.CharField(
155         help_text="ID of VNF instance",
156         required=False,
157         allow_null=True,
158         allow_blank=True)
159     vim = VimSerializer(
160         help_text="VIM Info",
161         required=True)
162
163
164 class AffectedVnfcLcmSerializer(serializers.Serializer):
165     vnfcInstanceId = serializers.CharField(
166         help_text="ID of VNFC instance",
167         required=False,
168         allow_null=True,
169         allow_blank=True)
170     vduId = serializers.CharField(
171         help_text="ID of VDU in VNFD",
172         required=False,
173         allow_null=True,
174         allow_blank=True)
175     changeType = serializers.ChoiceField(
176         help_text="Type of Change",
177         choices=enum_to_list(VNFC_CHANGE_TYPE),  # ["added", "removed", "modified"],
178         required=True)
179     vimId = serializers.CharField(
180         help_text="ID of VIM",
181         required=False,
182         allow_null=True,
183         allow_blank=True)
184     vmId = serializers.CharField(
185         help_text="ID of virtual machine",
186         required=False,
187         allow_null=True,
188         allow_blank=True)
189     vmName = serializers.CharField(
190         help_text="Name of virtual machine",
191         required=False,
192         allow_null=True,
193         allow_blank=True)
194
195
196 class NetworkResourceSerializer(serializers.Serializer):
197     resourceType = serializers.ChoiceField(
198         help_text="Type of Resource",
199         choices=enum_to_list(NETWORK_RESOURCE_TYPE),
200         required=True)
201     resourceId = serializers.CharField(
202         help_text="ID of network resource",
203         required=False,
204         allow_null=True,
205         allow_blank=True)
206     resourceName = serializers.CharField(
207         help_text="Name of network resource",
208         required=False,
209         allow_null=True,
210         allow_blank=True)
211
212
213 class AffectedVirtualLinkLcmSerializer(serializers.Serializer):
214     vlInstanceId = serializers.CharField(
215         help_text="ID of VL instance",
216         required=False,
217         allow_null=True,
218         allow_blank=True)
219     vldId = serializers.CharField(
220         help_text="ID of VLD in VNFD",
221         required=False,
222         allow_null=True,
223         allow_blank=True)
224     changeType = serializers.ChoiceField(
225         help_text="Type of Change",
226         choices=enum_to_list(VNFC_CHANGE_TYPE),  # ["added", "removed", "modified"],
227         required=True)
228     networkResource = NetworkResourceSerializer(
229         help_text="Network Resource",
230         required=False,
231         allow_null=True)
232
233
234 class PortResourceSerializer(serializers.Serializer):
235     vimId = serializers.CharField(
236         help_text="ID of VIM",
237         required=False,
238         allow_null=True,
239         allow_blank=True)
240     resourceId = serializers.CharField(
241         help_text="ID of Resource",
242         required=False,
243         allow_null=True,
244         allow_blank=True)
245     resourceName = serializers.CharField(
246         help_text="Name of Resource",
247         required=False,
248         allow_null=True,
249         allow_blank=True)
250     tenant = serializers.CharField(
251         help_text="ID of Tenant",
252         required=False,
253         allow_null=True,
254         allow_blank=True)
255     ipAddress = serializers.CharField(
256         help_text="IP address of port",
257         required=False,
258         allow_null=True,
259         allow_blank=True)
260     macAddress = serializers.CharField(
261         help_text="MAC address of port",
262         required=False,
263         allow_null=True,
264         allow_blank=True)
265     instId = serializers.CharField(
266         help_text="Instance id of server to which the port is attached to",
267         required=False,
268         allow_null=True,
269         allow_blank=True)
270
271
272 class AffectedCpSerializer(serializers.Serializer):
273     changeType = serializers.ChoiceField(
274         help_text="Type of Change",
275         choices=enum_to_list(VNFC_CHANGE_TYPE),  # ["added", "removed", "modified"],
276         required=True)
277     virtualLinkInstanceId = serializers.CharField(
278         help_text="ID of VL instance",
279         required=False,
280         allow_null=True,
281         allow_blank=True)
282     cpInstanceId = serializers.CharField(
283         help_text="ID of CP instance",
284         required=False,
285         allow_null=True,
286         allow_blank=True)
287     cpdId = serializers.CharField(
288         help_text="ID of CPD in VNFD",
289         required=False,
290         allow_null=True,
291         allow_blank=True)
292     ownerType = serializers.CharField(
293         help_text="Type of Owner",
294         required=False,
295         allow_null=True,
296         allow_blank=True)
297     ownerId = serializers.CharField(
298         help_text="ID of Owner",
299         required=False,
300         allow_null=True,
301         allow_blank=True)
302     portResource = PortResourceSerializer(
303         help_text="Port Resource",
304         required=False,
305         allow_null=True)
306
307
308 class AffectedVirtualStorageLcm(serializers.Serializer):
309     pass
310
311
312 class NotifyLcmReqSerializer(serializers.Serializer):
313     status = serializers.ChoiceField(
314         help_text="Status of operation",
315         choices=enum_to_list(LCM_NOTIFICATION_STATUS),
316         required=True
317     )
318     operation = serializers.ChoiceField(
319         help_text="Lifecycle Operation",
320         choices=enum_to_list(LIFE_CYCLE_OPERATION),
321         required=True
322     )
323     jobId = serializers.CharField(
324         help_text="ID of Job",
325         required=False,
326         allow_null=True,
327         allow_blank=True)
328     vnfdmodule = serializers.CharField(
329         help_text="VNFD Module",
330         required=False,
331         allow_null=True,
332         allow_blank=True)
333     affectedVnfc = AffectedVnfcLcmSerializer(
334         help_text="Affected VNFC",
335         many=True)
336     affectedVl = AffectedVirtualLinkLcmSerializer(
337         help_text="Affected VL",
338         many=True)
339     affectedCp = AffectedCpSerializer(
340         help_text="Affected CP",
341         many=True)
342     affectedVirtualStorage = AffectedVirtualStorageLcm(
343         help_text="Affected Virtual Storage(Not supported)",
344         many=True)
345
346
347 class ScaleVnfDataSerializer(serializers.Serializer):
348     type = serializers.ChoiceField(
349         help_text="Direction of the scaling",
350         choices=enum_to_list(SCALE_VNF_TYPE),
351         required=True)
352     aspectId = serializers.CharField(
353         help_text="Aspect ID of the VNF that is requested to be scaled",
354         required=False,
355         allow_null=True,
356         allow_blank=True)
357     numberOfSteps = serializers.CharField(
358         help_text="Number of scaling steps to be executed as part of this ScaleVnf operation",
359         required=False,
360         allow_null=True,
361         allow_blank=True)
362     additionalParam = serializers.DictField(
363         help_text="Additional parameters passed by the NFVO as input to the scaling process, specific to the VNF being scaled",
364         child=serializers.CharField(
365             help_text="Additional parameters",
366             allow_blank=True),
367         required=False,
368         allow_null=True
369     )
370
371
372 class ScaleVnfReqSerializer(serializers.Serializer):
373     scaleVnfData = ScaleVnfDataSerializer(
374         help_text="Scale data",
375         many=False)
376
377
378 class ScaleVnfRespSerializer(serializers.Serializer):
379     jobId = serializers.CharField(
380         help_text="ID of Job",
381         required=True)
382
383
384 class VerifyVnfReqSerializer(serializers.Serializer):
385     PackageID = serializers.CharField(
386         help_text="ID of Package",
387         required=True)
388
389
390 class VerifyVnfRespSerializer(serializers.Serializer):
391     jobId = serializers.CharField(
392         help_text="ID of Job",
393         required=True)
394
395
396 class VnfmInfoRespSerializer(serializers.Serializer):
397     vnfmId = serializers.CharField(
398         help_text="ID of VNFM",
399         required=True)
400     name = serializers.CharField(
401         help_text="Name of VNFM",
402         required=True)
403     type = serializers.CharField(
404         help_text="Type of VNFM",
405         required=True)
406     vimId = serializers.CharField(
407         help_text="ID of VIM",
408         required=True)
409     vendor = serializers.CharField(
410         help_text="Vendor of VNFM",
411         required=False,
412         allow_null=True,
413         allow_blank=True)
414     version = serializers.CharField(
415         help_text="Version of VNFM",
416         required=False,
417         allow_null=True,
418         allow_blank=True)
419     description = serializers.CharField(
420         help_text="Description of VNFM",
421         required=False,
422         allow_null=True,
423         allow_blank=True)
424     certificateUrl = serializers.CharField(
425         help_text="Certificate PEM of VNFM",
426         required=False,
427         allow_null=True,
428         allow_blank=True)
429     url = serializers.CharField(
430         help_text="url of VNFM",
431         required=False,
432         allow_null=True,
433         allow_blank=True)
434     userName = serializers.CharField(
435         help_text="User Name of VNFM",
436         required=False,
437         allow_null=True,
438         allow_blank=True)
439     password = serializers.CharField(
440         help_text="Password of VNFM",
441         required=False,
442         allow_null=True,
443         allow_blank=True)
444     createTime = serializers.CharField(
445         help_text="Create Time of VNFM",
446         required=False,
447         allow_null=True,
448         allow_blank=True)
449
450
451 class VimInfoRespSerializer(serializers.Serializer):
452     vimId = serializers.CharField(
453         help_text="ID of VIM",
454         required=True)
455     name = serializers.CharField(
456         help_text="Name of VIM",
457         required=True)
458     url = serializers.CharField(
459         help_text="Url of VIM",
460         required=True)
461     userName = serializers.CharField(
462         help_text="User Name of VIM",
463         required=True)
464     password = serializers.CharField(
465         help_text="Password of VIM",
466         required=True)
467     tenantId = serializers.CharField(
468         help_text="Tenant ID of VIM",
469         required=False,
470         allow_null=True,
471         allow_blank=True)
472     tenant = serializers.CharField(
473         help_text="Default Tenant of VIM",
474         required=False,
475         allow_null=True, allow_blank=True)
476     vendor = serializers.CharField(
477         help_text="Vendor of VIM",
478         required=False,
479         allow_null=True,
480         allow_blank=True)
481     version = serializers.CharField(
482         help_text="Version of VIM",
483         required=False,
484         allow_null=True,
485         allow_blank=True)
486     description = serializers.CharField(
487         help_text="Description of VIM",
488         required=False,
489         allow_null=True,
490         allow_blank=True)
491     domain = serializers.CharField(
492         help_text="Domain of VIM",
493         required=False,
494         allow_null=True,
495         allow_blank=True)
496     type = serializers.CharField(
497         help_text="Type of VIM",
498         required=True)
499     createTime = serializers.CharField(
500         help_text="Create Time of VIM",
501         required=False,
502         allow_null=True,
503         allow_blank=True)
504     sslCacert = serializers.CharField(
505         help_text="SSL Cacert of VIM",
506         required=False,
507         allow_null=True,
508         allow_blank=True)
509     sslInsecure = serializers.CharField(
510         help_text="SSL Insecure of VIM",
511         required=False,
512         allow_null=True,
513         allow_blank=True)
514     status = serializers.CharField(
515         help_text="Status of VIM",
516         required=False,
517         allow_null=True,
518         allow_blank=True)
519
520
521 class CandidateSerializer(serializers.Serializer):
522     identifierType = serializers.ChoiceField(
523         help_text="The type of a candidate",
524         choices=enum_to_list(CANDIDATE_IDENTIFIER_TYPE),
525         required=True)
526     identifiers = serializers.ListField(
527         help_text="A list of identifiers",
528         child=serializers.CharField(
529             help_text="One identifier",
530             required=True),
531         required=True)
532     cloudOwner = serializers.CharField(
533         help_text="The name of a cloud owner. Only required if identifier Type is cloudRegionId",
534         required=False,
535         allow_null=True,
536         allow_blank=True)
537
538
539 class LicenseSolutionSerializer(serializers.Serializer):
540     resourceModuleName = serializers.CharField(
541         help_text="Name of Resource as defined in the Service Model",
542         required=True)
543     serviceResourceId = serializers.CharField(
544         help_text="Resource Id defined in the Service Model",
545         required=True)
546     entitlementPoolUUID = serializers.ListField(
547         help_text="A list of entitlementPoolUUIDs",
548         child=serializers.CharField(
549             help_text="entitlementPoolUUID",
550             required=True),
551         required=True)
552     licenseKeyGroupUUID = serializers.ListField(
553         help_text="A list of licenseKeyGroupUUID",
554         child=serializers.CharField(
555             help_text="licenseKeyGroupUUID",
556             required=True),
557         required=True)
558     entitlementPoolInvariantUUID = serializers.ListField(
559         help_text="A list of entitlementPoolInvariantUUIDs",
560         child=serializers.CharField(
561             help_text="entitlementPoolInvariantUUID",
562             required=True),
563         required=True)
564     licenseKeyGroupInvariantUUID = serializers.ListField(
565         help_text="A list of licenseKeyGroupInvariantUUID",
566         child=serializers.CharField(
567             help_text="licenseKeyGroupInvariantUUID",
568             required=True),
569         required=True)
570
571
572 class AssignmentInfoSerializer(serializers.Serializer):
573     key = serializers.CharField(
574         help_text="Any attribute Key needed",
575         required=True)
576     value = serializers.JSONField(
577         help_text="Attribute value for that key",
578         required=True)
579
580
581 class PlacementSolutionSerializer(serializers.Serializer):
582     resourceModuleName = serializers.CharField(
583         help_text="Name of Resource as defined in the Service Model",
584         required=True)
585     serviceResourceId = serializers.CharField(
586         help_text="Resource Id defined in the Service Model",
587         required=True)
588     solution = CandidateSerializer(
589         help_text="The Placement Solution",
590         required=True)
591     assignmentInfo = AssignmentInfoSerializer(
592         help_text="Additonal information related to a candidate",
593         required=False,
594         many=True)
595
596
597 class ComprehensiveSolutionSerializer(serializers.ListSerializer):
598     child = PlacementSolutionSerializer(
599         help_text="A list of placement solutions",
600         allow_null=True,
601         required=True)
602
603
604 class SolutionSerializer(serializers.Serializer):
605     placementSolutions = ComprehensiveSolutionSerializer(
606         help_text="A list of Placement Solutions",
607         required=True,
608         allow_empty=True,
609         many=True)
610     licenseSolutions = LicenseSolutionSerializer(
611         help_text="A list of License Solutions",
612         required=False,
613         many=True)
614
615
616 class PlaceVnfReqSerializer(serializers.Serializer):
617     requestId = serializers.CharField(
618         help_text="ID of Homing Request",
619         required=True)
620     transactionId = serializers.CharField(
621         help_text="ID of Homing Transaction",
622         required=True,
623         allow_null=False,
624         allow_blank=True)
625     statusMessage = serializers.CharField(
626         help_text="Status Message of Request",
627         required=False,
628         allow_null=True,
629         allow_blank=True)
630     requestStatus = serializers.ChoiceField(
631         help_text="The Status of a Request",
632         choices=enum_to_list(PLACE_VNF_REQUEST_STATUS),
633         required=True,
634         allow_null=False)
635     solutions = SolutionSerializer(
636         help_text="Request Solutions",
637         required=True,
638         allow_null=False)