Fix Pnf data of in instant req swagger
[vfc/nfvo/lcm.git] / lcm / ns / serializers / ns_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.ns_pnfs.serializers.pnf_serializer import PnfInstanceSerializer
17
18
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)
22
23
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)
29
30
31 class CreateNsRespSerializer(serializers.Serializer):
32     nsInstanceId = serializers.CharField(help_text="ID of NS instance", required=True)
33
34
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)
39
40
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)
45
46
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)
52
53
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)
61
62
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)
73
74
75 class VnfLocationSerializer(serializers.Serializer):
76     vimId = serializers.CharField(help_text="ID of VIM", required=False, allow_null=True)
77
78
79 class LocationConstraintSerializer(serializers.Serializer):
80     vnfProfileId = serializers.CharField(help_text="ID of VNF profile", required=False, allow_null=True)
81     locationConstraints = VnfLocationSerializer(help_text="Location constraint", required=False, allow_null=True)
82
83
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)
87
88
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)
95
96
97 class IpOverEthernetSerializer(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)
100
101
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"],
106         required=True,
107         allow_null=False)
108     ipOverEthernet = IpOverEthernetSerializer(
109         help_text="IP addresses over Ethernet to assign to the extCP instance.",
110         required=False,
111         allow_null=True)
112
113
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)
118
119
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)
126
127
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),
133         required=False,
134         allow_null=True
135     )
136     addpnfData = AddPnfData(help_text="Information on the PNF", required=False, many=True)
137
138
139 class NsOperateJobSerializer(serializers.Serializer):
140     jobId = serializers.CharField(help_text="ID of NS operate job", required=True)
141
142
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)
146
147
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)
152
153
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)
157
158
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)
163
164
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),
170         required=False)
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)
173
174
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)
178
179
180 class InstNsPostDealReqSerializer(serializers.Serializer):
181     status = serializers.CharField(help_text="Status of NS Inst", required=True)
182
183
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)
188
189
190 class ScaleNsDataSerializer(serializers.Serializer):
191     scaleNsByStepsData = ScaleNsByStepsSerializer(help_text="Scale NS by steps data", many=True)
192
193
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)