SOL003VNFLifecycleManagement_def.yaml 146 KB
Newer Older
Francesca Moscatelli's avatar
Francesca Moscatelli committed
      - id
      - vnfVirtualLinkDescId
      - changeType
      - networkResource
    properties:
      id:
        description: >
          Identifier of the virtual link instance, identifying the applicable
          "vnfVirtualLinkResourceInfo" or "extManagedVirtualLinkInfo" entry in the "VnfInstance" data type.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnf"
Francesca Moscatelli's avatar
Francesca Moscatelli committed
      vnfVirtualLinkDescId:
        description: >
          Identifier of the related VLD in the VNFD.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnfd"
Francesca Moscatelli's avatar
Francesca Moscatelli committed
      vnfdId:
        description: >
          Identifier of the VNFD.
          Shall be present in case of a "change current VNF Package" to identify whether the affected VL instance is
          associated to a VLD which is referred from the source or destination VNFD.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/Identifier"
Francesca Moscatelli's avatar
Francesca Moscatelli committed
      changeType:
        description: >
Francesca Moscatelli's avatar
Francesca Moscatelli committed
          Signals the type of change.
          
          Permitted values:
          -	ADDED
          -	REMOVED
          -	MODIFIED
          -	TEMPORARY
          -	LINK_PORT_ADDED
          -	LINK_PORT_REMOVED
          For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists. 
          See note 1.
Francesca Moscatelli's avatar
Francesca Moscatelli committed
        type: string
        enum:
          - ADDED
          - REMOVED
          - MODIFIED
          - TEMPORARY
          - LINK_PORT_ADDED
          - LINK_PORT_REMOVED
      networkResource:
        description: >
Francesca Moscatelli's avatar
Francesca Moscatelli committed
          Reference to the VirtualNetwork resource. 
          Detailed information is (for new and modified resources) or has been (for removed resources) available from the VIM. 
          See note 1.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/ResourceHandle"
Francesca Moscatelli's avatar
Francesca Moscatelli committed
      vnfLinkPortIds:
        description: >
Francesca Moscatelli's avatar
Francesca Moscatelli committed
          Identifiers of the link ports of the affected VL related to the change. Each identifier references a "VnfLinkPortInfo" 
          structure.
          
          Shall be set when changeType is equal to "LINK_PORT_ADDED" or "LINK_PORT_REMOVED", and the related "VnfLinkPortInfo" 
          structures are present (case "added") or have been present (case "removed") in the "VnfVirtualLinkResourceInfo" or 
          "ExtManagedVirtualLinkInfo" structures that are represented by the "vnfVirtualLinkResource¬Info" or "extManagedVirtualLinkInfo" 
          attribute in the "VnfInstance" structure. See note 1.
Francesca Moscatelli's avatar
Francesca Moscatelli committed
        type: array
        items:
          $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnfd"
Francesca Moscatelli's avatar
Francesca Moscatelli committed
      resourceDefinitionId:
        description: >
Francesca Moscatelli's avatar
Francesca Moscatelli committed
          The identifier of the "ResourceDefinition" in the granting exchange related to the LCM operation occurrence. 
          It shall be present when an applicable GrantInfo for the granted resource exists. See note 1 and note 2.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierLocal"
Francesca Moscatelli's avatar
Francesca Moscatelli committed
      zoneId:
        description: >
          The identifier of the resource zone, as managed by the resource
          management layer (typically, the VIM), where the referenced VirtualNetwork
          resource is placed. Shall be provided if this information is available from the VIM.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/Identifier"
Francesca Moscatelli's avatar
Francesca Moscatelli committed
      metadata:
        description: >
          Metadata about this resource.
          The content of this attribute shall be a copy of the content of the
          "metadata" attribute of the applicable "vnfVirtualLinkResourceInfo”
          structure if such structure is referenced by the "id" attribute and it has metadata.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/KeyValuePairs"
Francesca Moscatelli's avatar
Francesca Moscatelli committed

  AffectedVirtualStorage:
    description: >
      This type provides information about added, deleted, modified and temporary virtual storage resources.

      NOTE:	The "resourceDefinitionId" attribute provides information to the API consumer (i.e. the NFVO) to 
            assist in correlating the resource changes performed during the LCM operation with the granted 
            resources in a specific Grant exchange, which is identified by the "grantId" available in the 
            "Individual VNF lifecycle management operation occurrence" and the "id" in the "Individual Grant".
