1 # Copyright 2018 ZTE Corporation.
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
7 # http://www.apache.org/licenses/LICENSE-2.0
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.
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
21 class InstVnfReqSerializer(serializers.Serializer):
22 vnfIndex = serializers.CharField(
23 help_text="Index of VNF",
25 nsInstanceId = serializers.CharField(
26 help_text="ID of NS instance",
28 additionalParamForVnf = serializers.CharField(
29 help_text="Additional param for VNF",
35 class InstVnfRespSerializer(serializers.Serializer):
36 vnfInstId = serializers.CharField(
37 help_text="ID of VNF instance",
39 jobId = serializers.CharField(
40 help_text="ID of Job",
44 class VnfVmsSerializer(serializers.Serializer):
45 vmID = serializers.CharField(
48 vmName = serializers.CharField(
49 help_text="Name of VM",
55 class GetVnfRespSerializer(serializers.Serializer):
56 vnfInstId = serializers.CharField(
57 help_text="ID of VNF instance",
59 vnfName = serializers.CharField(
60 help_text="Name of VNF instance",
62 vnfStatus = serializers.CharField(
63 help_text="Status of VNF instance",
65 vnfVms = VnfVmsSerializer(
66 help_text="VMs of VNF",
70 class TerminateVnfReqSerializer(serializers.Serializer):
71 terminationType = serializers.CharField(
72 help_text="Termination Type",
75 gracefulTerminationTimeout = serializers.CharField(
76 help_text="Graceful Termination Timeout",
82 class TerminateVnfRespSerializer(serializers.Serializer):
83 jobId = serializers.CharField(
84 help_text="ID of Job",
88 class ResourceChangeSerializer(serializers.Serializer):
89 type = serializers.ChoiceField(
90 help_text="Change Type",
91 choices=enum_to_list(RESOURCE_CHANGE_TYPE),
93 resourceDefinitionId = serializers.CharField(
94 help_text="Identifier of resource",
98 vdu = serializers.CharField(
99 help_text="Identifier identifier of VDU",
105 class GrantVnfReqSerializer(serializers.Serializer):
106 vnfInstanceId = serializers.CharField(
107 help_text="ID of VNF instance",
109 vnfDescriptorId = serializers.CharField(
110 help_text="ID of VNF Descriptor",
114 lifecycleOperation = serializers.ChoiceField(
115 help_text="Lifecycle Operation",
116 choices=enum_to_list(LIFE_CYCLE_OPERATION),
118 jobId = serializers.CharField(
119 help_text="ID of Job",
123 addResource = ResourceChangeSerializer(
124 help_text="Add resources",
126 removeResource = ResourceChangeSerializer(
127 help_text="Remove resources",
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),
136 class AccessinfoSerializer(serializers.Serializer):
137 tenant = serializers.CharField(
138 help_text="Name of tenant",
142 class VimSerializer(serializers.Serializer):
143 vimid = serializers.CharField(
144 help_text="ID of VIM",
146 accessinfo = AccessinfoSerializer(
147 help_text="Access Info",
149 accessInfo = AccessinfoSerializer(
150 help_text="Access Info",
154 class GrantVnfRespSerializer(serializers.Serializer):
155 vnfInstanceId = serializers.CharField(
156 help_text="ID of VNF instance",
161 help_text="VIM Info",
165 class AffectedVnfcLcmSerializer(serializers.Serializer):
166 vnfcInstanceId = serializers.CharField(
167 help_text="ID of VNFC instance",
171 vduId = serializers.CharField(
172 help_text="ID of VDU in VNFD",
176 changeType = serializers.ChoiceField(
177 help_text="Type of Change",
178 choices=enum_to_list(VNFC_CHANGE_TYPE), # ["added", "removed", "modified"],
180 vimId = serializers.CharField(
181 help_text="ID of VIM",
185 vmId = serializers.CharField(
186 help_text="ID of virtual machine",
190 vmName = serializers.CharField(
191 help_text="Name of virtual machine",
197 class NetworkResourceSerializer(serializers.Serializer):
198 resourceType = serializers.ChoiceField(
199 help_text="Type of Resource",
200 choices=enum_to_list(NETWORK_RESOURCE_TYPE),
202 resourceId = serializers.CharField(
203 help_text="ID of network resource",
207 resourceName = serializers.CharField(
208 help_text="Name of network resource",
214 class AffectedVirtualLinkLcmSerializer(serializers.Serializer):
215 vlInstanceId = serializers.CharField(
216 help_text="ID of VL instance",
220 vldId = serializers.CharField(
221 help_text="ID of VLD in VNFD",
225 changeType = serializers.ChoiceField(
226 help_text="Type of Change",
227 choices=enum_to_list(VNFC_CHANGE_TYPE), # ["added", "removed", "modified"],
229 networkResource = NetworkResourceSerializer(
230 help_text="Network Resource",
235 class PortResourceSerializer(serializers.Serializer):
236 vimId = serializers.CharField(
237 help_text="ID of VIM",
241 resourceId = serializers.CharField(
242 help_text="ID of Resource",
246 resourceName = serializers.CharField(
247 help_text="Name of Resource",
251 tenant = serializers.CharField(
252 help_text="ID of Tenant",
256 ipAddress = serializers.CharField(
257 help_text="IP address of port",
261 macAddress = serializers.CharField(
262 help_text="MAC address of port",
266 instId = serializers.CharField(
267 help_text="Instance id of server to which the port is attached to",
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"],
278 virtualLinkInstanceId = serializers.CharField(
279 help_text="ID of VL instance",
283 cpInstanceId = serializers.CharField(
284 help_text="ID of CP instance",
288 cpdId = serializers.CharField(
289 help_text="ID of CPD in VNFD",
293 ownerType = serializers.CharField(
294 help_text="Type of Owner",
298 ownerId = serializers.CharField(
299 help_text="ID of Owner",
303 portResource = PortResourceSerializer(
304 help_text="Port Resource",
309 class AffectedVirtualStorageLcm(serializers.Serializer):
313 class NotifyLcmReqSerializer(serializers.Serializer):
314 status = serializers.ChoiceField(
315 help_text="Status of operation",
316 choices=enum_to_list(LCM_NOTIFICATION_STATUS),
319 operation = serializers.ChoiceField(
320 help_text="Lifecycle Operation",
321 choices=enum_to_list(LIFE_CYCLE_OPERATION),
324 jobId = serializers.CharField(
325 help_text="ID of Job",
329 vnfdmodule = serializers.CharField(
330 help_text="VNFD Module",
334 affectedVnfc = AffectedVnfcLcmSerializer(
335 help_text="Affected VNFC",
337 affectedVl = AffectedVirtualLinkLcmSerializer(
338 help_text="Affected VL",
340 affectedCp = AffectedCpSerializer(
341 help_text="Affected CP",
343 affectedVirtualStorage = AffectedVirtualStorageLcm(
344 help_text="Affected Virtual Storage(Not supported)",
348 class ScaleVnfDataSerializer(serializers.Serializer):
349 type = serializers.ChoiceField(
350 help_text="Direction of the scaling",
351 choices=enum_to_list(SCALE_VNF_TYPE),
353 aspectId = serializers.CharField(
354 help_text="Aspect ID of the VNF that is requested to be scaled",
358 numberOfSteps = serializers.CharField(
359 help_text="Number of scaling steps to be executed as part of this ScaleVnf operation",
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",
373 class ScaleVnfReqSerializer(serializers.Serializer):
374 scaleVnfData = ScaleVnfDataSerializer(
375 help_text="Scale data",
379 class ScaleVnfRespSerializer(serializers.Serializer):
380 jobId = serializers.CharField(
381 help_text="ID of Job",
385 class VerifyVnfReqSerializer(serializers.Serializer):
386 PackageID = serializers.CharField(
387 help_text="ID of Package",
391 class VerifyVnfRespSerializer(serializers.Serializer):
392 jobId = serializers.CharField(
393 help_text="ID of Job",
397 class VnfmInfoRespSerializer(serializers.Serializer):
398 vnfmId = serializers.CharField(
399 help_text="ID of VNFM",
401 name = serializers.CharField(
402 help_text="Name of VNFM",
404 type = serializers.CharField(
405 help_text="Type of VNFM",
407 vimId = serializers.CharField(
408 help_text="ID of VIM",
410 vendor = serializers.CharField(
411 help_text="Vendor of VNFM",
415 version = serializers.CharField(
416 help_text="Version of VNFM",
420 description = serializers.CharField(
421 help_text="Description of VNFM",
425 certificateUrl = serializers.CharField(
426 help_text="Certificate PEM of VNFM",
430 url = serializers.CharField(
431 help_text="url of VNFM",
435 userName = serializers.CharField(
436 help_text="User Name of VNFM",
440 password = serializers.CharField(
441 help_text="Password of VNFM",
445 createTime = serializers.CharField(
446 help_text="Create Time of VNFM",
452 class VimInfoRespSerializer(serializers.Serializer):
453 vimId = serializers.CharField(
454 help_text="ID of VIM",
456 name = serializers.CharField(
457 help_text="Name of VIM",
459 url = serializers.CharField(
460 help_text="Url of VIM",
462 userName = serializers.CharField(
463 help_text="User Name of VIM",
465 password = serializers.CharField(
466 help_text="Password of VIM",
468 tenantId = serializers.CharField(
469 help_text="Tenant ID of VIM",
473 tenant = serializers.CharField(
474 help_text="Default Tenant of VIM",
476 allow_null=True, allow_blank=True)
477 vendor = serializers.CharField(
478 help_text="Vendor of VIM",
482 version = serializers.CharField(
483 help_text="Version of VIM",
487 description = serializers.CharField(
488 help_text="Description of VIM",
492 domain = serializers.CharField(
493 help_text="Domain of VIM",
497 type = serializers.CharField(
498 help_text="Type of VIM",
500 createTime = serializers.CharField(
501 help_text="Create Time of VIM",
505 sslCacert = serializers.CharField(
506 help_text="SSL Cacert of VIM",
510 sslInsecure = serializers.CharField(
511 help_text="SSL Insecure of VIM",
515 status = serializers.CharField(
516 help_text="Status of VIM",
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),
527 identifiers = serializers.ListField(
528 help_text="A list of identifiers",
529 child=serializers.CharField(
530 help_text="One identifier",
533 cloudOwner = serializers.CharField(
534 help_text="The name of a cloud owner. Only required if identifier Type is cloudRegionId",
540 class LicenseSolutionSerializer(serializers.Serializer):
541 resourceModuleName = serializers.CharField(
542 help_text="Name of Resource as defined in the Service Model",
544 serviceResourceId = serializers.CharField(
545 help_text="Resource Id defined in the Service Model",
547 entitlementPoolUUID = serializers.ListField(
548 help_text="A list of entitlementPoolUUIDs",
549 child=serializers.CharField(
550 help_text="entitlementPoolUUID",
553 licenseKeyGroupUUID = serializers.ListField(
554 help_text="A list of licenseKeyGroupUUID",
555 child=serializers.CharField(
556 help_text="licenseKeyGroupUUID",
559 entitlementPoolInvariantUUID = serializers.ListField(
560 help_text="A list of entitlementPoolInvariantUUIDs",
561 child=serializers.CharField(
562 help_text="entitlementPoolInvariantUUID",
565 licenseKeyGroupInvariantUUID = serializers.ListField(
566 help_text="A list of licenseKeyGroupInvariantUUID",
567 child=serializers.CharField(
568 help_text="licenseKeyGroupInvariantUUID",
573 class AssignmentInfoSerializer(serializers.Serializer):
574 key = serializers.CharField(
575 help_text="Any attribute Key needed",
577 value = serializers.JSONField(
578 help_text="Attribute value for that key",
582 class PlacementSolutionSerializer(serializers.Serializer):
583 resourceModuleName = serializers.CharField(
584 help_text="Name of Resource as defined in the Service Model",
586 serviceResourceId = serializers.CharField(
587 help_text="Resource Id defined in the Service Model",
589 solution = CandidateSerializer(
590 help_text="The Placement Solution",
592 assignmentInfo = AssignmentInfoSerializer(
593 help_text="Additonal information related to a candidate",
598 class ComprehensiveSolutionSerializer(serializers.ListSerializer):
599 child = PlacementSolutionSerializer(
600 help_text="A list of placement solutions",
605 class SolutionSerializer(serializers.Serializer):
606 placementSolutions = ComprehensiveSolutionSerializer(
607 help_text="A list of Placement Solutions",
611 licenseSolutions = LicenseSolutionSerializer(
612 help_text="A list of License Solutions",
617 class PlaceVnfReqSerializer(serializers.Serializer):
618 requestId = serializers.CharField(
619 help_text="ID of Homing Request",
621 transactionId = serializers.CharField(
622 help_text="ID of Homing Transaction",
626 statusMessage = serializers.CharField(
627 help_text="Status Message of Request",
631 requestStatus = serializers.ChoiceField(
632 help_text="The Status of a Request",
633 choices=enum_to_list(PLACE_VNF_REQUEST_STATUS),
636 solutions = SolutionSerializer(
637 help_text="Request Solutions",