SOL005NSLifecycleManagement_def.yaml 259 KB
Newer Older
      - vnfInstanceId
      - triggeredAt
      - createdAt
      - vnfdId
      - vnfInstance
      - vnfcSnapshots
    properties:
      id:
        description: >
          Identifier of the VNF snapshot. This identifier is allocated by the VNFM.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      vnfInstanceId:
        description: >
          Identifier of the snapshotted VNF instance.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
          Timestamp indicating when the VNF Snapshot creation has been started by the VNFM.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/DateTime"
      creationFinishedAt:
          Timestamp indicating when the VNF Snapshot has been completed by the VNFM.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/DateTime"
      vnfdId:
        description: >
          Identifier of the VNFD in use at the time the snapshot of the VNF instance has been created.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      vnfInstance:
        description: >
          VNF instance information of the snapshotted VNF instance. This is a copy of the "Individual VNF instance" resource.
        $ref: '#/definitions/VnfInstance'
      vnfcSnapshots:
        description: >
          Information about VNFC Snapshots constituting this VNF Snapshot.
        type: array
        items:
          $ref: '#/definitions/VnfcSnapshotInfo'
      userDefinedData:
        description: >
          User defined data for the VNF Snapshot.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs"

  WanConnectionInfo:
    description: |
      This type provides information about the connectivity to the WAN of network resources realizing a VL, e.g.,
      when the VL is deployed on several sites across a WAN. It shall comply with the provisions defined in table 6.5.3.90-1.
    type: object
    required:
      - wanConnectionInfoId
    oneOf:
      - required:
          - nsVirtualLinkInfoId
      - required:
          - vnfVirtualLinkResourceInfoId
    properties:
      wanConnectionInfoId:
        description: >
          Identifies this WAN connection information.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInNs"
      nsVirtualLinkInfoId:
        description: >
          References the NS VL instance to which the connection information is associated. Shall be present if a
          corresponding NS VL instance has been created.
          Either a "nsVirtualLinkInfoId" or a "vnfVirtualLinkResourceInfoId" shall be provided, but not both.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInNs"
      vnfVirtualLinkResourceInfoId:
        description: >
          References the VNF VL instance to which the connection information is associated. Shall be present if a
          corresponding VNF VL instance has been created.
          Either a "nsVirtualLinkInfoId" or a "vnfVirtualLinkResourceInfoId" shall be provided, but not both.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInNs"
      protocolInfo:
        description: >
          Protocol specific information for connecting to the WAN.
        $ref: "#/definitions/WanConnectionProtocolInfo"

  WanConnectionProtocolInfo:
    description: |
      This type provides protocol specific information about the connectivity to the WAN of network resources realizing
      a VL, e.g., when the VL is deployed on several sites and across a WAN, and the related multi-site connectivity
      service (MSCS) enabling the connectivity through the WAN. This type supports providing information about both
      pre-provisioned WAN connectivity realized by external entities to NFV-MANO but parts of such connectivity is known
      to the NFVO, as well as information about MSCS created under NFV-MANO responsibility (i.e., connectivity is realized
      when NFVO communicates with the WIM).  It shall comply with the provisions defined in table 6.5.3.91-1.
    type: object
    properties:
      mscsInfo:
        description: >
          Information about the provisioned MSCS, if already available.
        $ref: "#/definitions/MscsInfo"
      connectivityServiceEndpoints:
        description: >
          Configuration information about the network resources in the NFVI-PoP and their connectivity to the WAN.
        type: array
        items:
          $ref: "#/definitions/ConnectivityServiceEndpointInfo"

  WanConnectionData:
    description: |
      This type provides information used to connect the comprising network resources realizing a VL, e.g., when the VL
      is deployed on several sites and across a WAN. It shall comply with the provisions defined in table 6.5.3.80-1.
    type: object
    required:
      - protocolData
    oneOf:
      - required:
          - nsVirtualLink
      - required:
          - vnfVirtualLink
    properties:
      nsVirtualLink:
        description: >
          Information used to identify the NS VL for which the WAN connectivity data is applicable.
          Either a "nsVirtualLink" or a "vnfVirtualLink" shall be provided, but not both.
        type: object
        required:
          - nsVirtualLinkDescId
          - nsVirtualLinkProfileId
        properties:
          nsVirtualLinkDescId:
            description: >
              Identifier of the VLD in the NSD from which the VL is created in the case of a multi-site NS VL.
            $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInNsd"
          nsVirtualLinkProfileId:
            description: >
              Identifier of the VL profile in the NSD.
            $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInNsd"
      vnfVirtualLink:
        description: >
          Information used to identify the VNF VL for which the WAN connectivity data is applicable.
          Either a "nsVirtualLink" or a "vnfVirtualLink" shall be provided, but not both.
        type: object
        required:
          - vnfProfileId
          - vnfVirtualLinkDescId
          - vnfVirtualLinkProfileId
        properties:
          vnfProfileId:
            description: >
              Identifier of the VNF profile.
            $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInNsd"
          vnfVirtualLinkDescId:
            description: >
              Identifier of the VLD in the VNFD from which the VL is created in the case of a multi-site internal VNF VL.
            $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInVnfd"
          vnfVirtualLinkProfileId:
            description: >
              Identifier of the VL profile in the VNFD.
            $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInVnfd"
      protocolData:
        description: >
          Protocol specific information for connecting to the WAN.
        $ref: "#/definitions/WanConnectionProtocolData"

  ChangeVnfPackageData:
    description: |
      This type specifies the information needed to change the current VNF package for a VNF instance. Clause B.3 of the
      ETSI GS NFV-IFA 007 illustrates the variants of changes to the current VNF Package and information flow procedures.
      This operation encompasses the following scenarios:
      *	Changes of the VNF virtualised resources, such as requirements, composition and structure between the VNF versions,
        without changing the VNF software version.
      *	Changes of both the VNF software version and the VNF virtualised resources. This case includes replacing the VNF
        software version by means of virtualised resources management, such as terminating the current virtualized resource
        instances running the current software version and instantiating new virtualized resource instances with the
        destination VNF software version. The new virtualized resource instances may have the same characteristics as the
        current virtualized resource instances.
      *	Changes related to the VNFD, such as correction of bugs in the VNFD, changes in the naming scheme of VNFD components
        (e.g. name of the VDU, vduId), and adding/removing descriptors of VNF Package changes (VnfPackageChangeInfo).
      NOTE:	For software updates that are executed by functional entities outside NFV-MANO and that require synchronization
            of the information held by the NFV-MANO entities with a new VNF package that reflects the same changes, an
            alternative procedure using the PATCH method on the "Individual VNF instance" resource has been defined, as
            illustrated in annex B.2 of ETSI GS NFV-IFA 007 [19]. This procedure assumes certain restrictions on the
            characteristics of the new VNF package, as defined in note 1 in table 5.5.2.2-1 of ETSI GS NFV-SOL 003.
      This type shall comply with the provisions defined in Table 6.5.3.54-1.
    type: object
    required:
      - vnfInstanceId
      - vnfdId
    properties:
      vnfInstanceId:
        description: >
          Identifier of the VNF instance.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      vnfdId:
        description: >
          Identifier of the VNFD which defines the destination VNF Package for the change.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      extVirtualLinks:
        description: >
          Information about external VLs to connect the VNF to. Entries in the list that are unchanged need not be
          supplied as part of this request.
        type: array
        items:
          $ref: "#/definitions/ExtVirtualLinkData"
      extManagedVirtualLinks:
        description: >
          Information about internal VLs that are managed by the NFVO.
        type: array
        items:
          $ref: "#/definitions/ExtManagedVirtualLinkData"
      additionalParams:
        description: >
          Additional parameters passed by the OSS/BSS as input to the change current VNF package process, specific to the
          VNF of which the underlying VNF package is changed, as declared in the VNFD as part of "ChangeCurrentVnfPkgOpConfig".
        $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs"
      extensions:
        description: >
          If present, this attribute provides modifications to the values of the "extensions" attribute in "VnfInstance",
          as defined in clause 6.5.3.57. Provisions for handling extensions during the operation, and needed passed
          parameter values in case of conflicts, are defined in clause 5.4.11a.3.1 of ETSI GS NFV-SOL 003.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs"
      vnfConfigurableProperties:
        description: >
          If present, this attribute provides modifications to the values of the VNF configurable properties attribute in
          the "VnfInstance", as defined in clause 6.5.3.57. Provisions for handling VNF configurable properties during the
          operation, and needed passed parameter values in case of conflicts, are defined in clause 5.4.11a.3.1 of ETSI
          GS NFV-SOL 003.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs"

  DeleteVnfSnapshotData:
    description: >
      This type specifies the identifier of information of an available VNF Snapshot to be deleted and the identifier of
      the related VNF instance of the NS instance. It shall comply with the provisions defined in Table 6.5.3.74-1.
    type: object
    required:
      - vnfInstanceId
      - vnfSnapshotInfoId
    properties:
      vnfInstanceId:
        description: >
          Identifier of the VNF instance to identify the VNFM holding the VNF Snapshot information to be deleted.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      vnfSnapshotInfoId:
        description: >
          Identifier of information held by the VNFM about the VNF Snapshot to be deleted.
          This identifier was allocated by the VNFM.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"

  RevertVnfToSnapshotData:
    description: >
      This type specifies the identifier of an existing VNF instance of the NS instance to be reverted and the identifier
      of an existing VNF Snapshot to be reverted to. It shall comply with the provisions defined in Table 6.5.3.75-1.
    type: object
    required:
      - vnfInstanceId
      - vnfSnapshotInfoId
    properties:
      vnfInstanceId:
        description: >
          Identifier of the VNF instance to identify the VNFM holding the VNF Snapshot information to be reverted.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      vnfSnapshotInfoId:
        description: >
          Identifier of information held by the VNFM about the VNF Snapshot to be reverted.
          This identifier was allocated by the VNFM.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      additionalParams:
        description: >
          Additional input parameters for the revert to VNF snapshot process, specific for the VNF being “reverted”,
          as declared in the VNFD as part of “RevertToSnapshotVnfOpConfig”.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs"

  CreateVnfSnapshotData:
    description: >
      This type represents the information that are needed for VNF snapshot creation. When the NFVO invokes the Create
      VNF snapshot operation, a set of these parameters are then passed by the NFVO to the VNFM. It shall comply with
      the provisions defined in Table 6.5.3.76-1.
    type: object
    required:
      - vnfInstanceId
    properties:
      vnfInstanceId:
        description: >
          Identifier of the VNF instance to perform the snapshot from.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      additionalParams:
        description: >
          Additional input parameters for the snapshot creation process, specific for the VNF being “snapshotted”, as
          declared in the VNFD as part of “CreateSnapshotVnfOpConfig”.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs"
      userDefinedData:
        description: >
          User defined data for the VNF snapshot.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs"

  VnfcSnapshotInfo:
    description: >
      This type represents a VNFC Snapshot. It shall comply with the provisions defined in table 6.5.3.77-1.
    type: object
    required:
      - id
      - vnfcInstanceId
      - triggeredAt
      - createdAt
      - vnfcInfoId
    properties:
      id:
        description: >
          Identifier of the information held by the VNFM about a specific VNFC Snapshot. This identifier is allocated by
          the VNFM and is unique within the scope of a VNF snapshot.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      vnfcInstanceId:
        description: >
          Identifier of the snapshotted VNFC instance.
        $ref: "#/definitions/IdentifierInVnf"
          Timestamp indicating when the VNFC Snapshot creation has been started by the VNFM.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/DateTime"
      creationFinishedAt:
          Timestamp indicating when the VNFC Snapshot has been completed by the VNFM.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/DateTime"
      vnfcResourceInfoId:
          Reference to the "VnfcResourceInfo" structure that represents the resources of the snapshotted VNFC instance.
          A snapshot of that structure is available in the "vnfInstance" attribute of the "VnfSnapshot" structure.
        $ref: "#/definitions/IdentifierInVnf"
      computeSnapshotResource:
        description: >
          Reference to a compute snapshot resource.
          The identifier of the compute snapshot resource is assigned during creation of a VNFC Snapshot being returned
          from the VIM as output data in the response message of the individual resource operations.
          This attribute shall only be present for a VNFC snapshot that has been newly created by the VNFM as a result
          of the "Create VNF snapshot task".
        $ref: "../../definitions/SOL005_def.yaml#/definitions/ResourceHandle"
      storageSnapshotResources:
        description: >
          Reference to the "VirtualStorageResourceInfo" structure in the "VnfInstance" structure that represents
          the virtual storage resource.
        type: array
        items:
          type: object
          required:
            - storageResourceId
          properties:
            storageResourceId:
              description: >
                Reference to the virtual storage resource.
              $ref: "#/definitions/IdentifierInVnf"
            storageSnapshotResources:
              description: >
                Reference to a storage snapshot resource.
                The identifier of the storage snapshot resource is assigned during creation of a VNFC snapshot being
                returned from the VIM as output data in the response message of the individual resource operations.
                This attribute shall only be present for a VNFC snapshot with an associated storage resource and that
                has been newly created by the VNFM as a result of the "Create VNF snapshot task".
              $ref: "../../definitions/SOL005_def.yaml#/definitions/ResourceHandle"
      userDefinedData:
        description: >
          User defined data for the VNF Snapshot.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs"

  VnfLinkPortData:
    description: >
      This type represents an externally provided link port to be used to connect a VNFC connection point to an
      externally-managed VL. It shall comply with the provisions defined in table 6.5.3.78-1.
    type: object
    required:
      - vnfLinkPortId
      - resourceHandle
    properties:
      vnfLinkPortId:
        description: >
          Identifier of this link port as provided by the entity that has created the link port.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      resourceHandle:
        description: >
          Resource handle of the virtualised resource that realizes the link port.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/ResourceHandle"

  ModificationsTriggeredByVnfPkgChange:
    description: >
      This type represents attribute modifications that were performed on an "Individual VNF instance" resource when
      changing the current VNF package. The attributes that can be included consist of those requested to be modified
      explicitly in the "ChangeCurrentVnfPkgRequest" data structure, and additional attributes of the "VnfInstance" data
      structure that were modified implicitly during the operation.
      The "ModificationsTriggeredByVnfPkgChange" data type shall comply with the provisions defined in table 6.5.3.79-1.
    type: object
    properties:
      vnfConfigurableProperties:
        description: >
          This attribute signals the modifications of the "vnfConfigurableProperties" attribute in "VnfInstance"
          performed by the operation and shall be present if that attribute was modified during the operation.
          This attribute represents the delta (semantics as per IETF RFC 7396 [11], JSON Merge Patch) between
          the value of the attribute at the start of the "Change current VNF package" operation and the value
          of the attribute at its completion.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs"
      metadata:
        description: >
          This attribute signals the modifications of the "metadata" attribute in "VnfInstance" performed by the operation
          and shall be present if that attribute was modified during the operation. This attribute represents the delta
          (semantics as per IETF RFC 7396, JSON Merge Patch) between the value of the attribute at the start of the
          "Change current VNF package" operation and the value of the attribute at its completion.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs"
      extensions:
        description: >
          This attribute signals the modifications of the "extensions" attribute in "VnfInstance" performed by the operation
          and shall be present if that attribute was modified during the operation. This attribute represents the delta
          (semantics as per IETF RFC 7396 [11], JSON Merge Patch) between the value of the attribute at the start of the
          "Change current VNF package" operation and the value of the attribute at its completion.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs"
      vnfdId:
        description: >
          If present, this attribute signals the new value of the "vnfdId" attribute in "VnfInstance".
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      vnfProvider:
        description: >
          If present, this attribute signals the new value of the "vnfProvider" attribute in "VnfInstance".
          If present, this attribute (which depends on the value of the "vnfdId" attribute) was modified implicitly
          during the related operation, and contains a copy of the value of the related attribute from the VNFD in the
          VNF Package identified by the "vnfdId" attribute.
        type: string
      vnfProductName:
        description: >
          If present, this attribute signals the new value of the "vnfProductName" attribute in "VnfInstance".
          If present, this attribute (which depends on the value of the "vnfdId" attribute) was modified implicitly
          during the related operation, and contains a copy of the value of the related attribute from the VNFD in the
          VNF Package identified by the "vnfdId" attribute.
        type: string
      vnfSoftwareVersion:
        description: >
          If present, this attribute signals the new value of the "vnfSoftwareVersion" attribute in "VnfInstance".
          If present, this attribute (which depends on the value of the "vnfdId" attribute) was modified implicitly
          during the related operation, by copying the value of this attribute from the VNFD in the VNF Package
          identified by the "vnfdId" attribute.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Version"
      vnfdVersion:
        description: >
          If present, this attribute signals the new value of the "vnfdVersion" attribute in "VnfInstance".
          If present, this attribute (which depends on the value of the "vnfdId" attribute) was modified implicitly
          during the related operation, by copying the value of this attribute from the VNFD in the VNF Package
          identified by the "vnfdId" attribute.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Version"

  WanConnectionProtocolData:
    description: >
      This type provides protocol specific information used to connect the comprising network resources realizing a VL,
      e.g., when the VL is deployed on several sites and across a WAN. This type supports signalling input information
      about both pre-provisioned WAN connectivity realized by external entities to NFV-MANO, as well as for the creation
      of MSCS under NFV-MANO responsibility (i.e., when connectivity is realized when NFVO communicates with the WIM).
      It shall comply with the provisions defined in table 6.5.3.81-1.
    anyOf:
      - required:
          - mscsInfo
      - required:
          - connectivityServiceEndpointConfigDatas
      - required:
          - mscsConfigData
    properties:
      mscsInfo:
        description: >
          Information about the pre-provisioned multi-site connectivity service (MSCS), if already available.
          At least one of these attributes shall be present. Annex E documents the applicability of certain attributes
          depending on the WAN and NFVI-PoP network management and the responsibilities of NFV-MANO in its provisioning.
        $ref: "#/definitions/MscsInfo"
      connectivityServiceEndpointConfigDatas:
        description: >
          Configuration data for the network resources in the NFVI-PoP.
          At least one of these attributes shall be present. Annex E documents the applicability of certain attributes
          depending on the WAN and NFVI-PoP network management and the responsibilities of NFV-MANO in its provisioning.
        type: array
        items:
          $ref: "#/definitions/ConnectivityServiceEndpointInfo"
      mscsConfigData:
        description: >
          Configuration data for the provisioning of the MSCS, if such MSCS is to be created by NFV-MANO.
          At least one of these attributes shall be present. Annex E documents the applicability of certain attributes
          depending on the WAN and NFVI-PoP network management and the responsibilities of NFV-MANO in its provisioning.
        $ref: "#/definitions/MscsConfigData"

  MscsInfo:
    description: >
      This type provides information about an already provisioned multi-site connectivity service (MSCS) deployed across
      a WAN. It shall comply with the provisions defined in Table 6.5.3.82-1.
    type: object
    required:
      - mscsId
      - mscsType
    properties:
      mscsId:
        description: >
          Identifier of the MSCS established over the WAN.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      mscsName:
        description: >
          Human readable name of the MSCS.
        type: string
      mscsDescription:
        description: >
          Human readable description of the MSCS.
        type: string
      mscsType:
        description: >
          The type of connectivity that is provided to the virtualized networks in the NFVI-PoP and characterizes the
          connectivity service across the WAN.
          Permitted values:
        type: string
        enum:
          - L2VPN
          - L3VPN
      mscsLayerProtocol:
        description: >
          Type of underlying connectivity service and protocol associated to the MSCS.
          Permitted values are as listed below and restricted by the type of MSCS:
          -	EVPN_BGP_MPLS: as specified in IETF RFC 7432. Only applicable for mscsType="L2".
          - EVPN_VPWS: as specified in IETF RFC 8214. Only applicable for mscsType="L2".
          -	VPLS_BGP: as specified in IETF RFC 4761 and IETF RFC 6624. Only applicable for mscsType="L2".
          -	VPLS_LDP_L2TP: as specified in IETF RFC 4762. Only applicable for mscsType="L2".
          -	VPWS_LDP_L2TP: as specified in IETF RFC 6074. Only applicable for mscsType="L2".
          -	BGP_IP_VPN: BGP/MPLS based IP VPN as specified in IETF RFC 4364. Only applicable for mscsType="L3".
          - EVPN_BGP_MPLS
          - EVPN_VPWS
          - VPLS_BGP
          - VPLS_LDP
          - VPWS
          - BGP_IP_VPN
      siteAccessProtectionSchemes:
        description: >
          Information to determine the proper MSCS endpoints configuration to fulfil certain resiliency/protection
          requirements, e.g., by considering certain availability and redundancy of connectivity service endpoints
          in between NFVI-PoP and WAN.
        type: array
        items:
          type: object
          properties:
            locationConstraints:
              description: >
                Defines the location constraints according to an NFVI-PoP (site).
              $ref: "#/definitions/LocationConstraints"
            protectionScheme:
              description: >
                Defines the protection scheme.
                Permitted values:
                -	UNPROTECTED: to indicate no protection.
                -	ONE_TO_ONE: to indicate an active-passive access protection.
                -	ONE_PLUS_ONE: to indicate an active-active access protection.
                -	ONE_TO_N: to indicate an N active to 1 passive access protection.
              type: string
              enum:
                - UNPROTECTED
                - ONE_TO_ONE
                - ONE_PLUS_ONE
                - ONE_TO_N
      mtuMscs:
        description: >
          Maximum Transmission Unit (MTU) that can be forwarded over the MSCS (in bytes). Default value is "1500" (bytes).
        type: number
      mscsEndpoints:
        description: >
          Information about the MSCS endpoints of the MSCS.
        type: array
        items:
          $ref: "#/definitions/MscsEndpointInfo"

  MscsEndpointInfo:
    description: >
      This type provides encapsulates information about an MSCS endpoint of the MSCS. It shall comply with the provisions
      defined in table 6.5.3.83-1.
    type: object
    required:
      - mscsEndpointId
      - directionality
      - connectivityServiceEndpoinId
    properties:
      mscsEndpointId:
        description: >
          Identifier of the MSCS endpoint.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      directionality:
        description: >
          Directionality of the data traffic in the context of the terminating MSCS endpoint from WAN’s perspective.
          Permitted values:
          -	INBOUND: to indicate into the WAN.
          -	OUTBOUND: to indicate from the WAN.
          -	BOTH: to indicate bidirectional data traffic to/from the WAN.
        type: string
        enum:
          - INBOUND
          - OUTBOUND
          - BOTH
      connectivityServiceEndpoinId:
        description: >
          References the connectivity service endpoint configuration information applicable to support the MSCS endpoint.
          More than one connectivity service endpoint can be referred when endpoints are in LAG mode.
        type: array
        items:
          $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"

  ConnectivityServiceEndpointInfo:
    description: >
      This type provides configuration data for the NFVI-PoP network gateway providing connectivity service endpoints.
      The connectivity service endpoints are used as endpoints by an MSCS. It shall comply with the provisions defined
      in Table 6.5.3.84-1.
    type: object
    required:
      - connectivityServiceEndpointId
      - vimId
    properties:
      connectivityServiceEndpointId:
        description: >
          Identifier of the connectivity service endpoint of the NFVI-PoP (site) providing the UNI in between the
          NFVI-PoP and the WAN.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      vimId:
        description: >
          Identifier of the VIM responsible for the management of the virtualized networks in the NFVI-PoP of the
          applicable VL, and for which the connection data is applicable.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      siteToWanLayer2ProtocolData:
        description: >
          Layer 2 protocol specific information for the configuration of the NFVI-PoP network gateway to enable the
          stitching of the intra-site VN to the MSCS over the WAN.
        $ref: "#/definitions/SiteToWanLayer2ProtocolData"
      siteToWanLayer3ProtocolData:
        description: >
          Layer 3 protocol specific information for the configuration of NFVI-PoP network gateway to enable the stitching
          of the intra-site VN to the MSCS over the WAN.
        $ref: "#/definitions/SiteToWanLayer3ProtocolData"

  SiteToWanLayer2ProtocolData:
    description: >
      This type provides information about Layer 2 protocol specific information for the configuration of the NFVI-PoP
      network gateway to enable the stitching of the intra-site VN to the MSCS over the WAN. It shall comply with the
      provisions defined in Table 6.5.3.85-1.
    type: object
    required:
      - layer2ConnectionInfo
    properties:
      layer2ConnectionInfo:
        description: >
          Layer 2 protocol parameters of the connectivity service endpoint (CSE).
        type: object
        required:
          - connectionType
          - interfaceType
          - interfaceTagging
          - encapsulationType
        properties:
          connectionType:
            description: >
              The type of connection to be established on the connectivity service point.
              Permitted values:
              -	CSE: defined by the characteristics of the existing referred connectivity service point.
              -	AGGREGATE_CSE: create an aggregation of the connectivity service endpoints.
            type: string
            enum:
              - CSE
              - AGGREGATE_CSE
          interfaceType:
            description: >
              To indicate whether to create logical interfaces on the referred connectivity service endpoint or new
              aggregated connectivity service endpoint.
              Permitted values:
              -	PARENT: use the mapped interface to the connectivity service endpoint as is, i.e., do not create logical interfaces.
              -	LOGICAL: create logical interfaces.
            type: string
            enum:
              - PARENT
              - LOGICAL
          interfaceTagging:
            description: >
              The type of frames to forward on the connectivity service point.
              Permitted values:
              -	UNTAGGED: an interface where frames are not tagged.
              -	TAGGED: an interface configured to forward tagged frames (i.e., enabled for VLAN tagging).
            type: string
            enum:
              - UNTAGGED
              - TAGGED
          encapsulationType:
            description: >
              The type of encapsulation. If the interfaceTagging="TAGGED", either "VLAN" or "VXLAN" shall be set.
              Permitted values:
              -	ETH: generic Ethernet encapsulation.
              -	VLAN: encapsulation based on VLAN.
              -	VXLAN: encapsulation based on VXLAN.
            type: string
            enum:
              - ETH
              - VLAN
              - VXLAN
              Type of encapsulation method for VLAN tagging. Shall be present if interfaceTagging="TAGGED" and
              encapsulationType="VLAN".
              -	DOT1Q: used when packets on the CSE are encapsulated with one or a set of customer VLAN identifiers.
              -	QINQ: used when packets on the CSE are encapsulated with multiple customer VLAN identifiers and a single
                service VLAN identifier.
              - QINANY: used when packets on the CSE have no specific customer VLAN and a service VLAN identifier is used.
          wanSegmentIds:
            description: >
              Segment identifiers to pass on the tagged interface. Shall be present if encapsulationType="VLAN" or “VXLAN".
            type: object
            required:
              - wanSegmentIdValue
            properties:
              wanSegmentIdValue:
                description: >
                  Identifier of the network segment (e.g., VLAN id or VNI).
                type: string
              wanSegmentIdUpperRange:
                description: >
                  Identifier of the upper range network segment, in case the "wanSegmentIds" is used to define a range.
                type: string
          vxlanConfig:
            description: >
              Additional configuration needed when using VXLAN encapsulation. Shall be present if interfaceTagging="TAGGED"
              and encapsulationType="VXLAN".
            type: object
            required:
              - peerMode
            properties:
              peerMode:
                description: >
                  Type of VXLAN access mode. Default value is "STATIC".

                  Permitted values:
                  -	STATIC
                  -	BGP_EVPN
                type: string
                enum:
                  - STATIC
                  - BGP_EVPN
              peers:
                description: >
                  List of IP addresses of VTEP peers when using static mode.
                type: array
                items:
                  $ref: "#/definitions/IpAddress"
          lagInterfaceData:
            description: >
              Information for setting up a LAG interface aggregating multiple connectivity service endpoints.
            type: object
            required:
              - aggregatedEndpoints
              - lacpActivation
              - lacpConfig
            properties:
              aggregatedEndpoints:
                description: >
                  List of the connectivity service endpoints that are to be aggregated. Shall be present if
                  connectionType="AGGREGATE_CSE". In case of aggregating connectivity service endpoints, only one
                  SiteToWanLayer2ProtocolData shall be provided for the whole set of aggregated endpoints.
                type: array
                items:
                  $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
              lacpActivation:
                description: >
                  Indicates whether to activate LACP on the interface. If "TRUE", the LACP is to be activated, or "FALSE"
                  otherwise. Default value is "FALSE".
                type: boolean
              lacpConfig:
                description: >
                  Specific configuration for the LACP. Examples include configuration to indicate the minimum number of
                  active connectivity service endpoints, the time internal and priority of LACP packet data units (PDU).
                $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs"
          layer2ControlProtocol:
            description: >
              Configuration enabling the L2 control protocol in between the NFVI-PoP network gateway and the WAN.
            $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs"
      mtuL2:
        description: >
          Maximum Transmission Unit (MTU) that can be forwarded at layer 2 (in bytes). Default value is "1500" (bytes).
      virtualRoutingAndForwarding:
        description: >
          Configuration related to the L2 virtual routing and forwarding (MAC-VRF).
        type: object
        required:
          - macVrfName
        properties:
          macVrfName:
            description: >
              Name (or identifier) of the MAC-VRF instance.
            type: string
      forwardingConfig:
        description: >
          Information related to the forwarding of the VN in the NFVI-PoP to the connectivity service endpoint,
          if information about the VN to "stitch" is already known. . by the OSS/BSS. Shall not be provided otherwise,
          in which case the NFVO will infer the forwarding configuration based on the NS VL, or external VL, or
          externally-managed VL provisioning.
        oneOf:
          - required:
              - networkResources
          - required:
              - vnSegmentIds
        properties:
          networkResources:
            description: >
              Reference to the VN resource to be forwarded into/from the MSCS.
              Either "networkResources" or "vnSegmentsIds" shall be provided, but not both.
            type: array
            items:
              $ref: "../../definitions/SOL005_def.yaml#/definitions/ResourceHandle"
          vnSegmentIds:
            description: >
              Identifiers of the network segments of the VN resources to be forwarded into/from the MSCS.
            type: object
            required:
              - vnSegmentIdValue
            properties:
              vnSegmentIdValue:
                description: >
                  Identifier of the network segment.
                type: string
              vnSegmentIdUpperRange:
                description: >
                  Identifier of the upper range network segment, in case the "vnSegmentIds" is used to define a range.
                type: string

  SiteToWanLayer3ProtocolData:
    description: >
      This type provides information about Layer 3 protocol specific information for the stitching of the intra-site VN
      to the multi-site connectivity service over the WAN. It shall comply with the provisions defined in Table 6.5.3.86-1.
    type: object
    required:
      - routingInfo
    properties:
      logicalInterfaceIpAddress:
        description: >
          IP addressing information associated to a logical interface. Shall be present if the "interfaceType" of the
          SiteToWanLayer2ProtocolData is equal to "LOGICAL".
        type: object
        required:
          - ipAddress
          - associatedSegmentId
        properties:
          ipAddress:
            description: >
              The IP address to be assigned to the interface.
            $ref: "#/definitions/IpAddress"
          associatedSegmentId:
            description: >
              The associated segment identifier that has triggered the creation of the logical interface.
              The value shall be one of the values listed in the "wanSegmentIds" of the "siteToWanLayer2ProtocolData".
            type: string
      routingInfo:
        description: >
          The routing information that is activated on the connectivity service endpoint. More than one "routingInfo" is
          allowed to enable stacking different routing protocols (e.g., one routing protocol for IPv4 and another one for IPv6).
        type: object
        required:
          - routingProtocol
          - routingAddressFamily
        properties:
          routingProtocol:
            description: >
              The routing protocol that is activated on the connectivity service endpoint.
              Permitted values:
              -	BGP: used for dynamic routing BGPv4.
              -	RIP: used for dynamic routing RIPv2.
              -	OSPF: used for dynamic routing (OSPF version 2 for IPv4; and OSPF version 3 for IPv6).
              -	STATIC: used for static routing.
              -	DIRECT: used when the NFVI-PoP network is directly connected to the WAN provider network.
              -	VRRP: used when the NFVI-PoP network is directly connected to the WAN provider network with virtual
                router redundancy protocol support (VRRP).
            type: string
            enum:
              - BGP
              - RIP
              - OSPF
              - STATIC
              - DIRECT
              - VRRP
          staticRouting:
            description: >
              Defines a static route. It shall only be present if the routingProtocol="STATIC".
            type: object
            required:
              - ipVersion
              - ipPrefix
              - prefixSize
              - nextHop
            properties:
              ipVersion:
                description: >
                  The IP version applicable to the routing entry.
                  Permitted values:
                  -	IPV4
                  -	IPV6
                type: string
                enum:
                  - IPV4
                  - IPV6
              ipPrefix:
                description: >
                  The IP network prefix.
                $ref: '#/definitions/IpAddress'
              prefixSize:
                description: >
                  The IP prefix size.
                type: number
              nextHop:
                description: >
                  The next hop’s IP address.
                $ref: '#/definitions/IpAddress'
          routingAddressFamily:
            description: >
              The IP version applicable to the dynamic routing protocol. Shall be present for dynamic routing protocols.
              Permitted values:
              -	IPV4
              -	IPV6
            type: string
            enum:
              - IPV4
              - IPv6
          ospfRouting:
            description: >
              Defines parameters for OSPF routing. It shall only be present if the routingProtocol="OSPF".
            type: object
            required:
              - areaId
            properties:
              areaId:
                description: >
                  The routing area identifier, e.g., a number or an IP address.
                type: string
          bgpRouting:
            description: >
              Defines parameters for BGP routing. It shall only be present if the routingProtocol="BGP".
            type: object
            required:
              - bgpAs
            properties:
              bgpAs:
                description: >
                  The Autonomous System (AS) identification applicable to the BGP routing info entry.
                type: object
              bgpNeighbour:
                description: >
                  The IP address of the BGP neighbour.
                $ref: '#/definitions/IpAddress'
              bgpAdditionalParam:
                description: >
                  Additional parameters for setting up the BGP neighbour, such as information about the remote AS.
                $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs"
          routeMapsDistribution:
            description: >
              Maps of routes that are permitted or denied for redistribution.
            type: object
            required:
              - policy
              - sequence
              - matchAndSetRule
            properties:
              policy:
                description: >
                  The policy to apply to the route distribution.

                  Permitted values:
                  -	PERMIT
                  -	DENY
                type: string
                enum:
                  - PERMIT
                  - DENY
              sequence:
                description: >
                  Sequence or index number assigned to the route-map.
                type: number
              matchAndSetRule:
                description: >
                  Set of "match" and "set" rules for the distribution of routing information. "Match" key entries define
                  the routes that are selected. "Set" key entries define what information to modify when distributing the
                  routing information.
                $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs"
      mtuL3:
        description: >
          Maximum Transmission Unit (MTU) that can be forwarded at layer 3 (in bytes). Default value is "1500" (bytes).
        type: number
      virtualRoutingAndForwarding:
        description: >
          Configuration related to the virtual routing and forwarding (VRF).
        type: object
        required:
          - vrfName
        properties:
          vrfName:
            description: >
              Name (or identifier) of the VRF instance.
            type: string
      bfdConfig:
        description: >
          Configuration related to bidirectional forwarding detection (BFD).
        $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs"

  MscsConfigData: