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