Francesca Moscatelli's avatar
Francesca Moscatelli committed
    type: object
    required:
      - id
      - virtualStorageDescId
      - changeType
      - storageResource
    properties:
      id:
        description: >
          Identifier of the storage instance, identifying the applicable
          "virtualStorageResourceInfo" entry in the "VnfInstance" data type.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnf"
Francesca Moscatelli's avatar
Francesca Moscatelli committed
      virtualStorageDescId:
        description: >
          Identifier of the related VirtualStorage descriptor in the VNFD.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnfd"
Francesca Moscatelli's avatar
Francesca Moscatelli committed
      vnfdId:
        description: >
          Identifier of the VNFD.
          Shall be present in case of a "change current VNF Package" to identify whether the affected virtual storage
          instance is associated to a VirtualStorage descriptor which is referred from the source or destination VNFD.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/Identifier"
Francesca Moscatelli's avatar
Francesca Moscatelli committed
      changeType:
        description: >
          Signals the type of change. Permitted values:
          * ADDED
          * REMOVED
          * MODIFIED
          * TEMPORARY
          For a temporary resource, an AffectedVirtualStorage structure exists
          as long as the temporary resource exists.
        type: string
        enum:
          - ADDED
          - REMOVED
          - MODIFIED
          - TEMPORARY
      storageResource:
        description: >
          Reference to the VirtualStorage resource. Detailed information is
          (for new and modified resources) or has been (for removed
          resources) available from the VIM.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/ResourceHandle"
Francesca Moscatelli's avatar
Francesca Moscatelli committed
      resourceDefinitionId:
        description: >
          The identifier of the "ResourceDefinition" in the granting exchange related to the LCM operation occurrence. 
          It shall be present when an applicable GrantInfo for the granted resource exists. See note.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierLocal"
Francesca Moscatelli's avatar
Francesca Moscatelli committed
      zoneId:
        description: >
          The identifier of the resource zone, as managed by the resource
          management layer (typically, the VIM), where the referenced VirtualNetwork
          resource is placed. Shall be provided if this information is available from the VIM.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/Identifier"
