aboutsummaryrefslogtreecommitdiffstats
path: root/lcm/ns/serializers/sol/ns_instance.py
diff options
context:
space:
mode:
Diffstat (limited to 'lcm/ns/serializers/sol/ns_instance.py')
-rw-r--r--lcm/ns/serializers/sol/ns_instance.py650
1 files changed, 650 insertions, 0 deletions
diff --git a/lcm/ns/serializers/sol/ns_instance.py b/lcm/ns/serializers/sol/ns_instance.py
new file mode 100644
index 00000000..73340bf5
--- /dev/null
+++ b/lcm/ns/serializers/sol/ns_instance.py
@@ -0,0 +1,650 @@
+# Copyright 2019 ZTE Corporation.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+from rest_framework import serializers
+
+from lcm.ns.serializers.sol.pub_serializers import LinkSerializer
+from lcm.ns.serializers.sol.cp_serializers import CpProtocolDataSerializer, CpProtocolInfoSerializer, VnfExtCpInfoSerializer
+from lcm.ns.serializers.sol.resource_handle import ResourceHandleSerializer
+from lcm.ns.serializers.sol.ext_virtual_link_info import ExtVirtualLinkInfoSerializer
+from lcm.ns.serializers.sol.ext_managed_virtual_link_info import ExtManagedVirtualLinkInfo
+from lcm.ns.serializers.sol.pub_serializers import AffinityOrAntiAffinityRuleSerializer
+
+INSTANTIATION_STATE = [
+ "NOT_INSTANTIATED",
+ "INSTANTIATED"
+]
+
+
+class VnfScaleInfoSerializer(serializers.Serializer):
+ aspectlId = serializers.Serializer(help_text="The scaling aspect", required=True)
+ scaleLevel = serializers.Serializer(help_text="The scale level for that aspect", required=True)
+
+
+class NsScaleInfoSerializer(serializers.Serializer):
+ nsScalingAspectId = serializers.CharField(help_text="Identifier of the NS scaling aspect.", required=True)
+ nsScaleLevelId = serializers.CharField(help_text="Identifier of the NS scale level.", required=True)
+
+
+class VnfcCpInfo(serializers.Serializer):
+ id = serializers.CharField(
+ help_text="Identifier of the external CP instance and the related information instance.",
+ max_length=255,
+ required=True,
+ allow_null=False,
+ allow_blank=False)
+ cpdId = serializers.CharField(
+ help_text="Identifier of the external CPD, VnfExtCpd, in the VNFD.",
+ max_length=255,
+ required=True,
+ allow_null=False,
+ allow_blank=False)
+ vnfExtCpId = serializers.CharField(
+ help_text="When the VNFC CP is exposed as external CP of the VNF, the identifier of this external VNF CP.",
+ required=False,
+ max_length=255,
+ allow_null=True,
+ allow_blank=True)
+ cpProtocolInfo = CpProtocolInfoSerializer(
+ help_text="Network protocol information for this CP.",
+ many=True,
+ required=False,
+ allow_null=True)
+ vnfLinkPortId = serializers.CharField(
+ help_text="Identifier of the vnfLinkPorts structure in the vnfVirtualLinkResourceInfo structure.",
+ max_length=255,
+ required=True,
+ allow_null=False,
+ allow_blank=False)
+
+
+class VnfcResourceInfoSerializer(serializers.Serializer):
+ id = serializers.CharField(
+ help_text="Identifier of this VnfcResourceInfo instance.",
+ max_length=255,
+ required=False,
+ allow_null=False)
+ vduId = serializers.CharField(
+ help_text="Reference to the applicable VDU in the VNFD.",
+ max_length=255,
+ required=False,
+ allow_null=False)
+ computeResource = ResourceHandleSerializer(
+ help_text="Reference to the VirtualCompute resource.",
+ required=True,
+ allow_null=False)
+ storageResourceIds = serializers.ListSerializer(
+ help_text="References to the VirtualStorage resources. \
+ The value refers to a VirtualStorageResourceInfo item in the VnfInstance.",
+ child=serializers.CharField(help_text="Identifier In Vnf", allow_blank=True),
+ required=False,
+ allow_null=True)
+ reservationId = serializers.CharField(
+ help_text="The reservation identifier applicable to the resource.",
+ max_length=255,
+ required=False,
+ allow_null=True,
+ allow_blank=True)
+ vnfcCpInfo = VnfcCpInfo(
+ help_text="CPs of the VNFC instance. \
+ Shall be present when that particular CP of the VNFC instance is associated to an external CP of the VNF instance.",
+ many=True,
+ required=False,
+ allow_null=True)
+ metadata = serializers.DictField(
+ help_text="Metadata about this resource.",
+ child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True),
+ required=False,
+ allow_null=True)
+
+
+class VnfLinkPortInfo(serializers.Serializer):
+ id = serializers.CharField(
+ help_text="Identifier of this link port as provided by the entity that has created the link port.",
+ max_length=255,
+ required=True,
+ allow_null=False,
+ allow_blank=False)
+ resourceHandle = ResourceHandleSerializer(
+ help_text="Reference to the virtualised network resource realizing this link port.",
+ required=True,
+ allow_null=False)
+ cpInstanceId = serializers.CharField(
+ help_text="When the link port is used for external connectivity by the VNF, \
+ this attribute represents the identifier of the external CP of the VNF to be connected to this link port.",
+ max_length=255,
+ required=False,
+ allow_null=True,
+ allow_blank=True)
+
+
+class VnfVirtualLinkResourceInfoSerializer(serializers.Serializer):
+ id = serializers.CharField(
+ help_text="Identifier of this VnfVirtualLinkResourceInfo instance.",
+ max_length=255,
+ required=True,
+ allow_null=False,
+ allow_blank=False)
+ virtualLinkDescId = serializers.CharField(
+ help_text="Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.",
+ max_length=255,
+ required=True,
+ allow_null=False,
+ allow_blank=False)
+ networkResource = ResourceHandleSerializer(
+ help_text="Reference to the VirtualNetwork resource.",
+ required=True,
+ allow_null=False)
+ reservationId = serializers.CharField(
+ help_text="The reservation identifier applicable to the resource.",
+ max_length=255,
+ required=False,
+ allow_null=True,
+ allow_blank=True)
+ vnfLinkPorts = VnfLinkPortInfo(
+ help_text="Links ports of this VL. \
+ Shall be present when the linkPort is used for external connectivity by the VNF",
+ many=True,
+ required=False,
+ allow_null=True)
+ metadata = serializers.DictField(
+ help_text="Metadata about this resource.",
+ child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True),
+ required=False,
+ allow_null=True)
+
+
+class VirtualStorageResourceInfoSerializer(serializers.Serializer):
+ id = serializers.CharField(
+ help_text="Identifier of this VirtualStorageResourceInfo instance.",
+ max_length=255,
+ required=True,
+ allow_null=False,
+ allow_blank=False)
+ virtualStorageDescId = serializers.CharField(
+ help_text="Identifier of the VirtualStorageDesc in the VNFD.",
+ max_length=255,
+ required=False,
+ allow_null=True,
+ allow_blank=True)
+ storageResource = ResourceHandleSerializer(
+ help_text="Reference to the VirtualStorage resource.",
+ required=True,
+ allow_null=False)
+ reservationId = serializers.CharField(
+ help_text="The reservation identifier applicable to the resource.",
+ max_length=255,
+ required=False,
+ allow_null=True,
+ allow_blank=True)
+ metadata = serializers.DictField(
+ help_text="Metadata about this resource.",
+ child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True),
+ required=False,
+ allow_null=True)
+
+
+class InstantiatedVnfInfo(serializers.Serializer):
+ flavourId = serializers.CharField(
+ help_text="Identifier of the VNF deployment flavour applied to this VNF instance.",
+ max_length=255,
+ required=True,
+ allow_null=True,
+ allow_blank=False)
+ vnfState = serializers.ChoiceField(
+ help_text="State of the VNF instance.",
+ choices=["STARTED", "STOPPED"],
+ required=True,
+ allow_null=True,
+ allow_blank=False)
+ scaleStatus = VnfScaleInfoSerializer(
+ help_text="Scale status of the VNF, one entry per aspect. \
+ Represents for every scaling aspect how big the VNF has been scaled w.r.t. that aspect.",
+ many=True,
+ required=False,
+ allow_null=True)
+ extCpInfo = VnfExtCpInfoSerializer(
+ help_text="Information about the external CPs exposed by the VNF instance.",
+ many=True,
+ required=True,
+ allow_null=False)
+ extVirtualLinkInfo = ExtVirtualLinkInfoSerializer(
+ help_text="Information about the external VLs the VNF instance is connected to.",
+ many=True,
+ required=False,
+ allow_null=True)
+ extManagedVirtualLinkInfo = ExtManagedVirtualLinkInfo(
+ help_text="Information about the externally-managed inner VLs of the VNF instance.",
+ many=True,
+ required=False,
+ allow_null=True)
+ monitoringParameters = serializers.DictField(
+ help_text="Active monitoring parameters.",
+ child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True),
+ required=False,
+ allow_null=True)
+ localizationLanguage = serializers.CharField(
+ help_text="Information about localization language of the VNF.",
+ max_length=255,
+ required=False,
+ allow_null=True,
+ allow_blank=True)
+ vnfcResourceInfo = VnfcResourceInfoSerializer(
+ help_text="Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.",
+ many=True,
+ required=False,
+ allow_null=True)
+ vnfVirtualLinkResourceInfo = VnfVirtualLinkResourceInfoSerializer(
+ help_text="Information about the virtualised network resources used by the VLs of the VNF instance.",
+ many=True,
+ required=False,
+ allow_null=True)
+ virtualStorageResourceInfo = VirtualStorageResourceInfoSerializer(
+ help_text="Information about the virtualised storage resources used as storage for the VNF instance.",
+ many=True,
+ required=False,
+ allow_null=True)
+
+
+class VnfInstanceLinks(serializers.Serializer):
+ href = LinkSerializer(
+ help_text="URI of this resource.",
+ required=True,
+ allow_null=False)
+ indicators = LinkSerializer(
+ help_text="Indicators related to this VNF instance.",
+ required=False,
+ allow_null=True)
+ instantiate = LinkSerializer(
+ help_text="Link to the instantiate task resource.",
+ required=False,
+ allow_null=True)
+ termiante = LinkSerializer(
+ help_text="Link to the terminate task resource.",
+ required=False,
+ allow_null=True)
+ scale = LinkSerializer(
+ help_text="Link to the scale task resource.",
+ required=False,
+ allow_null=True)
+ scaleToLevel = LinkSerializer(
+ help_text="Link to the scale_to_level task resource.",
+ required=False,
+ allow_null=True)
+ changeFlavour = LinkSerializer(
+ help_text="Link to the change_flavour task resource.",
+ required=False,
+ allow_null=True)
+ heal = LinkSerializer(
+ help_text="Link to the heal task resource.",
+ required=False,
+ allow_null=True)
+ operate = LinkSerializer(
+ help_text="Link to the operate task resource.",
+ required=False,
+ allow_null=True)
+ changeExtConn = LinkSerializer(
+ help_text="Link to the change_ext_conn task resource.",
+ required=False,
+ allow_null=True)
+
+
+class VnfInstanceSerializer(serializers.Serializer):
+ id = serializers.CharField(
+ help_text="Identifier of the VNF instance.",
+ max_length=255,
+ required=True,
+ allow_null=False,
+ allow_blank=False)
+ vnfInstanceName = serializers.CharField(
+ help_text="Name of the VNF instance.",
+ max_length=255,
+ required=False,
+ allow_null=True,
+ allow_blank=True)
+ vnfInstanceDescription = serializers.CharField(
+ help_text="Human-readable description of the VNF instance.",
+ required=False,
+ allow_null=True,
+ allow_blank=True)
+ vnfdId = serializers.CharField(
+ help_text="Identifier of the VNFD on which the VNF instance is based.",
+ max_length=255,
+ required=False,
+ allow_null=True,
+ allow_blank=True)
+ vnfProvider = serializers.CharField(
+ help_text="Provider of the VNF and the VNFD.",
+ max_length=255,
+ required=True,
+ allow_null=True,
+ allow_blank=False)
+ vnfProductName = serializers.CharField(
+ help_text="Name to identify the VNF Product.",
+ max_length=255,
+ required=False,
+ allow_null=True,
+ allow_blank=True)
+ vnfSoftwareVersion = serializers.CharField(
+ help_text="Software version of the VNF.",
+ max_length=255,
+ required=False,
+ allow_null=True,
+ allow_blank=True)
+ vnfdVersion = serializers.CharField(
+ help_text="Identifies the version of the VNFD.",
+ max_length=255,
+ required=True,
+ allow_null=True,
+ allow_blank=False)
+ vnfPkgId = serializers.CharField(
+ help_text="Identifier of information held by the NFVO about the specific VNF package on which the VNF is based. \
+ This attribute can be modified with the PATCH method.",
+ max_length=255,
+ required=True,
+ allow_null=True,
+ allow_blank=False)
+ vnfConfigurableProperties = serializers.DictField(
+ help_text="Current values of the configurable properties of the VNF instance. \
+ Configurable properties referred in this attribute are declared in the VNFD",
+ child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True),
+ required=False,
+ allow_null=True,)
+ vimId = serializers.ListField(
+ help_text="Identifier set of a VIM that manages resources for the VNF instance.",
+ child=serializers.CharField(help_text="Identifier of a VIM that manages resources for the VNF instance.", allow_null=False),
+ required=False)
+ instantiationState = serializers.ChoiceField(
+ help_text="The instantiation state of the VNF.",
+ choices=INSTANTIATION_STATE,
+ required=True,
+ allow_null=False,
+ allow_blank=False)
+ instantiatedVnfInfo = InstantiatedVnfInfo(
+ help_text="Information specific to an instantiated VNF instance. \
+ This attribute shall be present if the instantiateState attribute value is INSTANTIATED",
+ required=False,
+ allow_null=True)
+ metadata = serializers.DictField(
+ help_text="Additional VNF-specific metadata describing the VNF instance.\
+ This attribute can be modified with the PATCH method.",
+ child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True),
+ required=False,
+ allow_null=True)
+ extensions = serializers.DictField(
+ help_text="VNF-specific attributes that affect the lifecycle management of this VNF instance by the VNFM, or the lifecycle management scripts. \
+ This attribute can be modified with the PATCH method.",
+ child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True),
+ required=False,
+ allow_null=True)
+ _links = VnfInstanceLinks(
+ help_text="Links to resources related to this resource.",
+ required=False,
+ allow_null=False)
+
+
+class PnfExtCpInfoSerializer(serializers.Serializer):
+ cpInstanceId = serializers.CharField(help_text="Identifier of the CP in the scope of the PNF.",
+ required=True)
+
+ cpdId = serializers.CharField(help_text="Identifier of (reference to) the Connection Point Descriptor"
+ "(CPD) for this CP.", required=True)
+
+ cpProtocolData = CpProtocolDataSerializer(help_text="Parameters for configuring the network protocols on"
+ "the CP.", required=True, many=True)
+
+
+class PnfInfoSerializer(serializers.Serializer):
+ pnfId = serializers.CharField(help_text="Identifier of the PNF.", required=True)
+ pnfName = serializers.CharField(help_text="Name of the PNF.", required=True)
+ pnfdId = serializers.CharField(help_text="Identifier of the PNFD on which the PNF is based.", required=True)
+ pnfdInfoId = serializers.CharField(help_text="Identifier of the PNFD information onject related to this PNF.", required=True)
+ pnfProfileId = serializers.CharField(help_text="Identifier of the related PnfProfile in the NSD on which the PNF is based.", required=True)
+ cpInfo = PnfExtCpInfoSerializer(help_text="Information on the external CP of the PNF", required=True, many=True)
+
+
+class NsLinkPortInfo(serializers.Serializer):
+ id = serializers.CharField(
+ help_text="Identifier of this link port as provided by the entity that has created the link port.",
+ max_length=255,
+ required=True,
+ allow_blank=False,
+ allow_null=False)
+ resourceHandle = ResourceHandleSerializer(
+ help_text="Reference to the virtualised resource realizing this link port.",
+ required=True,
+ allow_null=False)
+ cpInstanceId = serializers.CharField(
+ help_text="Identifier of the external CP of the VNF connected to this link port. \
+ There shall be at most one link port associated with any external connection point instance.",
+ max_length=255,
+ required=False,
+ allow_blank=True,
+ allow_null=True)
+
+
+class NsVirtualLinkInfoSerializer(serializers.Serializer):
+ id = serializers.CharField(help_text="Identifier of the VL instance.", required=True)
+ nsVirtualLinkDescId = serializers.CharField(help_text="Identifier of the VLD in the NSD.", required=True)
+ nsVirtualLinkProfileId = serializers.CharField(help_text="Identifier of the VL profile in the NSD.", required=True)
+ resourceHandle = ResourceHandleSerializer(help_text="Identifier(s) of the virtualised network resource(s) realizing the VL instance", required=True, many=True)
+ linkPort = NsLinkPortInfo(help_text="Link ports of this VL.", many=True, required=False, allow_null=True)
+
+
+class NsCpHandleSerializer(serializers.Serializer):
+ vnfInstanceId = serializers.CharField(help_text="Identifier of the VNF instance associated to the CP"
+ "instance.", required=False, allow_null=True)
+ vnfExtCpInstanceId = serializers.CharField(help_text="Identifier of the VNF external CP instance in the"
+ "scope of the VNF instance.",
+ required=False, allow_null=True)
+ pnfInfoId = serializers.CharField(help_text="Identifier of the PNF instance associated to the CP"
+ "instance.", required=False, allow_null=True)
+ pnfExtCpInstanceId = serializers.CharField(help_text="Identifier of the PNF external CP instance in the"
+ "scope of the PNF.", required=False, allow_null=True)
+ nsInstanceId = serializers.CharField(help_text="Identifier of the NS instance associated to the SAP"
+ "instance", required=False, allow_null=True)
+ nsSapInstanceId = serializers.CharField(help_text="Identifier of the SAP instance in the scope of the NS"
+ "instance.", required=False, allow_null=True)
+
+
+class MaskSerializer(serializers.Serializer):
+ startingPoint = serializers.CharField(help_text="Indicates the offset between the last bit of the source"
+ "mac address and the first bit of the sequence of bits"
+ "to be matched.", required=True)
+ length = serializers.CharField(help_text="Indicates the number of bits to be matched", required=True)
+ value = serializers.CharField(help_text="Provide the sequence of bit values to be matched.",
+ required=True)
+
+
+class NfpRuleSerializer(serializers.Serializer):
+ etherDestinationAddress = serializers.CharField(help_text="Indicates a destination Mac address",
+ required=False, allow_null=True)
+ etherSourceAddress = serializers.CharField(help_text="Indicates a source Mac address",
+ required=False, allow_null=True)
+ etherType = serializers.ChoiceField(help_text="Indicates the protocol carried over the Ethernet layer",
+ choices=["IPV4", "IPV6"], required=False, allow_null=True)
+ vlanTag = serializers.ListField(help_text="ndicates a VLAN identifier in an IEEE 802.1Q-2014 tag",
+ required=False, allow_null=True)
+ protocol = serializers.ChoiceField(help_text="Indicates the L4 protocol, For IPv4 [7] this corresponds to"
+ "the field called Protocol to identifythe next level "
+ "protocol", choices=["TCP", "UDP", "ICMP"],
+ required=False, allow_null=True)
+ dscp = serializers.CharField(help_text="For IPv4 [7] a string of 0 and 1 digits that corresponds to the"
+ "6-bit Differentiated Services Code Point (DSCP) field of the"
+ "IP header.", required=False, allow_null=True)
+ sourcePortRange = serializers.CharField(help_text="Indicates a range of source ports",
+ required=False, allow_null=True)
+ destinationPortRange = serializers.CharField(help_text="Indicates a range of destination ports",
+ required=False, allow_null=True)
+ sourceIpAddressPrefix = serializers.CharField(help_text="Indicates the source IP address range in CIDR"
+ "format.", required=False, allow_null=True)
+ destinationIpAddressPrefix = serializers.CharField(help_text="Indicates the destination IP address range"
+ "in CIDRformat.",
+ required=False, allow_null=True)
+ extendedCriteria = MaskSerializer(help_text="Indicates values of specific bits in a frame",
+ required=False, allow_null=True, many=True)
+
+
+class NfpInfoSerializer(serializers.Serializer):
+ id = serializers.CharField(help_text="Identifier of this NFP instance.", required=True)
+ nfpdId = serializers.CharField(help_text="Identifier of the NFPD used to instantiate this NFP"
+ "instance.", required=False, allow_null=True)
+ nfpName = serializers.CharField(help_text="Human readable name for the NFP instance.",
+ required=False, allow_null=True)
+ description = serializers.CharField(help_text="Human readable description for the NFP instance.",
+ required=True)
+ nscpHandle = NsCpHandleSerializer(help_text="Identifier(s) of the CPs and/or SAPs which the NFP "
+ "passes by", required=True, many=True)
+ totalCp = serializers.CharField(help_text="Total number of CP and SAP instances in this NFP"
+ "instance.", required=False, allow_null=True)
+ nfpRule = NfpRuleSerializer(help_text="The NfpRule data type is an expression of the conditions that "
+ "shall be met in order for the NFP to be applicable to the packet",
+ required=True)
+ nfpState = serializers.ChoiceField(help_text="The state of the NFP instance.",
+ choices=["ENABLED", "DISABLED"], required=True)
+
+
+class VnffgInfoSerializer(serializers.Serializer):
+ id = serializers.CharField(help_text="Identifier of this VNFFG instance.", required=True)
+ vnffgdId = serializers.CharField(help_text="Identifier of the VNFFGD in the NSD.", required=True)
+ vnfInstanceId = serializers.ListField(help_text="Identifier(s) of the constituent VNF instance(s) of this"
+ "VNFFG instance.",
+ child=serializers.CharField(help_text="ID of vnf instance"),
+ required=True)
+ pnfInfoId = serializers.ListField(help_text="Identifier(s) of the constituent PNF instance(s) of this"
+ "VNFFG instance",
+ child=serializers.CharField(help_text="ID of pnf info"),
+ required=False, allow_null=True)
+ nsVirtualLinkInfoId = serializers.ListField(help_text="Identifier(s) of the constituent VL instance(s) of"
+ "thisVNFFG instance.",
+ child=serializers.CharField(
+ help_text="ID of ns virtual link info"), required=True)
+ nsCpHandle = NsCpHandleSerializer(help_text="Identifiers of the CP instances attached to the "
+ "constituent VNFs and PNFs or the SAP instances of "
+ "the VNFFG.", required=True, allow_null=False, many=True)
+ nfpInfo = NfpInfoSerializer(help_text="Information on the NFP instances.",
+ required=True, allow_null=False, many=True)
+
+
+class SapInfo(serializers.Serializer):
+ id = serializers.CharField(
+ help_text="Identifier of the SAP instance.",
+ required=True)
+ sapdId = serializers.CharField(
+ help_text="Reference to the SAPD for this SAP.",
+ required=True)
+ sapName = serializers.CharField(
+ help_text="Human readable name for the SAP.",
+ required=True)
+ description = serializers.CharField(
+ help_text="Human readable description for the SAP. ",
+ required=True)
+ sapProtocolInfo = CpProtocolInfoSerializer(
+ help_text="Parameters for configuring the network protocols on the SAP.",
+ many=True,
+ required=False,
+ allow_null=True)
+
+
+class NsLinkSerializer(serializers.Serializer):
+ self = LinkSerializer(
+ help_text="URI of this resource.",
+ required=True)
+ nestedNsInstances = LinkSerializer(
+ help_text="Links to the nested NS instances of the present NS instance.",
+ required=False,
+ many=True)
+ instantiate = LinkSerializer(
+ help_text="Link to the instantiate task resource.",
+ required=False,
+ allow_null=False)
+ terminate = LinkSerializer(
+ help_text="Link to the terminate task resource.",
+ required=False,
+ allow_null=False)
+ update = LinkSerializer(
+ help_text="Link to the update task resource.",
+ required=False,
+ allow_null=False)
+ scale = LinkSerializer(
+ help_text="Link to the scale task resource.",
+ required=False,
+ allow_null=False)
+ heal = LinkSerializer(
+ help_text="Link to the heal task resource.",
+ required=False,
+ allow_null=False)
+
+
+class NsInstanceSerializer(serializers.Serializer):
+ id = serializers.CharField(
+ help_text="Identifier of the NS instance.",
+ required=True)
+ nsInstanceName = serializers.CharField(
+ help_text="Human readable name of the NS instance.",
+ required=True)
+ nsInstanceDescription = serializers.CharField(
+ help_text="Human readable description of the NS instance.",
+ required=True)
+ nsdId = serializers.CharField(
+ help_text="Identifier of the NSD on which the NS instance is based.",
+ required=True)
+ nsdInfoId = serializers.CharField(
+ help_text="Identifier of the NSD information object on which the NS instance is based.",
+ required=True)
+ flavourId = serializers.CharField(
+ help_text="Identifier of the NS deployment flavour applied to the NS instance.",
+ required=False)
+ vnfInstance = VnfInstanceSerializer(
+ help_text="Information on constituent VNF(s) of the NS instance.",
+ required=False,
+ many=True)
+ pnfInfo = PnfInfoSerializer(
+ help_text="Information on constituent PNF(s) of the NS instance.",
+ required=False,
+ many=True)
+ virtualLinkInfo = NsVirtualLinkInfoSerializer(
+ help_text="Information on the VL(s) of the NS instance.",
+ required=False,
+ many=True)
+ vnffgInfo = VnffgInfoSerializer(
+ many=True,
+ required=False,
+ help_text="VNF Forward Graph Information.")
+ sapInfo = SapInfo(
+ many=True,
+ required=False,
+ help_text="Create data concerning the SAPs.")
+ nestedNsInstanceId = serializers.ListField(
+ help_text="Identifier of the nested NS(s) of the NS instance.",
+ child=serializers.CharField(),
+ required=False,
+ allow_null=True
+ )
+ nsState = serializers.ChoiceField(
+ help_text="The state of the NS instance.",
+ choices=["NOT_INSTANTIATED", "INSTANTIATED"],
+ required=True,
+ allow_null=True)
+ nsScaleStatus = NsScaleInfoSerializer(
+ help_text="Status of each NS scaling aspect declared in the applicable DF.",
+ required=False,
+ many=True)
+ additionalAffinityOrAntiAffinityRule = AffinityOrAntiAffinityRuleSerializer(
+ many=True,
+ required=False,
+ allow_null=True,
+ help_text="Specifies additional affinity or anti-affinity constraint for the VNF instances to be instantiated as part of the NS instantiation.")
+ _links = NsLinkSerializer(help_text="The links of the NS instance.", required=True)