# Copyright (c) ETSI 2017.
# https://forge.etsi.org/etsi-forge-copyright-notice.txt
definitions:
  NsLcmOperationOccurrenceNotification:
    type: object
    required:
      - id
      - nsInstanceId
      - nsLcmOpOccId
      - 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.
        $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"
      affectedVnf:
        description: >
          Information about the VNF instances that were affected
          during the lifecycle operation.
        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.
        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.
        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.
        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.
          Shall be present if the "notificationStatus" is set to "RESULT" and the operation
          has performed any resource modification. Shall be absent otherwise.
        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 4.3.5). 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:
      - subscriptionId
      - nsInstanceId
    properties:
      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
        $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:
      - subscriptionId
      - nsInstanceId
    properties:
      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
        $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier"
      _links:
        description: >
          Links to resources related to this notification.
        $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/LccnLinks"