Francesca Moscatelli's avatar
Francesca Moscatelli committed
      metadata:
        description: >
          Metadata about this resource.
          The content of this attribute shall be a copy of the content of the
          "metadata" attribute of the VirtualStorageResourceInfo structure.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/KeyValuePairs"
  
  CreateVnfRequest:
    description: >
      This type represents request parameters for the "Create VNF identifier" operation.
    type: object
    required:
      - vnfdId
    properties:
      vnfdId:
        description: >
          Identifier that identifies the VNFD which defines the VNF instance to
          be created.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/Identifier"
      vnfInstanceName:
        description: >
          Human-readable name of the VNF instance to be created.
        type: string
      vnfInstanceDescription:
        description: >
          Human-readable description of the VNF instance to be created.
        type: string
      metadata:
        description: >
          If present, this attribute provides additional initial values, overriding those obtained from the VNFD, for
          the "metadata" attribute in "VnfInstance", as defined in clause 5.5.2.2. Provisions for handling metadata
          during the operation are defined in clause 5.4.2.3.1.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/KeyValuePairs"

  CancelMode:
    description: >
      This type represents a parameter to select the mode of cancelling an
      ongoing VNF LCM operation occurrence.
    type: object
    required:
      - cancelMode
    properties:
      cancelMode:
        description: >
          Cancellation mode to apply.
        $ref: "#/definitions/CancelModeType"

  CancelModeType:
    description: >
      Cancellation mode.
      GRACEFUL: If the VNF LCM operation occurrence is in "PROCESSING" or
      "ROLLING_BACK" state, the VNFM shall not start any new resource
      management operation and shall wait for the ongoing resource management
      operations in the underlying system, typically the VIM, to finish
      execution or to time out. After that, the VNFM shall put the operation
      occurrence into the FAILED_TEMP state.
      If the VNF LCM operation occurrence is in "STARTING" state, the VNFM
      shall not start any resource management operation and shall wait for
      the granting request to finish execution or time out. After that, the
      VNFM shall put the operation occurrence into the ROLLED_BACK state.
      FORCEFUL: If the VNF LCM operation occurrence is in "PROCESSING" or
      "ROLLING_BACK" state, the VNFM shall not start any new resource
      management operation, shall cancel the ongoing resource management
      operations in the underlying system, typically the VIM, and shall wait
      for the cancellation to finish or to time out. After that, the VNFM
      shall put the operation occurrence into the FAILED_TEMP state.
      If the VNF LCM operation occurrence is in "STARTING" state, the VNFM
      shall not start any resource management operation and put the operation
      occurrence into the ROLLED_BACK state.
    type: string
    enum:
      - GRACEFUL
      - FORCEFUL

  ScaleVnfRequest:
    description: >
      This type represents request parameters for the "Scale VNF" operation.
    type: object
    required:
      - type
      - aspectId
    properties:
      type:
        description: >
          Indicates the type of the scale operation requested.
          Permitted values:
          * SCALE_OUT: adding additional VNFC instances to the VNF to increase
            capacity
          * SCALE_IN: removing VNFC instances from the VNF in order to release
            unused capacity.
        type: string
        enum:
          - SCALE_OUT
          - SCALE_IN
      aspectId:
        description: >
          Identifier of the scaling aspect.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnfd"
      numberOfSteps:
        description: >
          Number of scaling steps to be executed as part of this Scale VNF
          operation. It shall be a positive number and the default value
          shall be 1.
        type: integer
        default: 1
      additionalParams:
        description: >
          Additional parameters passed by the NFVO as input to the scaling
          process, specific to the VNF being scaled, as declared in the VNFD
          as part of "ScaleVnfOpConfig" defined in ETSI GS NFV-IFA 011.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/KeyValuePairs"
  
  ScaleVnfToLevelRequest:
    description: >
      This type represents request parameters for the "Scale VNF to Level" operation. 

      NOTE:	Either the instantiationLevelId attribute or the scaleInfo attribute shall 
            be included.
    type: object
    anyOf:
      - oneOf:
          - required:
              - instantiationLevelId
          - required:
              - scaleInfo
    properties:
      instantiationLevelId:
        description: >
          Identifier of the target instantiation level of the current
          deployment flavour to which the VNF is requested to be scaled.
          See note.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnfd"
      scaleInfo:
        description: >
          For each scaling aspect of the current deployment flavour, indicates
          the target scale level to which the VNF is to be scaled.
          See note.
        type: array
        items:
          $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/ScaleInfo"
      additionalParams:
        description: >
          Additional parameters passed by the NFVO as input to the scaling
          process, specific to the VNF being scaled, as declared in the
          VNFD as part of "ScaleVnfToLevelOpConfig" defined in ETSI GS NFV-IFA 011.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/KeyValuePairs"

  LccnSubscriptionRequest:
    description: >
      This type represents a subscription request related to notifications
      about VNF lifecycle changes.
    type: object
    required:
      - callbackUri
    properties:
      filter:
        description: >
          Filter settings for this subscription, to define the subset of all
          notifications this subscription relates to. A particular
          notification is sent to the subscriber if the filter matches, or if
          there is no filter.
        $ref: "#/definitions/LifecycleChangeNotificationsFilter"
      callbackUri:
        description: >
          The URI of the endpoint to send the notification to.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/Uri"
      authentication:
        description: >
          Authentication parameters to configure the use of Authorization when
          sending notifications corresponding to this subscription, as defined
          in clause 8.3.4 of ETSI GS NFV-SOL 013.
          This attribute shall only be present if the subscriber requires
          authorization of notifications.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/SubscriptionAuthentication"
      verbosity:
        description: >
          This attribute signals the requested verbosity of LCM operation occurrence notifications. If it is not present,
          it shall default to the value "FULL".
        $ref: "#/definitions/LcmOpOccNotificationVerbosityType"

  LifecycleChangeNotificationsFilter:
    description: >
      This type represents a subscription filter related to notifications about VNF lifecycle changes. 
      At a particular nesting level in the filter structure, the following applies: All attributes shall 
      match in order for the filter to match (logical "and" between different filter attributes). 
      If an attribute is an array, the attribute shall match if at least one of the values in the array 
      matches (logical "or" between the values of one filter attribute).

      NOTE:	The permitted values of the "notificationTypes" attribute are spelled exactly as the names of 
            the notification types to facilitate automated code generation systems.
    type: object
    properties:
      vnfInstanceSubscriptionFilter:
        description: >
          Filter criteria to select VNF instances about which to notify.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/VnfInstanceSubscriptionFilter"
      notificationTypes:
        description: >
          Match particular notification types. 
          
          Permitted values:
          -	VnfLcmOperationOccurrenceNotification
          -	VnfIdentifierCreationNotification
          -	VnfIdentifierDeletionNotification
          See note.
        type: array
        items:
          type: string
          enum:
            - VnfLcmOperationOccurrenceNotification
            - VnfIdentifierCreationNotification
            - VnfIdentifierDeletionNotification
      operationTypes:
        description: >
          Match particular VNF lifecycle operation types for the notification
          of type VnfLcmOperationOccurrenceNotification.
          May be present if the "notificationTypes" attribute contains the
          value "VnfLcmOperationOccurrenceNotification", and shall be absent
          otherwise.
        type: array
        items:
          $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/LcmOperationType"
      operationStates:
        description: >
          Match particular LCM operation state values as reported in
          notifications of type VnfLcmOperationOccurrenceNotification.
          May be present if the "notificationTypes" attribute contains the
          value "VnfLcmOperationOccurrenceNotification", and shall be absent
          otherwise.
        type: array
        items:
          $ref: "#/definitions/LcmOperationStateType"

  LcmOpOccNotificationVerbosityType:
    description: >
      The enumeration LcmOpOccNotificationVerbosityType provides values to control the verbosity of LCM operation
      occurrence notifications.
      * FULL: This signals a full notification which contains all change details.
      * SHORT: This signals a short notification which omits large-volume change details to reduce the size of data to
                be sent via the notification mechanism.
    type: string
    enum:
      - FULL
      - SHORT

  LcmOperationStateType:
    description: >
      STARTING: The LCM operation is starting.
      PROCESSING: The LCM operation is currently in execution.
      COMPLETED: The LCM operation has been completed successfully.
      FAILED_TEMP: The LCM operation has failed and execution has stopped,
      but the execution of the operation is not considered to be closed.
      FAILED: The LCM operation has failed and it cannot be retried or rolled back,
      as it is determined that such action won't succeed.
      ROLLING_BACK: The LCM operation is currently being rolled back.
      ROLLED_BACK: The LCM operation has been successfully rolled back,
      i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.
    type: string
    enum:
      - STARTING
      - PROCESSING
      - COMPLETED
      - FAILED_TEMP
      - FAILED
      - ROLLING_BACK
      - ROLLED_BACK

  LccnSubscription:
    description: >
      This type represents a subscription related to notifications about VNF
      lifecycle changes.
    type: object
    required:
      - id
      - callbackUri
      - verbosity
      - _links
    properties:
      id:
        description: >
          Identifier of this subscription resource.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/Identifier"
      filter:
        description: >
          Filter settings for this subscription, to define the subset of all
          notifications this subscription relates to. A particular
          notification is sent to the subscriber if the filter matches, or if
          there is no filter.
        $ref: "#/definitions/LifecycleChangeNotificationsFilter"
      callbackUri:
        description: >
          The URI of the endpoint to send the notification to.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/Uri"
      verbosity:
        description: >
          This attribute signals the verbosity of LCM operation occurrence notifications.
        $ref: "#/definitions/LcmOpOccNotificationVerbosityType"
      _links:
        description: >
          Links to resources related to this resource.
        type: object
        required:
          - self
        properties:
          self:
            description: >
              URI of this resource.
            $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/Link"

  VnfOperationalStateType:
    description: >
      STARTED: The VNF instance is up and running.
      STOPPED: The VNF instance has been shut down.
    type: string
    enum:
      - STARTED
      - STOPPED

  VnfExtCpInfo:
    description: >
      This type represents information about an external CP of a VNF.

      NOTE 1:	The attributes "associatedVnfcCpId", "associatedVipCpId" and "associatedVnfVirtualLinkId" 
              are mutually exclusive. Exactly one shall be present.
      NOTE 2:	An external CP instance is not associated to a link port in the cases indicated for the 
              “extLinkPorts” attribute in clause 4.4.1.11.
    type: object
    required:
      - id
      - cpdId
      - cpConfigId
      - cpProtocolInfo
    oneOf:
      - required:
          - associatedVnfcCpId
      - required:
          - associatedVipCpId
      - required:
          - associatedVnfVirtualLinkId
    properties:
      id:
        description: >
          Identifier of the external CP instance and the related information instance.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnf"
      cpdId:
        description: >
          Identifier of the external CPD, VnfExtCpd, in the VNFD.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnfd"
      cpConfigId:
        description: >
          Identifier that references the applied "VnfExtCpConfig" entry in the "cpConfig" map of the "currentVnfExtCpData"
          in the "ExtVirtualLinkInfo" structure.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnf"
      vnfdId:
        description: >
          Identifier of the VNFD.
          Shall be present in case the value differs from the vnfdId attribute of the VnfInstance (e.g. during a "Change
          current VNF package" operation or due to its final failure).
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/Identifier"
      cpProtocolInfo:
        description: >
          Network protocol information for this CP.
        type: array
        items:
          $ref: "#/definitions/CpProtocolInfo"
      extLinkPortId:
        description: >
          Identifier of the "ExtLinkPortInfo" structure inside the "ExtVirtualLinkInfo" structure. 
          Shall be present if the CP is associated to a link port. See note 2.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/Identifier"
      metadata:
        description: >
          Metadata about this external CP.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/KeyValuePairs"
      associatedVnfcCpId:
        description: >
          Identifier of the "vnfcCpInfo" structure in "VnfcResourceInfo" structure that represents the VNFC CP 
          which is exposed by this external CP instance, either directly or via a floating IP address. 
          Shall be present in case this CP instance maps to a VNFC CP. See note 1.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnf"
      associatedVipCpId:
        description: >
          Identifier of the VIP CP instance that is exposed as this VnfExtCp instance, either directly or via a 
          floating IP address, and the related "VipCpInfo" structure in "VnfInstance". Shall be present if the 
          cpdId of this VnfExtCp has a vipCpd attribute. See note 1.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnf"
      associatedVnfVirtualLinkId:
        description: >
          Identifier of the "VnfVirtualLinkResourceInfo" structure that represents the internal VL or of the 
          "ExtManagedVirtualLinkInfo" structure that represents the externally-managed internal VL which is 
          exposed by this external CP instance. Shall be present in case this CP instance maps to an internal 
          VL (including externally-managed internal VL). See note 1. 
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnf"

  CpProtocolInfo:
    description: >
      This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.

      NOTE:	This attribute allows to signal the addition of further types of layer and protocol in future versions of the 
            present document in a backwards-compatible way. In the current version of the present document, only IP over 
            Ethernet is supported.
    type: object
    required:
      - layerProtocol
    properties:
      layerProtocol:
        description: >
          The identifier of layer(s) and protocol(s) associated to the network address information.
          
          Permitted values: IP_OVER_ETHERNET
          See note.
        type: string
        enum:
          - IP_OVER_ETHERNET
      ipOverEthernet:
        description: >
          IP addresses over Ethernet to assign to the extCP instance. Shall be
          present if layerProtocol is equal to " IP_OVER_ETHERNET", and shall
          be absent otherwise.
        $ref: "#/definitions/IpOverEthernetAddressInfo"

  IpOverEthernetAddressInfo:
    description: >
      This type represents information about a network address that has been assigned.

      NOTE 1:	At least one of "macAddress" or "ipAddresses" shall be present.
      NOTE 2:	Exactly one of "addresses" or "addressRange" shall be present.
      NOTE 3:	If the Cp instance represents a subport in a trunk, segmentationId shall be present. 
              Otherwise it shall not be present.
      NOTE 4:	Depending on the NFVI networking infrastructure, the segmentationId may indicate the 
              actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the 
              transport header of the packets or it may be an identifier used between the application 
              and the NFVI networking infrastructure to identify the network sub-interface of the trunk 
              port in question. In the latter case the NFVI infrastructure will map this local segmentationId 
              to whatever segmentationId is actually used by the NFVI’s transport technology.
    type: object
    anyOf:
      - required:
          - macAddress
      - required:
          - ipAddresses
    oneOf:
      - required:
          - addresses
      - required:
          - addressRange
    properties:
      macAddress:
        description: >
          MAC address, if assigned. See note 1.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/MacAddress"
      segmentationId:
        description: >
          Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.
        type: string
      ipAddresses:
        description: >
          Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or 
          dynamic IP address assignment per subnet. See note 1.
        type: array
        items:
          type: object
          required:
            - type
          properties:
            type:
              description: >
                The type of the IP addresses.
                Permitted values: IPV4, IPV6.
              type: string
              enum:
                - IPV4
                - IPV6
            addresses:
              description: >
                Fixed addresses assigned (from the subnet defined by "subnetId" if provided). See note 2.
              type: array
              items:
                $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IpAddress"
            isDynamic:
              description: >
                Indicates whether this set of addresses was assigned
                dynamically (true) or based on address information provided as
                input from the API consumer (false). Shall be present if
                "addresses" is present and shall be absent otherwise.
              type: boolean
            addressRange:
              description: >
                An IP address range used, e.g. in case of egress connections. See note 2.
              type: object
              required:
                - minAddress
                - maxAddress
              properties:
                minAddress:
                  description: >
                    Lowest IP address belonging to the range.
                  $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IpAddress"
                maxAddress:
                  description: >
                    Highest IP address belonging to the range
                  $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IpAddress"
            subnetId:
              description: >
                Subnet defined by the identifier of the subnet resource in
                the VIM.
                In case this attribute is present, IP addresses are bound
                to that subnet.
              $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVim"

  VipCpInfo:
    description: >
      This type provides information related to virtual IP (VIP) CP.

      NOTE 1:	It is possible that there is no associated VnfcCp because the VIP CP is available but not
      associated yet.
      NOTE 2: If only the value or the presence of this attribute is changed in the "VipCpInfo" structure
      by an LCM operation occurrence, this does not represent a change that requires including a related
      "AffectedVipCp" structure in the VNF LCM operation occurrence notifications or the "VnfLcmOpOcc"
      structure related to this LCM operation occurrence.
    type: object
    required:
      - cpInstanceId
      - cpdId
    properties:
      cpInstanceId:
        description: >
          Identifier of this VIP CP instance and of this VipCpInfo structure.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnf"
      cpdId:
        description: >
          Identifier of the VIP Connection Point Descriptor, VipCpd, in the VNFD.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnfd"
      vnfdId:
        description: >
          Identifier of the VNFD.
          Shall be present in case the value differs from the vnfdId attribute of the VnfInstance
          (e.g. during a "Change current VNF package" operation or due to its final failure). See note 2.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/Identifier"
      vnfExtCpId:
        description: >
          When the VIP CP is exposed as external CP of the VNF, the identifier of this external VNF CP instance.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnf"
      cpProtocolInfo:
        description: >
          Protocol information for this CP. There shall be one cpProtocolInfo for layer 3.
          There may be one cpProtocolInfo for layer 2.
        type: array
        items:
          $ref: "#/definitions/CpProtocolInfo"
      associatedVnfcCpIds:
        description: >
          Identifiers of the VnfcCps that share the virtual IP addresse allocated to the VIP CP instance. See note.
        type: array
        items:
          $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnf"
      vnfLinkPortId:
        description: >
          Identifier of the "VnfLinkPortInfo" structure in the "VnfVirtualLinkResourceInfo" or
          "ExtManagedVirtualLinkInfo" structure. Shall be present if the CP is associated to a
          link port on an internal VL (including externally-managed internal VL).
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnf"
      metadata:
        description: >
          Metadata about this VIP CP.
        type: array
        items:
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/KeyValuePairs"

  ExtVirtualLinkInfo:
    description: >
      This type represents information about an external VL.

      NOTE:	This attribute reflects the current configuration information that has resulted from merging into this attribute 
            the "VnfExtCpData" information which was passed as part of the "ExtVirtualLinkData" structure in the input of the 
            most recent VNF LCM operation such as "InstantiateVnfRequest", "ChangeExtVnfConnectivityRequest", "ChangeVnfFlavourRequest" 
            or "ChangeCurrentVnfPkgRequest", or in the Grant response. If applying such change results in an empty list of 
            "currentVnfExtCpData" structure instances, the affected instance of "ExtVirtualLinkInfo" shall be removed from its 
            parent data structure.
    type: object
    required:
      - id
      - resourceHandle
      - currentVnfExtCpData
    properties:
      id:
        description: >
          Identifier of the external VL and the related external VL
          information instance.
          The identifier is assigned by the NFV-MANO entity that manages this
          VL instance.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/Identifier"
      resourceHandle:
        description: >
          Reference to the resource realizing this VL.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/ResourceHandle"
      extLinkPorts:
        description: >
          Link ports of this VL.
        type: array
        items:
          $ref: "#/definitions/ExtLinkPortInfo"
      currentVnfExtCpData:
        description: >
          Allows the API consumer to read the current CP configuration information for the connection of external CPs 
          to the external virtual link. See note.
        type: array
        items:
          $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/VnfExtCpData"

  ExtLinkPortInfo:
    description: >
      This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to 
      an NS VL.

      NOTE 1:	The use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration.
      NOTE 2:	The value of "trunkResourceId" is scoped by the value of "vimConnectionId" in the "resourceHandle" attribute.
    type: object
    required:
      - id
      - resourceHandle
    properties:
      id:
        description: >
          Identifier of this link port as provided by the entity that has
          created the link port.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/Identifier"
      resourceHandle:
        description: >
          Reference to the virtualised resource realizing this link
          port.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/ResourceHandle"
      cpInstanceId:
        description: >
          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. The value refers to an
          "extCpInfo" item in the VnfInstance.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnf"
      secondaryCpInstanceId:
        description: >
          Additional external CP of the VNF connected to this link port.
          If present, this attribute shall refer to a "secondary" ExtCpInfo item in the VNF instance that exposes a virtual 
          IP CP instance which shares this linkport with the external CP instance referenced by the "cpInstanceId" attribute. 
          See note 1.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnf"
      trunkResourceId:
        description: >
          Identifier of the trunk resource in the VIM.
          Shall be present if the present link port corresponds to the parent port that the trunk resource is associated with. 
          See note 2.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVim"

  MonitoringParameter:
    type: object
    required:
      - id
      - performanceMetric
    properties:
      id:
        description: >
          Identifier of the monitoring parameter defined in the VNFD.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnfd"
      vnfdId:
        description: >
          Identifier of the VNFD.
          Shall be present in case the value differs from the vnfdId attribute of the VnfInstance (e.g. during a "Change
          current VNF package" operation or due to its final failure).
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/Identifier"
      name:
        description: >
          Human readable name of the monitoring parameter, as defined in the
          VNFD.
        type: string
      performanceMetric:
        description: >
          Performance metric that is monitored. This attribute shall contain the
          related "Measurement Name" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.
        type: string

  VnfLinkPortInfo:
    description: >
      This type represents a link port of an internal VL of a VNF.

      NOTE 1: Either cpInstanceId with cpInstanceType set to "EXT_CP" or any combination of cpInstanceId
              with cpInstanceType set to "VNFC_CP" and vipCpInstanceId (i.e. one or both of them) shall be 
              present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to "VNFC_CP" 
              and vipCpInstanceId are present, the two different CP instances share the linkport.
      NOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId
              and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or 
              only vipCpInstanceId is present (UC6 and UC#6-b).
      NOTE 3: The value of "trunkResourceId" is scoped by the value of "vimConnectionId" in the "resourceHandle"
              attribute.
    type: object
    required:
      - id
      - resourceHandle
    properties:
      id:
        description: >
          Identifier of this link port as provided by the entity that has created the link port.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnf"
      resourceHandle:
        description: >
          Reference to the virtualised resource realizing this link
          port.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/ResourceHandle"
      cpInstanceId:
        description: >
          When the link port is used for external connectivity by the VNF, this attribute represents the 
          identifier of the external CP associated with this link port.
          
          When the link port is used for internal connectivity in the VNF, this attribute represents the 
          identifier of the VNFC CP to be connected to this link port.
          
          Shall be present when the link port is used for external connectivity by the VNF.
          May be present if used to reference a VNFC CP instance.
          There shall be at most one link port associated with any external connection point instance or 
          internal connection point (i.e. VNFC CP) instance.
          The value refers to an "extCpInfo" item in the VnfInstance or a "vnfcCpInfo" item of a "vnfcResourceInfo" 
          item in the VnfInstance. See note 1.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnf"
      cpInstanceType:
        description: >
          Type of the CP instance that is identified by cpInstanceId. 
          Shall be present if "cpInstanceId" is present and shall be absent otherwise.
          
          Permitted values:
          - VNFC_CP: The link port is connected to a VNFC CP.
          -	EXT_CP: The link port is associated to an external CP.
          See note 1.
        type: string
        enum:
          - VNFC_CP
          - EXT_CP
      vipCpInstanceId:
        description: >
          VIP CP instance of the VNF connected to this link port. May be present. 
          See notes 1, and 2.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnf"
      trunkResourceId:
        description: >
          Identifier of the trunk resource in the VIM.
          Shall be present if the present link port corresponds to the parent port that the trunk resource is associated with. 
          See note 3.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVim"

  AffectedVipCp:
    description: >
      This type provides information about added, deleted and modified virtual IP CP instances.
    type: object
    required:
      - cpInstanceId
      - cpdId
      - changeType
    properties:
        cpInstanceId:
          description: >
            Identifier of the virtual IP CP instance and the related "VipCpInfo" structure in "VnfInstance".
          $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnf"

        cpdId:
          description: >
            Identifier of the VipCpd in the VNFD.
          $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/IdentifierInVnfd"

        vnfdId:
          description: >
            Reference to the VNFD.
            Shall be present in case of a "change current VNF Package" to
            identify whether the affected virtual CP instance is associated
            to a VipCpd which is referred from the source or destination VNFD.
          $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/Identifier"

        changeType:
          description: >
            Signals the type of change.
            Permitted values:
            -	ADDED
            -	REMOVED
            -	MODIFIED
          type: string
          enum:
              - ADDED
              - REMOVED
              - MODIFIED

  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.

      NOTE 1:	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.
      NOTE 2:	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: 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. See note 1.
          In addition, the provisions in clause 5.7 shall apply.
        $ref: "../../General_Definitions/SOL003_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. See note 1.
        $ref: "../../General_Definitions/SOL003_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. See note 1.
          In addition, the provisions in clause 5.7 shall apply.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/KeyValuePairs"
      vnfdId:
        description: >
          If present, this attribute signals the new value of the "vnfdId" attribute in "VnfInstance".
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/Identifier"
      vnfProvider:
        description: >
          If present, this attribute signals the new value of the "vnfProvider" attribute in "VnfInstance". See note 2.
        type: string
      vnfProductName:
        description: >
          f present, this attribute signals the new value of the "vnfProductName" attribute in "VnfInstance". See note 2.
        type: string
      vnfSoftwareVersion:
        description: >
          If present, this attribute signals the new value of the "vnfSoftwareVersion" attribute in "VnfInstance". See note 2.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/Version"
      vnfdVersion:
        description: >
          If present, this attribute signals the new value of the "vnfdVersion" attribute in "VnfInstance". See note 2.
        $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/Version"
      vimConnectionInfo:
        description: >
          If present, this attribute signals the changes to VIM connection info that were passed in the related 
          "ChangeCurrentVnfPkgRequest" structure. The provisions for sensitive information defined in clause 
          4.4.1.6 apply.
        type: object
        additionalProperties:
          $ref: "../../General_Definitions/SOL003_def.yaml#/definitions/VimConnectionInfo"

  LccnLinks:
    description: >
      This type represents the links to resources that a notification can
      contain.
    type: object
    required:
      - vnfInstance
      - subscription
    properties:
      vnfInstance:
        description: >
          Link to the resource representing the VNF instance to which the