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
18 class ContextSerializer(serializers.Serializer):
19 globalCustomerId = serializers.CharField(help_text="Global customer ID", required=False, allow_null=True)
20 serviceType = serializers.CharField(help_text="Service type", required=False, allow_null=True)
23 class CreateNsReqSerializer(serializers.Serializer):
24 csarId = serializers.CharField(help_text="Package ID of NS", required=False, allow_null=True)
25 nsName = serializers.CharField(help_text="Name of NS", required=False, allow_null=True)
26 description = serializers.CharField(help_text="Description of NS", required=False, allow_null=True)
27 context = ContextSerializer(help_text="Context of NS", required=False)
30 class CreateNsRespSerializer(serializers.Serializer):
31 nsInstanceId = serializers.CharField(help_text="ID of NS instance", required=True)
34 class VnfInstSerializer(serializers.Serializer):
35 vnfInstanceId = serializers.CharField(help_text="ID of VNF instance", required=True)
36 vnfInstanceName = serializers.CharField(help_text="Name of VNF instance", required=False, allow_null=True)
37 vnfdId = serializers.CharField(help_text="ID of VNFD", required=False, allow_null=True)
40 class CpInstInfoSerializer(serializers.Serializer):
41 cpInstanceId = serializers.CharField(help_text="ID of CP instance", required=True)
42 cpInstanceName = serializers.CharField(help_text="Name of CP instance", required=False, allow_null=True)
43 cpdId = serializers.CharField(help_text="ID of CPD", required=False, allow_null=True)
46 class VlInstSerializer(serializers.Serializer):
47 vlInstanceId = serializers.CharField(help_text="ID of VL instance", required=True)
48 vlInstanceName = serializers.CharField(help_text="Name of VL instance", required=False, allow_null=True)
49 vldId = serializers.CharField(help_text="ID of VLD", required=False, allow_null=True)
50 relatedCpInstanceId = CpInstInfoSerializer(help_text="Related CP instances", many=True)
53 class VnffgInstSerializer(serializers.Serializer):
54 vnffgInstanceId = serializers.CharField(help_text="ID of VNFFG instance", required=True)
55 vnfdId = serializers.CharField(help_text="ID of VNFD", required=False, allow_null=True)
56 pnfId = serializers.CharField(help_text="ID of PNF", required=False, allow_null=True)
57 virtualLinkId = serializers.CharField(help_text="ID of virtual link", required=False, allow_null=True)
58 cpdId = serializers.CharField(help_text="ID of CPD", required=False, allow_null=True)
59 nfp = serializers.CharField(help_text="nfp", required=False, allow_null=True)
62 class QueryNsRespSerializer(serializers.Serializer):
63 nsInstanceId = serializers.CharField(help_text="ID of NS instance", required=True)
64 nsName = serializers.CharField(help_text="Name of NS instance", required=False, allow_null=True)
65 description = serializers.CharField(help_text="Description of NS instance", required=False, allow_null=True)
66 nsdId = serializers.CharField(help_text="ID of NSD", required=True)
67 vnfInfo = VnfInstSerializer(help_text="VNF instances", many=True, required=False, allow_null=True)
68 vlInfo = VlInstSerializer(help_text="VL instances", many=True, required=False, allow_null=True)
69 vnffgInfo = VnffgInstSerializer(help_text="VNFFG instances", many=True, required=False, allow_null=True)
70 nsState = serializers.CharField(help_text="State of NS instance", required=False, allow_null=True)
73 class VimSerializer(serializers.Serializer):
74 vimId = serializers.CharField(help_text="ID of VIM", required=False, allow_null=True)
77 class LocationConstraintSerializer(serializers.Serializer):
78 vnfProfileId = serializers.CharField(help_text="ID of VNF profile", required=False, allow_null=True)
79 locationConstraints = VimSerializer(help_text="Location constraint", required=False, allow_null=True)
82 class AddressRange(serializers.Serializer):
83 minAddress = serializers.IPAddressField(help_text="Lowest IP address belonging to the range.", required=True)
84 maxAddress = serializers.IPAddressField(help_text="Highest IP address belonging to the range.", required=True)
87 class IpAddress(serializers.Serializer):
88 type = serializers.ChoiceField(help_text="The type of the IP addresses.", required=True, choices=["IPV4", "IPV6"])
89 fixedAddresses = serializers.ListField(child=serializers.CharField(help_text="Fixed addresses to assign."), required=False)
90 numDynamicAddresses = serializers.IntegerField(help_text="Number of dynamic addresses to assign.", required=False)
91 addressRange = AddressRange(help_text="An IP address range to be used.", required=False)
92 subnetId = serializers.CharField(help_text="Subnet defined by the identifier of the subnet resource in the VIM.", required=False)
95 class IpOverEthernetAddressData(serializers.Serializer):
96 macAddress = serializers.CharField(help_text="MAC address.", required=False)
97 ipAddresses = IpAddress(help_text="List of IP addresses to assign to the extCP instance.", required=False, many=True)
100 class CpProtocolInfoSerializer(serializers.Serializer):
101 layerProtocol = serializers.ChoiceField(
102 help_text="The identifier of layer(s) and protocol(s) associated to the network address information.",
103 choices=["IP_OVER_ETHERNET"],
106 ipOverEthernet = IpOverEthernetAddressData(
107 help_text="IP addresses over Ethernet to assign to the extCP instance.",
112 class PnfExtCpData(serializers.Serializer):
113 cpInstanceId = serializers.CharField(help_text="Identifier of the CP", required=False, allow_null=False)
114 cpdId = serializers.CharField(help_text="Identifier of the Connection Point Descriptor", required=False, allow_null=False)
115 cpProtocolData = CpProtocolInfoSerializer(help_text="Address assigned for this CP", required=True, allow_null=False, many=True)
118 class AddPnfData(serializers.Serializer):
119 pnfId = serializers.CharField(help_text="Identifier of the PNF", required=True, allow_null=False)
120 pnfName = serializers.CharField(help_text="Name of the PNF", required=True, allow_null=True)
121 pnfdId = serializers.CharField(help_text="Identifier of the PNFD", required=True, allow_null=False)
122 pnfProfileId = serializers.CharField(help_text="Identifier of related PnfProfile in the NSD", required=True, allow_null=False)
123 cpData = PnfExtCpData(help_text="Address assigned for the PNF external CP", required=False, many=True)
126 class InstantNsReqSerializer(serializers.Serializer):
127 locationConstraints = LocationConstraintSerializer(help_text="Location constraints", required=False, many=True)
128 additionalParamForNs = serializers.DictField(
129 help_text="Additional param for NS",
130 child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True),
134 addpnfData = AddPnfData(help_text="Information on the PNF", required=False, many=True)
137 class NsOperateJobSerializer(serializers.Serializer):
138 jobId = serializers.CharField(help_text="ID of NS operate job", required=True)
141 class TerminateNsReqSerializer(serializers.Serializer):
142 terminationType = serializers.CharField(help_text="Type of NS termination", required=False, allow_null=True)
143 gracefulTerminationTimeout = serializers.CharField(help_text="Timeout of NS graceful termination", required=False, allow_null=True)
146 class ActionVmSerializer(serializers.Serializer):
147 vmid = serializers.CharField(help_text="ID of VM", required=False, allow_null=True)
148 vduid = serializers.CharField(help_text="ID of vdu", required=False, allow_null=True)
149 vmname = serializers.CharField(help_text="Name of VM", required=False, allow_null=True)
152 class HealNsAdditionalParamsSerializer(serializers.Serializer):
153 action = serializers.CharField(help_text="Action of NS heal", required=False, allow_null=True)
154 actionvminfo = ActionVmSerializer(help_text="VM info of action", required=False, allow_null=True)
157 class HealVnfDataSerializer(serializers.Serializer):
158 vnfInstanceId = serializers.CharField(help_text="ID of VNF Instance", required=True)
159 cause = serializers.CharField(help_text="Cause of NS heal", required=False, allow_null=True)
160 additionalParams = HealNsAdditionalParamsSerializer(help_text="Additional params of NS heal", required=False, allow_null=True)
163 class HealNsDataSerializer(serializers.Serializer):
164 degreeHealing = serializers.ChoiceField(help_text="degree of healing", choices=["HEAL_RESTORE", "HEAL_QOS", "HEAL_RESET", "PARTIAL_HEALING"], required=True)
165 actionsHealing = serializers.ListField(
166 help_text="A list of actions",
167 child=serializers.CharField(help_text="One action", required=True),
169 healScript = serializers.CharField(help_text="script of NS heal", required=False, allow_null=True)
170 additionalParamsforNs = serializers.CharField(help_text="Addition params of NS heal", required=False, allow_null=True)
173 class HealNsReqSerializer(serializers.Serializer):
174 healVnfData = HealVnfDataSerializer(help_text="Data of heal VNF", required=False, allow_null=True)
175 healNsData = HealNsDataSerializer(help_text="Data of heal NS", required=False, allow_null=True)
178 class InstNsPostDealReqSerializer(serializers.Serializer):
179 status = serializers.CharField(help_text="Status of NS Inst", required=True)
182 class ScaleNsByStepsSerializer(serializers.Serializer):
183 aspectId = serializers.CharField(help_text="ID of aspect", required=True)
184 numberOfSteps = serializers.CharField(help_text="Number of steps", required=True)
185 scalingDirection = serializers.CharField(help_text="Scaling direction", required=True)
188 class ScaleNsDataSerializer(serializers.Serializer):
189 scaleNsByStepsData = ScaleNsByStepsSerializer(help_text="Scale NS by steps data", many=True)
192 class ManualScaleNsReqSerializer(serializers.Serializer):
193 scaleType = serializers.CharField(help_text="Type of NS Scale", required=True)
194 scaleNsData = ScaleNsDataSerializer(help_text="Scale NS data", many=True)