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.ListField(
29 child=(serializers.DictField(help_text="Additional param for VNF")),
34 class InstVnfRespSerializer(serializers.Serializer):
35 vnfInstId = serializers.CharField(
36 help_text="ID of VNF instance",
38 jobId = serializers.CharField(
39 help_text="ID of Job",
43 class VnfVmsSerializer(serializers.Serializer):
44 vmId = serializers.CharField(
47 vmName = serializers.CharField(
48 help_text="Name of VM",
54 class GetVnfRespSerializer(serializers.Serializer):
55 vnfInstId = serializers.CharField(
56 help_text="ID of VNF instance",
58 vnfName = serializers.CharField(
59 help_text="Name of VNF instance",
61 vnfStatus = serializers.CharField(
62 help_text="Status of VNF instance",
64 vnfVms = VnfVmsSerializer(
65 help_text="VMs of VNF",
69 class TerminateVnfReqSerializer(serializers.Serializer):
70 terminationType = serializers.CharField(
71 help_text="Termination Type",
74 gracefulTerminationTimeout = serializers.CharField(
75 help_text="Graceful Termination Timeout",
81 class TerminateVnfRespSerializer(serializers.Serializer):
82 jobId = serializers.CharField(
83 help_text="ID of Job",
87 class ResourceChangeSerializer(serializers.Serializer):
88 type = serializers.ChoiceField(
89 help_text="Change Type",
90 choices=enum_to_list(RESOURCE_CHANGE_TYPE),
92 resourceDefinitionId = serializers.CharField(
93 help_text="Identifier of resource",
97 vdu = serializers.CharField(
98 help_text="Identifier identifier of VDU",
104 class GrantVnfReqSerializer(serializers.Serializer):
105 vnfInstanceId = serializers.CharField(
106 help_text="ID of VNF instance",
108 vnfDescriptorId = serializers.CharField(
109 help_text="ID of VNF Descriptor",
113 lifecycleOperation = serializers.ChoiceField(
114 help_text="Lifecycle Operation",
115 choices=enum_to_list(LIFE_CYCLE_OPERATION),
117 jobId = serializers.CharField(
118 help_text="ID of Job",
122 addResource = ResourceChangeSerializer(
123 help_text="Add resources",
125 removeResource = ResourceChangeSerializer(
126 help_text="Remove resources",
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),
135 class AccessinfoSerializer(serializers.Serializer):
136 tenant = serializers.CharField(
137 help_text="Name of tenant",
141 class VimSerializer(serializers.Serializer):
142 vimid = serializers.CharField(
143 help_text="ID of VIM",
145 accessinfo = AccessinfoSerializer(
146 help_text="Access Info",
148 accessInfo = AccessinfoSerializer(
149 help_text="Access Info",
153 class GrantVnfRespSerializer(serializers.Serializer):
154 vnfInstanceId = serializers.CharField(
155 help_text="ID of VNF instance",
160 help_text="VIM Info",
164 class AffectedVnfcLcmSerializer(serializers.Serializer):
165 vnfcInstanceId = serializers.CharField(
166 help_text="ID of VNFC instance",
170 vduId = serializers.CharField(
171 help_text="ID of VDU in VNFD",
175 changeType = serializers.ChoiceField(
176 help_text="Type of Change",
177 choices=enum_to_list(VNFC_CHANGE_TYPE), # ["added", "removed", "modified"],
179 vimId = serializers.CharField(
180 help_text="ID of VIM",
184 vmId = serializers.CharField(
185 help_text="ID of virtual machine",
189 vmName = serializers.CharField(
190 help_text="Name of virtual machine",
196 class NetworkResourceSerializer(serializers.Serializer):
197 resourceType = serializers.ChoiceField(
198 help_text="Type of Resource",
199 choices=enum_to_list(NETWORK_RESOURCE_TYPE),
201 resourceId = serializers.CharField(
202 help_text="ID of network resource",
206 resourceName = serializers.CharField(
207 help_text="Name of network resource",
213 class AffectedVirtualLinkLcmSerializer(serializers.Serializer):
214 vlInstanceId = serializers.CharField(
215 help_text="ID of VL instance",
219 vldId = serializers.CharField(
220 help_text="ID of VLD in VNFD",
224 changeType = serializers.ChoiceField(
225 help_text="Type of Change",
226 choices=enum_to_list(VNFC_CHANGE_TYPE), # ["added", "removed", "modified"],
228 networkResource = NetworkResourceSerializer(
229 help_text="Network Resource",
234 class PortResourceSerializer(serializers.Serializer):
235 vimId = serializers.CharField(
236 help_text="ID of VIM",
240 resourceId = serializers.CharField(
241 help_text="ID of Resource",
245 resourceName = serializers.CharField(
246 help_text="Name of Resource",
250 tenant = serializers.CharField(
251 help_text="ID of Tenant",
255 ipAddress = serializers.CharField(
256 help_text="IP address of port",
260 macAddress = serializers.CharField(
261 help_text="MAC address of port",
265 instId = serializers.CharField(
266 help_text="Instance id of server to which the port is attached to",
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"],
277 virtualLinkInstanceId = serializers.CharField(
278 help_text="ID of VL instance",
282 cpInstanceId = serializers.CharField(
283 help_text="ID of CP instance",
287 cpdId = serializers.CharField(
288 help_text="ID of CPD in VNFD",
292 ownerType = serializers.CharField(
293 help_text="Type of Owner",
297 ownerId = serializers.CharField(
298 help_text="ID of Owner",
302 portResource = PortResourceSerializer(
303 help_text="Port Resource",
308 class AffectedVirtualStorageLcm(serializers.Serializer):
312 class NotifyLcmReqSerializer(serializers.Serializer):
313 status = serializers.ChoiceField(
314 help_text="Status of operation",
315 choices=enum_to_list(LCM_NOTIFICATION_STATUS),
318 operation = serializers.ChoiceField(
319 help_text="Lifecycle Operation",
320 choices=enum_to_list(LIFE_CYCLE_OPERATION),
323 jobId = serializers.CharField(
324 help_text="ID of Job",
328 vnfdmodule = serializers.CharField(
329 help_text="VNFD Module",
333 affectedVnfc = AffectedVnfcLcmSerializer(
334 help_text="Affected VNFC",
336 affectedVl = AffectedVirtualLinkLcmSerializer(
337 help_text="Affected VL",
339 affectedCp = AffectedCpSerializer(
340 help_text="Affected CP",
342 affectedVirtualStorage = AffectedVirtualStorageLcm(
343 help_text="Affected Virtual Storage(Not supported)",
347 class ScaleVnfDataSerializer(serializers.Serializer):
348 type = serializers.ChoiceField(
349 help_text="Direction of the scaling",
350 choices=enum_to_list(SCALE_VNF_TYPE),
352 aspectId = serializers.CharField(
353 help_text="Aspect ID of the VNF that is requested to be scaled",
357 numberOfSteps = serializers.CharField(
358 help_text="Number of scaling steps to be executed as part of this ScaleVnf operation",
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",
372 class ScaleVnfReqSerializer(serializers.Serializer):
373 scaleVnfData = ScaleVnfDataSerializer(
374 help_text="Scale data",
378 class ScaleVnfRespSerializer(serializers.Serializer):
379 jobId = serializers.CharField(
380 help_text="ID of Job",
384 class VerifyVnfReqSerializer(serializers.Serializer):
385 PackageID = serializers.CharField(
386 help_text="ID of Package",
390 class VerifyVnfRespSerializer(serializers.Serializer):
391 jobId = serializers.CharField(
392 help_text="ID of Job",
396 class VnfmInfoRespSerializer(serializers.Serializer):
397 vnfmId = serializers.CharField(
398 help_text="ID of VNFM",
400 name = serializers.CharField(
401 help_text="Name of VNFM",
403 type = serializers.CharField(
404 help_text="Type of VNFM",
406 vimId = serializers.CharField(
407 help_text="ID of VIM",
409 vendor = serializers.CharField(
410 help_text="Vendor of VNFM",
414 version = serializers.CharField(
415 help_text="Version of VNFM",
419 description = serializers.CharField(
420 help_text="Description of VNFM",
424 certificateUrl = serializers.CharField(
425 help_text="Certificate PEM of VNFM",
429 url = serializers.CharField(
430 help_text="url of VNFM",
434 userName = serializers.CharField(
435 help_text="User Name of VNFM",
439 password = serializers.CharField(
440 help_text="Password of VNFM",
444 createTime = serializers.CharField(
445 help_text="Create Time of VNFM",
451 class VimInfoRespSerializer(serializers.Serializer):
452 vimId = serializers.CharField(
453 help_text="ID of VIM",
455 name = serializers.CharField(
456 help_text="Name of VIM",
458 url = serializers.CharField(
459 help_text="Url of VIM",
461 userName = serializers.CharField(
462 help_text="User Name of VIM",
464 password = serializers.CharField(
465 help_text="Password of VIM",
467 tenantId = serializers.CharField(
468 help_text="Tenant ID of VIM",
472 tenant = serializers.CharField(
473 help_text="Default Tenant of VIM",
475 allow_null=True, allow_blank=True)
476 vendor = serializers.CharField(
477 help_text="Vendor of VIM",
481 version = serializers.CharField(
482 help_text="Version of VIM",
486 description = serializers.CharField(
487 help_text="Description of VIM",
491 domain = serializers.CharField(
492 help_text="Domain of VIM",
496 type = serializers.CharField(
497 help_text="Type of VIM",
499 createTime = serializers.CharField(
500 help_text="Create Time of VIM",
504 sslCacert = serializers.CharField(
505 help_text="SSL Cacert of VIM",
509 sslInsecure = serializers.CharField(
510 help_text="SSL Insecure of VIM",
514 status = serializers.CharField(
515 help_text="Status of VIM",
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),
526 identifiers = serializers.ListField(
527 help_text="A list of identifiers",
528 child=serializers.CharField(
529 help_text="One identifier",
532 cloudOwner = serializers.CharField(
533 help_text="The name of a cloud owner. Only required if identifier Type is cloudRegionId",
539 class LicenseSolutionSerializer(serializers.Serializer):
540 resourceModuleName = serializers.CharField(
541 help_text="Name of Resource as defined in the Service Model",
543 serviceResourceId = serializers.CharField(
544 help_text="Resource Id defined in the Service Model",
546 entitlementPoolUUID = serializers.ListField(
547 help_text="A list of entitlementPoolUUIDs",
548 child=serializers.CharField(
549 help_text="entitlementPoolUUID",
552 licenseKeyGroupUUID = serializers.ListField(
553 help_text="A list of licenseKeyGroupUUID",
554 child=serializers.CharField(
555 help_text="licenseKeyGroupUUID",
558 entitlementPoolInvariantUUID = serializers.ListField(
559 help_text="A list of entitlementPoolInvariantUUIDs",
560 child=serializers.CharField(
561 help_text="entitlementPoolInvariantUUID",
564 licenseKeyGroupInvariantUUID = serializers.ListField(
565 help_text="A list of licenseKeyGroupInvariantUUID",
566 child=serializers.CharField(
567 help_text="licenseKeyGroupInvariantUUID",
572 class AssignmentInfoSerializer(serializers.Serializer):
573 key = serializers.CharField(
574 help_text="Any attribute Key needed",
576 value = serializers.JSONField(
577 help_text="Attribute value for that key",
581 class PlacementSolutionSerializer(serializers.Serializer):
582 resourceModuleName = serializers.CharField(
583 help_text="Name of Resource as defined in the Service Model",
585 serviceResourceId = serializers.CharField(
586 help_text="Resource Id defined in the Service Model",
588 solution = CandidateSerializer(
589 help_text="The Placement Solution",
591 assignmentInfo = AssignmentInfoSerializer(
592 help_text="Additonal information related to a candidate",
597 class ComprehensiveSolutionSerializer(serializers.ListSerializer):
598 child = PlacementSolutionSerializer(
599 help_text="A list of placement solutions",
604 class SolutionSerializer(serializers.Serializer):
605 placementSolutions = ComprehensiveSolutionSerializer(
606 help_text="A list of Placement Solutions",
610 licenseSolutions = LicenseSolutionSerializer(
611 help_text="A list of License Solutions",
616 class PlaceVnfReqSerializer(serializers.Serializer):
617 requestId = serializers.CharField(
618 help_text="ID of Homing Request",
620 transactionId = serializers.CharField(
621 help_text="ID of Homing Transaction",
625 statusMessage = serializers.CharField(
626 help_text="Status Message of Request",
630 requestStatus = serializers.ChoiceField(
631 help_text="The Status of a Request",
632 choices=enum_to_list(PLACE_VNF_REQUEST_STATUS),
635 solutions = SolutionSerializer(
636 help_text="Request Solutions",