# Copyright (c) ETSI 2017.
# https://forge.etsi.org/etsi-forge-copyright-notice.txt
definitions:
  NsLcmOperationOccurrenceNotification:
    type: object
    required:
      - id
      - nsInstanceId
      - nsLcmOpOccId
      - operation
      - notificationType
      - subscriptionId
      - timestamp
      - notificationStatus
      - operationState
      - isAutomaticInvocation
      - _links
    properties:
      id:
        description: >
          Identifier of this notification. If a notification is sent
          multiple times due to multiple subscriptions, the "id"
          attribute of all these notifications shall have the same value.

          NOTE:	Shall be present if the "notificationStatus" is set to "RESULT",
          the "verbosity" attribute is set to "FULL" and the operation has performed
          any resource modification. Shall be absent otherwise. This attribute contains
          information about the cumulative changes to virtualised resources that were
          performed so far by the NS LCM operation occurrence and by any of the error
          handling procedures for that operation occurrence.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      nsInstanceId:
        description: >
          The identifier of the NS instance affected.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      nsLcmOpOccId:
        description: >
          The identifier of the NS lifecycle operation occurrence
          associated to the notification.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      operation:
        description: >
          The lifecycle operation.
        $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/NsLcmOpType"
      notificationType:
        description: >
          Discriminator for the different notification types. Shall be
          set to "NsLcmOperationOccurrenceNotification" for this
          notification type.
        type: string
      subscriptionId:
        description: >
          Identifier of the subscription that this notification relates to.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      timestamp:
        description: >
          Date-time of the generation of the notification.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/DateTime"
      notificationStatus:
        description: >
          Indicates whether this notification reports about the start
          of a NS lifecycle operation or the result of a NS lifecycle
          operation.
          Permitted values:
          - START: Informs about the start of the NS LCM
          operation occurrence.
          - RESULT: Informs about the final or intermediate
          result of the NS LCM operation occurrence.
        type: string
        enum:
          - START
          - RESULT
      operationState:
        description: >
          The state of the NS lifecycle operation occurrence.
        $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/NsLcmOperationStateType"
      isAutomaticInvocation:
        description: >
          Set to true if this NS LCM operation occurrence has
          been automatically triggered by the NFVO. This occurs
          in case of auto-scaling, auto-healing and when a nested
          NS is modified as a result of an operation on its
          composite NS. Set to false otherwise.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Boolean"
      verbosity:
        description: >
          This attribute signals the verbosity of the notification.
          If it is not present, it shall default to the value "FULL".
          If the value is "SHORT", full change details can be obtained by performing a GET request on the
          "Individual LCM operation occurrence" resource that is signalled by the "nsLcmOpOcc" child attribute
          of the "_links" attribute.
        $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/LcmOpOccNotificationVerbosityType"
      affectedVnf:
        description: >
          Information about the VNF instances that were affected
          during the lifecycle operation. See note.
        type: array
        items:
          $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedVnf"
      affectedPnf:
        description: >
          Information about the PNF instances that were affected
          during the lifecycle operation. See note.
        type: array
        items:
          $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedPnf"
      affectedVl:
        description: >
          Information about the VL instances that were affected
          during the lifecycle operation. See note.
        type: array
        items:
          $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedVirtualLink"
      affectedVnffg:
        description: >
          Information about the VNFFG instances that were
          affected during the lifecycle operation. See note.
        type: array
        items:
          $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedVnffg"
      affectedNs:
        description: >
          Information about the SAP instances that were affected
          during the lifecycle operation.See note.
        type: array
        items:
          $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedNs"
      affectedSap:
        description: >
          Information about the SAP instances that were affected during the lifecycle operation. See note.
        type: array
        items:
          $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedSap"
      error:
        description: >
          Details of the latest error, if one has occurred during
          executing the LCM operation (see clause 6.3 of ETSI GS NFV SOL 013).
          Shall be present if operationState is "FAILED_TEMP" or
          "FAILED", and shall be absent otherwise.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/ProblemDetails"
      _links:
        description: >
          Links to resources related to this notification.
        $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/LccnLinks"

  NsIdentifierCreationNotification:
    type: object
    required:
      - id
      - notificationType
      - subscriptionId
      - timestamp
      - nsInstanceId
      - _links
    properties:
      id:
        description: >
          Identifier of this notification. If a notification is sent
          multiple times due to multiple subscriptions, the "id"
          attribute of all these notifications shall have the same
          value.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      notificationType:
        description: >
          Discriminator for the different notification types.
          Shall be set to "NsIdentifierDeletionNotification" for this
          notification type.
        type: string
      subscriptionId:
        description: >
          Identifier of the subscription that this notification relates to.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      timestamp:
        description: >
          Date-time of the generation of the notification.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/DateTime"
      nsInstanceId:
        description: >
          The created NS instance identifier.
          Shall be set to the same "id" attribute value of the associated "NsInstance" representation of the
          "Individual NS instance" resource.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      _links:
        description: >
          Links to resources related to this notification.
        $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/LccnLinks"

  NsIdentifierDeletionNotification:
    type: object
    required:
      - id
      - notificationType
      - subscriptionId
      - timestamp
      - nsInstanceId
      - _links
    properties:
      id:
        description: >
          Identifier of this notification. If a notification is sent
          multiple times due to multiple subscriptions, the "id"
          attribute of all these notifications shall have the same
          value.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      notificationType:
        description: >
          Discriminator for the different notification types.
          Shall be set to "NsIdentifierDeletionNotification" for this
          notification type.
        type: string
      subscriptionId:
        description: >
          Identifier of the subscription that this notification relates to.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      timestamp:
        description: >
          Date-time of the generation of the notification.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/DateTime"
      nsInstanceId:
        description: >
          The deleted NS instance identifier.
          Shall be set to the same "id" attribute value of the associated "NsInstance" representation of the
          "Individual NS instance" resource.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      _links:
        description: >
          Links to resources related to this notification.
        $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/LccnLinks"

  NsLcmCapacityShortageNotification:
    description: >
      This type represents an NS LCM capacity shortage notification, which informs the receiver about resource shortage
      conditions during the execution of NS LCM operations. The notifications are triggered by the NFVO when a capacity
      shortage condition occurs during the execution of an NS LCM operation, which fails due to the resource shortage,
      or which succeeds despite the resource shortage because the NFVO has reduced the resource consumption of other
      NSs by requesting these NSs to be scaled in or terminated.

      The notification shall comply with the provisions defined in Table 6.5.2.19-1. The support of the notification
      is mandatory.

      This notification shall be triggered by the NFVO when there is a capacity shortage condition during the execution
      of an NS LCM operation which will cause the LCM operation to be not successfully completed, or which will trigger
      the automatic executing of an LCM operation to reduce the resource consumption of one or more NS instances to
      resolve a resource shortage situation. The shortage conditions include:
      •	Necessary resources could not be allocated during an LCM operation because of resource shortage which causes
        the LCM operation to fail.
      •	An LCM operation on an NS instance with higher priority pre-empted an LCM operation on NS instance with lower
        priority because of resource shortage.
      •	An LCM operation on an NS instance with higher priority pre-empted an existing NS instance. Resources were
        de-allocated from the lower priority NS instance to allow the LCM operation on a higher priority NS instance.
      •	The resource capacity shortage situation has ended, and it can be expected that an LCM operation that had
        failed could succeed now if retried.

      NOTE:	ETSI GS NFV-IFA 013 [x] defines further shortage situations.
            These are not supported by the present version of the present document.

      This notification shall also be triggered by the NFVO when a shortage condition has ended that has previously
      led to NS LCM operation occurrences failing. The notification shall be sent to all API consumers (OSS/BSS)
      that have subscribed to notifications related to capacity shortage and meeting the filter conditions of all
      pre-empted (low priority) and all pre-empting (high priority NS instance(s)). See ETSI GS NFV-IFA 010 [2],
      Annex D.2 for the use cases.

      The notification about the result of an unsuccessful LCM operation occurrence shall include appropriate
      information about the resource shortage when the cause for failure is a resource shortage.

      The notification where a pre-emption occurred due to e.g. a higher priority LCM operation during resource
      shortage shall include appropriate information about the pre-emption.

      NOTE:     Not all operation occurrences that are in "FAILED_TEMP" have been pre-empted by a resource shortage.
                When the operation occurrences were pre-empted, the NS instances affected by the resource shortage end
                (“status“ = "LCM_SHORTAGE_END") which are pointed by "affectedNsId" in the list of "affectedOpOccs" structure
                can have the operations retried again (which needs a request by the OSS/BSS).

      NOTE 1:	The present version of the present document supports only the resource shortage status enumeration
                values “LCM_RESOURCES_NOT_AVAILABLE” and “LCM_SHORTAGE_END” which represent a subset of the trigger conditions
                defined in clause 8.3.5.2  of ETSI GS NFV-IFA 013 [x].
    type: object
      required:
        - id
        - notificationType
        - subscriptionId
        - timestamp
        - status
    properties:
      id:
        description: >
          Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions,
          the "id" attribute of all these notifications shall have the same value.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      notificationType:
        description: >
          Discriminator for the different notification types. Shall be set to "NsLcmCapacityShortageNotification"
          for this notification type.
        type: string
          enum:
            - NsLcmCapacityShortageNotification
      subscriptionId:
        description: >
          Identifier of the subscription that this notification relates to.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      timestamp:
        description: >
          Date-time of the generation of the notification.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/DateTime"
      preemptingNsLcmOpOccId:
        description: >
          Identifier of the LCM operation occurrence that has triggered a pre-emption.
          Shall be absent when the instantiation of a lower priority NS instance has failed because all
          resources are allocated to higher priority NS instance(s). In this case the current instantiate operation
          is represented in “affectedCondition” with the value “PRE_EMPTED“.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      highPrioNsInstanceId:
        description: >
          Identifier of the higher priority NS instance affected by the lifecycle operation represented by the
          "preemptingNsLcmOpOccId" attribute.
          Shall be present if "preemptingNsLcmOpOccId" is present and shall be absent otherwise.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      status:
        description: >
          Indicates the situation of capacity shortage.
          Permitted values:
          -	LCM_RESOURCES_NOT_AVAILABLE: the lifecycle operation identified by the nsLcmOpOccId attribute could not
            be completed because necessary resources were not available.
          -	LCM_SHORTAGE_END: the shortage situation which has caused the lifecycle management operation identified
            by the nsLcmOpOccId attribute to fail has ended.
        type: string
          enum:
            - LCM_RESOURCES_NOT_AVAILABLE
            - LCM_SHORTAGE_END
      shortageType:
        description: >
          Indicates whether this notification reports about a resource shortage or NFV-MANO capacity or performance shortage.
          Permitted values:
          -	RESOURCE_SHORTAGE: the notification reports a resource shortage.

          Shall be present when a resources shortage situation has been identified starts and the notification is
          sent with “status“ = “LCM_RESOURCES_NOT_AVAILABLE“ and shall be absent otherwise.
        type: string
          enum:
            - RESOURCE_SHORTAGE
      affectedOpOccs:
        description: >
          List of NS LCM operation occurrence(s) that were affected by the resource shortage.
        type: array
        items:
          type: object
          required:
            - affectedNsId
            - affectedOpOccId
            - affectedCondition
            - _links
          properties:
            affectedNsId:
              description: >
                Identifier of the NS instance related to the operation occurrence that was affected by the shortage.
              $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
            affectedOpOccId:
              description: >
                Identifier of the NS LCM operation occurrence that was affected by the shortage.
              $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
            affectedCondition:
              description: >
                This flag indicates in what condition (pre-empted or triggered) the operation occurrence(s) were
                affected by the resource shortage.

                Permitted values:
                -	PRE_EMPTED: the operation was pre-empted and the "operationState" = "FAILED_TEMP” of the NsLcmOpOcc
                    structure identified by "affectedOpOccId" attribute.
                -	TRIGGERED: the operation was triggered by NFVO and the “operationState” = "FAILED_TEMP” of the
                    NsLcmOpOcc structure identified by "affectedOpOccId" attribute.

                In case the notification indicates the end of a shortage condition (“status“ = "LCM_SHORTAGE_END"),
                only entries with “affectedCondition“ = "PRE_EMPTED" shall be included.
                See note.
              type: string
                enum:
                  - PRE_EMPTED
                  - TRIGGERED
            _links:
              description: >
                Links related to NS resources affected by the shortage of this operation occurrence.
              type: object
              required:
                - affectedLcmOpOcc
                - affectedNs
              properties:
                affectedLcmOpOcc:
                  description: >
                    Link related to the NS lifecycle management operation occurrence.
                  $ref: "../../definitions/SOL005_def.yaml#/definitions/Link"
                affectedNs:
                  description: >
                    Link related to the NS instance that was affected by the shortage.
                  $ref: "../../definitions/SOL005_def.yaml#/definitions/Link"
      capacityInformation:
        description: >
          References to NFVI capacity information related to the shortage.
        type: array
        items:
          type: object
          required:
            - vimId
            - _link
          properties:
            vimId:
              description: >
                Identifier of the VIM where the capacity shortage occurs.
              $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
            _link:
              description: >
                Link to the related "Individual VIM’s capacity information" resource.
              $ref: "../../definitions/SOL005_def.yaml#/definitions/Link"
      _links:
        description: >
          Links to resources related to this notification.
        type: object
        required:
          - subscription
        properties:
          preemptingNsLcmOpOcc:
            description: >
              Link to the resource representing the pre-empting LCM operation occurrence identified by
              preemptingNsLcmOpOccId. Shall be present if preemptingNsLcmOpOccId is present and shall be absent otherwise.
            $ref: "../../definitions/SOL005_def.yaml#/definitions/Link"
          highPrioNsInstance:
            description: >
              Link to the resource representing the high-priority NS instance identified by highPrioNsInstanceId.
              Shall be present if highPrioNsInstanceId is present and shall be absent otherwise.
            $ref: "../../definitions/SOL005_def.yaml#/definitions/Link"
          subscription:
            description: >
              Link to the subscription that triggered this notification.
            $ref: "../../definitions/SOL005_def.yaml#/definitions/Link"

  NsChangeNotification:
    description: >
      This type represents an NS change notification, which informs the receiver of changes on the NS instance caused by the
      LCM operation occurrence, which directly or indirectly impacts its NS component and is triggered without any context
      of this NS instance.
      This notification is different from the NsLcmOperationOccurenceNotification (see clause 6.5.2.5), which is triggered by
      the NS LCM operation occurrence on the NS instance itself. It shall comply with the provisions defined in
      Table 6.5.2.8-1. The support of the notification is mandatory.
      The trigger conditions include:
      1) NS LCM operation occurrence which directly or indirectly impacts the NS component (start and result).
      If this is a notification about the start of an LCM operation occurrence impacting the NS component, the notification
      shall be sent as soon as the impact on the NS component is identified.
      If this is a notification about a final result state of an NS LCM operation occurrence impacting the NS component, the
      notification shall be sent after the impact on the NS component has been executed.
    type: object
    required:
      - id
      - nsInstanceId
      - nsComponentType
      - nsComponentId
      - lcmOpOccIdImpactingNsComponent
      - lcmOpNameImpactingNsComponent
      - lcmOpOccStatusImpactingNsCompon
      - notificationType
      - subscriptionId
      - timestamp
      - _links
    properties:
      id:
        description: >
          Identifier of this notification. If a
          notification is sent multiple times due
          to multiple subscriptions, the "id"
          attribute of all these notifications shall
          have the same value.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      nsInstanceId:
        description: >
          The identifier of the NS instance affected.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      nsComponentType:
        description: >
          Indicates the impacted NS component type.
        $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/NsComponentType"
      nsComponentId:
        description: >
          The identifier of the impacted NS component.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      lcmOpOccIdImpactingNsComponent:
        description: >
          The identifier of the lifecycle operation
          occurrence which is associated to the
          notification and impacts the NS
          component directly or indirectly.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      lcmOpNameImpactingNsComponent:
        description: >
          Indicates the name of the lifecycle
          operation occurrence which is
          associated to the notification and
          impacts the NS component directly or
          indirectly.
        $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/LcmOpNameForChangeNotificationType"
      lcmOpOccStatusImpactingNsComponent:
        description: >
          Indicates this status of the lifecycle
          operation occurrence which is
          associated to the notification and
          impacts the NS component directly or
          indirectly.
        $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/LcmOpOccStatusForChangeNotificationType"
      notificationType:
        description: >
          Discriminator for the different
          notification types. Shall be set to
          "NsChangeNotification" for this
          notification type.
        type: string
      subscriptionId:
        description: >
          Identifier of the subscription that this notification relates to.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      timestamp:
        description: >
          Date-time of the generation of the
          notification.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/DateTime"
      error:
        description: >
          Details of the latest error, if one has
          occurred during executing the LCM
          operation (see clause 6.3 of ETSI
          GS NFV-SOL 013 [16]). Shall be
          present if
          lcmOpOccStatusImpactingNsCompon
          ent is "PARTIALLY_COMPLETED" or
          "FAILED", and shall be absent
          otherwise.
        $ref: "../../definitions/SOL005_def.yaml#/definitions/ProblemDetails"
      _links:
        description: >
          Links to resources related to this notification.
        $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/LccnLinks"