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.ns_pnfs.serializers.pnf_serializer import PnfInstanceSerializer
19 class ContextSerializer(serializers.Serializer):
20 globalCustomerId = serializers.CharField(help_text="Global customer ID", required=False, allow_null=True)
21 serviceType = serializers.CharField(help_text="Service type", required=False, allow_null=True)
24 class CreateNsReqSerializer(serializers.Serializer):
25 csarId = serializers.CharField(help_text="Package ID of NS", required=False, allow_null=True)
26 nsName = serializers.CharField(help_text="Name of NS", required=False, allow_null=True)
27 description = serializers.CharField(help_text="Description of NS", required=False, allow_null=True)
28 context = ContextSerializer(help_text="Context of NS", required=False)
31 class CreateNsRespSerializer(serializers.Serializer):
32 nsInstanceId = serializers.CharField(help_text="ID of NS instance", required=True)
35 class VnfInstSerializer(serializers.Serializer):
36 vnfInstanceId = serializers.CharField(help_text="ID of VNF instance", required=True)
37 vnfInstanceName = serializers.CharField(help_text="Name of VNF instance", required=False, allow_null=True)
38 vnfdId = serializers.CharField(help_text="ID of VNFD", required=False, allow_null=True)
41 class CpInstInfoSerializer(serializers.Serializer):
42 cpInstanceId = serializers.CharField(help_text="ID of CP instance", required=True)
43 cpInstanceName = serializers.CharField(help_text="Name of CP instance", required=False, allow_null=True)
44 cpdId = serializers.CharField(help_text="ID of CPD", required=False, allow_null=True)
47 class VlInstSerializer(serializers.Serializer):
48 vlInstanceId = serializers.CharField(help_text="ID of VL instance", required=True)
49 vlInstanceName = serializers.CharField(help_text="Name of VL instance", required=False, allow_null=True)
50 vldId = serializers.CharField(help_text="ID of VLD", required=False, allow_null=True)
51 relatedCpInstanceId = CpInstInfoSerializer(help_text="Related CP instances", many=True)
54 class VnffgInstSerializer(serializers.Serializer):
55 vnffgInstanceId = serializers.CharField(help_text="ID of VNFFG instance", required=True)
56 vnfdId = serializers.CharField(help_text="ID of VNFD", required=False, allow_null=True)
57 pnfId = serializers.CharField(help_text="ID of PNF", required=False, allow_null=True)
58 virtualLinkId = serializers.CharField(help_text="ID of virtual link", required=False, allow_null=True)
59 cpdId = serializers.CharField(help_text="ID of CPD", required=False, allow_null=True)
60 nfp = serializers.CharField(help_text="nfp", required=False, allow_null=True)
63 class QueryNsRespSerializer(serializers.Serializer):
64 nsInstanceId = serializers.CharField(help_text="ID of NS instance", required=True)
65 nsName = serializers.CharField(help_text="Name of NS instance", required=False, allow_null=True)
66 description = serializers.CharField(help_text="Description of NS instance", required=False, allow_null=True)
67 nsdId = serializers.CharField(help_text="ID of NSD", required=True)
68 vnfInfo = VnfInstSerializer(help_text="VNF instances", many=True, required=False, allow_null=True)
69 pnfInfo = PnfInstanceSerializer(help_text="PNF instances", many=True, required=False, allow_null=True)
70 vlInfo = VlInstSerializer(help_text="VL instances", many=True, required=False, allow_null=True)
71 vnffgInfo = VnffgInstSerializer(help_text="VNFFG instances", many=True, required=False, allow_null=True)
72 nsState = serializers.CharField(help_text="State of NS instance", required=False, allow_null=True)
75 class VimSerializer(serializers.Serializer):
76 vimId = serializers.CharField(help_text="ID of VIM", required=False, allow_null=True)
79 class LocationConstraintSerializer(serializers.Serializer):
80 vnfProfileId = serializers.CharField(help_text="ID of VNF profile", required=False, allow_null=True)
81 locationConstraints = VimSerializer(help_text="Location constraint", required=False, allow_null=True)
84 class AddressRange(serializers.Serializer):
85 minAddress = serializers.IPAddressField(help_text="Lowest IP address belonging to the range.", required=True)
86 maxAddress = serializers.IPAddressField(help_text="Highest IP address belonging to the range.", required=True)
89 class IpAddress(serializers.Serializer):
90 type = serializers.ChoiceField(help_text="The type of the IP addresses.", required=True, choices=["IPV4", "IPV6"])
91 fixedAddresses = serializers.ListField(child=serializers.CharField(help_text="Fixed addresses to assign."), required=False)
92 numDynamicAddresses = serializers.IntegerField(help_text="Number of dynamic addresses to assign.", required=False)
93 addressRange = AddressRange(help_text="An IP address range to be used.", required=False)
94 subnetId = serializers.CharField(help_text="Subnet defined by the identifier of the subnet resource in the VIM.", required=False)
97 class IpOverEthernetAddressData(serializers.Serializer):
98 macAddress = serializers.CharField(help_text="MAC address.", required=False)
99 ipAddresses = IpAddress(help_text="List of IP addresses to assign to the extCP instance.", required=False, many=True)
102 class CpProtocolInfoSerializer(serializers.Serializer):
103 layerProtocol = serializers.ChoiceField(
104 help_text="The identifier of layer(s) and protocol(s) associated to the network address information.",
105 choices=["IP_OVER_ETHERNET"],
108 ipOverEthernet = IpOverEthernetAddressData(
109 help_text="IP addresses over Ethernet to assign to the extCP instance.",
114 class PnfExtCpData(serializers.Serializer):
115 cpInstanceId = serializers.CharField(help_text="Identifier of the CP", required=False, allow_null=False)
116 cpdId = serializers.CharField(help_text="Identifier of the Connection Point Descriptor", required=False, allow_null=False)
117 cpProtocolData = CpProtocolInfoSerializer(help_text="Address assigned for this CP", required=True, allow_null=False, many=True)
120 class AddPnfData(serializers.Serializer):
121 pnfId = serializers.CharField(help_text="Identifier of the PNF", required=True, allow_null=False)
122 pnfName = serializers.CharField(help_text="Name of the PNF", required=True, allow_null=True)
123 pnfdId = serializers.CharField(help_text="Identifier of the PNFD", required=True, allow_null=False)
124 pnfProfileId = serializers.CharField(help_text="Identifier of related PnfProfile in the NSD", required=True, allow_null=False)
125 cpData = PnfExtCpData(help_text="Address assigned for the PNF external CP", required=False, many=True)
128 class InstantNsReqSerializer(serializers.Serializer):
129 locationConstraints = LocationConstraintSerializer(help_text="Location constraints", required=False, many=True)
130 additionalParamForNs = serializers.DictField(
131 help_text="Additional param for NS",
132 child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True),
136 addpnfData = AddPnfData(help_text="Information on the PNF", required=False, many=True)
139 class NsOperateJobSerializer(serializers.Serializer):
140 jobId = serializers.CharField(help_text="ID of NS operate job", required=True)
143 class TerminateNsReqSerializer(serializers.Serializer):
144 terminationType = serializers.CharField(help_text="Type of NS termination", required=False, allow_null=True)
145 gracefulTerminationTimeout = serializers.CharField(help_text="Timeout of NS graceful termination", required=False, allow_null=True)
148 class ActionVmSerializer(serializers.Serializer):
149 vmid = serializers.CharField(help_text="ID of VM", required=False, allow_null=True)
150 vduid = serializers.CharField(help_text="ID of vdu", required=False, allow_null=True)
151 vmname = serializers.CharField(help_text="Name of VM", required=False, allow_null=True)
154 class HealNsAdditionalParamsSerializer(serializers.Serializer):
155 action = serializers.CharField(help_text="Action of NS heal", required=False, allow_null=True)
156 actionvminfo = ActionVmSerializer(help_text="VM info of action", required=False, allow_null=True)
159 class HealVnfDataSerializer(serializers.Serializer):
160 vnfInstanceId = serializers.CharField(help_text="ID of VNF Instance", required=True)
161 cause = serializers.CharField(help_text="Cause of NS heal", required=False, allow_null=True)
162 additionalParams = HealNsAdditionalParamsSerializer(help_text="Additional params of NS heal", required=False, allow_null=True)
165 class HealNsDataSerializer(serializers.Serializer):
166 degreeHealing = serializers.ChoiceField(help_text="degree of healing", choices=["HEAL_RESTORE", "HEAL_QOS", "HEAL_RESET", "PARTIAL_HEALING"], required=True)
167 actionsHealing = serializers.ListField(
168 help_text="A list of actions",
169 child=serializers.CharField(help_text="One action", required=True),
171 healScript = serializers.CharField(help_text="script of NS heal", required=False, allow_null=True)
172 additionalParamsforNs = serializers.CharField(help_text="Addition params of NS heal", required=False, allow_null=True)
175 class HealNsReqSerializer(serializers.Serializer):
176 healVnfData = HealVnfDataSerializer(help_text="Data of heal VNF", required=False, allow_null=True)
177 healNsData = HealNsDataSerializer(help_text="Data of heal NS", required=False, allow_null=True)
180 class InstNsPostDealReqSerializer(serializers.Serializer):
181 status = serializers.CharField(help_text="Status of NS Inst", required=True)
184 class ScaleNsByStepsSerializer(serializers.Serializer):
185 aspectId = serializers.CharField(help_text="ID of aspect", required=True)
186 numberOfSteps = serializers.CharField(help_text="Number of steps", required=True)
187 scalingDirection = serializers.CharField(help_text="Scaling direction", required=True)
190 class ScaleNsDataSerializer(serializers.Serializer):
191 scaleNsByStepsData = ScaleNsByStepsSerializer(help_text="Scale NS by steps data", many=True)
194 class ManualScaleNsReqSerializer(serializers.Serializer):
195 scaleType = serializers.CharField(help_text="Type of NS Scale", required=True)
196 scaleNsData = ScaleNsDataSerializer(help_text="Scale NS data", many=True)