MEC010-2_AppLcm.yaml 104 KB
Newer Older
          type: object
          description: Links to resources related to this resource.
          required:
            - self
          properties:
            self:
              type: object
              description: URI of this resource.
              $ref: '#/components/schemas/LinkType'

    AppInstanceLcmOpOcc.links:
      title: AppInstanceLcmOpOcc.links
      required:
        - self
        - appInstance
      type: object
      properties:
        self:
          type: object
          description: URI of this resource.
          $ref: '#/components/schemas/LinkType'
        appInstance:
          type: object
          description: Link to the application instance that the operation applies to.
          $ref: '#/components/schemas/LinkType'
      description: Links to resources related to this resource.

    AppLcmOpOccSubscriptionInfo:
      title: AppLcmOpOccSubscriptionInfo
      required:
        - id
        - subscriptionType
        - callbackUri
        - _links
      type: object
      properties:
        id:
          type: string
          description: Identifier of this subscription resource.
        subscriptionType:
          const: AppLcmOpOccStateChange
          type: string
          description: Shall be set to "AppLcmOpOccStateChangeSubscription".
          examples:
          - AppLcmOpOccStateChange
        callbackUri:
          type: string
          description: The URI of the endpoint for the notification to be sent to.
        appLcmOpOccSubscriptionFilter:
          type: object
          $ref: '#/components/schemas/AppLcmOpOccSubscriptionFilter'
          description: Criteria used to select application LCM operation occurrences on which to send notifications related to this subscription.
        _links:
          type: object
          $ref: '#/components/schemas/AppLcmOpOccSubscriptionInfo.links'
      description: "'This data type represents a subscription to notifications of application life cycle management operation occurrence'"

Elian Kraja's avatar
Elian Kraja committed
    AppLcmOpOccSubscriptionInfo.links:
      title: AppLcmOpOccSubscriptionInfo.links
Elian Kraja's avatar
Elian Kraja committed
      required:
      type: object
Elian Kraja's avatar
Elian Kraja committed
      properties:
        self:
          type: object
          description: URI of this resource.
Elian Kraja's avatar
Elian Kraja committed
          $ref: '#/components/schemas/LinkType'
      description: Links to resources related to this resource.
Elian Kraja's avatar
Elian Kraja committed
    AppInstSubscriptionInfo:
      title: AppInstSubscriptionInfo
Elian Kraja's avatar
Elian Kraja committed
      required:
        - id
        - subscriptionType
        - callbackUri
        - _links
      type: object
Elian Kraja's avatar
Elian Kraja committed
      properties:
        id:
          type: string
          description: "'Identifier of the subscription to application instance operational state change notification.'"
Elian Kraja's avatar
Elian Kraja committed
        subscriptionType:
          const: AppInstanceStateChange
          type: string
          description: Shall be set to "AppInstanceStateChangeSubscription".
          - AppInstanceStateChangeSubscription
        appInstanceState:
          type: string
          description: Application instance state subscribed to.
          enum:
            - NOT_INSTANTIATED
            - STARTED
            - STOPPED
        appInstanceSubscriptionFilter:
            type: object
            description: Criteria used to select application instances on which to send notifications related to this subscription.
            $ref: '#/components/schemas/AppInstanceSubscriptionFilter'
Elian Kraja's avatar
Elian Kraja committed
        callbackUri:
          type: string
          description: The URI of the endpoint for the subscription related notification to be sent to.
Elian Kraja's avatar
Elian Kraja committed
        _links:
          type: object
Elian Kraja's avatar
Elian Kraja committed
          $ref: '#/components/schemas/AppInstSubscriptionInfo.links'
      description: "'The data type represents a subscription to notification of application instance operational state change.'"
Elian Kraja's avatar
Elian Kraja committed
    AppInstSubscriptionInfo.links:
      title: AppInstSubscriptionInfo.links
      required:
      type: object
Elian Kraja's avatar
Elian Kraja committed
      properties:
        self:
          type: object
          description: URI of this resource.
Elian Kraja's avatar
Elian Kraja committed
          $ref: '#/components/schemas/LinkType'
      description: Links to resources related to this resource.
    AppLcmOpOccSubscriptionRequest:
      title: AppLcmOpOccSubscriptionRequest
Elian Kraja's avatar
Elian Kraja committed
      required:
        - callbackUri
        - subscriptionType
Elian Kraja's avatar
Elian Kraja committed
      type: object
      properties:
        appLcmOpOccSubscriptionFilter:
          type: object
          description: Subscription filter criteria to match specific application LCM operation occurrences.
Elian Kraja's avatar
Elian Kraja committed
          $ref: '#/components/schemas/AppLcmOpOccSubscriptionFilter'
        callbackUri:
          type: string
          description: The URI of the endpoint for the subscription related notification to be sent to.
Elian Kraja's avatar
Elian Kraja committed
        subscriptionType:
          type: string
          description: Shall be set to "AppLcmOpOccStateChangeSubscription".

Elian Kraja's avatar
Elian Kraja committed
    AppLcmOpOccSubscriptionFilter:
      title: AppLcmOpOccSubscriptionFilter
      type: object
Elian Kraja's avatar
Elian Kraja committed
      properties:
        appInstanceSubscriptionFilter:
          type: object
          description: If present, this attribute contains filter criteria that selects one or more application instances on which to receive "LCM operation occurrence" notifications.
Elian Kraja's avatar
Elian Kraja committed
          $ref: '#/components/schemas/AppInstanceSubscriptionFilter'
        notificationTypes:
          type: string
          description: Match particular notification types. Permitted values AppLcmOpOccNotification.
Elian Kraja's avatar
Elian Kraja committed
          $ref: '#/components/schemas/NotificationTypes'
        operationStates:
          type: array
          description: Type of the LCM operation state represented by this application instance LCM operation occurrence.
            $ref: '#/components/schemas/OperationState'
Elian Kraja's avatar
Elian Kraja committed
        operationTypes:
          type: array
          description: Type of the LCM operation represented by this application instance LCM operation occurrence.
          items:
            $ref: '#/components/schemas/OperationTypes'
Elian Kraja's avatar
Elian Kraja committed
    NotificationTypes:
      title: NotificationTypes
      const: AppLcmOperationOccurrenceNotification
Elian Kraja's avatar
Elian Kraja committed
      type: string
      description: Match particular notification types.
      examples:
      - AppLcmOperationOccurrenceNotification
    OperationTypes:
      title: OperationTypes
Elian Kraja's avatar
Elian Kraja committed
      enum:
        - INSTANTIATE
        - OPERATE
        - TERMINATE
      type: string
      description: "'Type of the LCM operation represented by this application instance LCM operation occurrence.'"
      examples:
        - INSTANTIATE

    MepInformation:
      type: object
      required:
        - mepId
      properties:
        mepId:
          type: string
          description: Deployment-specific identifier of MEC platform.
        mepName:
          type: string
          description: Human-readable name of MEC platform  
Elian Kraja's avatar
Elian Kraja committed
    CreateAppInstanceRequest:
      title: CreateAppInstanceRequest
      required:
      type: object
Elian Kraja's avatar
Elian Kraja committed
      properties:
        appDId:
          type: string
          description: The application descriptor identifier. It is managed by the application provider to identify the application descriptor in a globally unique way.
Elian Kraja's avatar
Elian Kraja committed
        appInstanceDescription:
          type: string
          description: Human-readable description of the application instance to be created.
Elian Kraja's avatar
Elian Kraja committed
        appInstanceName:
          type: string
          description: Human-readable name of the application instance to be created.
        appPlacementInfo:
          type: object
          description: Describes the information of selected MEC platform for the application instance to associate. See note.
          $ref: '#/components/schemas/MepInformation'
      description: |
        NOTE: This field applies to Mm3* reference point only.

Elian Kraja's avatar
Elian Kraja committed
    AppInstSubscriptionRequest:
      title: AppInstSubscriptionRequest
Elian Kraja's avatar
Elian Kraja committed
      required:
        - subscriptionType
        - callbackUri
      type: object
Elian Kraja's avatar
Elian Kraja committed
      properties:
        subscriptionType:
          const: AppInstanceStateChange
          type: string
          description: Shall be set to "AppInstanceStateChangeSubscription".
          examples:
          - AppInstanceStateChange
Elian Kraja's avatar
Elian Kraja committed
        callbackUri:
          type: string
          description: The URI of the endpoint for the notification to be sent to.
Elian Kraja's avatar
Elian Kraja committed
        appInstanceState:
          type: object
Elian Kraja's avatar
Elian Kraja committed
          $ref: '#/components/schemas/AppInstanceState'
        appInstanceSubscriptionFilter:
          type: object
          description: Criteria used to filter application instances for which to send notifications related to this subscription.
Elian Kraja's avatar
Elian Kraja committed
          $ref: '#/components/schemas/AppInstanceSubscriptionFilter'
Elian Kraja's avatar
Elian Kraja committed
    AppInstanceSubscriptionFilter:
      title: AppInstanceSubscriptionFilter
Elian Kraja's avatar
Elian Kraja committed
      required:
        - appInstSelectorType
      type: object
Elian Kraja's avatar
Elian Kraja committed
      properties:
        appInstSelectorType:
          type: object
Elian Kraja's avatar
Elian Kraja committed
          $ref: '#/components/schemas/AppInstSelectorType'
        appInstances:
          type: array
          items:
            type: string
          description: |
            If appInstIdSelector = APP_IDENTITY match existing application instances with an "application instance identifier" listed in this attribute.
            If appInstIdSelector = APP_NAME match existing application instances with an "application instance name" listed in this attribute.
            If appInstIdSelector = APP_D_ID match existing application instances, or those created in the future whilst the subscription is active, based on the application descriptors identified by one of the "application descriptor identities" listed in this attribute.
            If appInstIdSelector = APP_FROM_PROVIDER this attribute shall not be included.
Elian Kraja's avatar
Elian Kraja committed
        appsFromProviders:
          type: array
          items:
            $ref: '#/components/schemas/AppsFromProviders'
      description: "'This data type represents subscription filter criteria to match application instances. '"
Elian Kraja's avatar
Elian Kraja committed
    AppsFromProviders:
      title: AppsFromProviders
Elian Kraja's avatar
Elian Kraja committed
      required:
        - appProvider
      type: object
Elian Kraja's avatar
Elian Kraja committed
      properties:
        appProvider:
          type: string
          description: Provider of the application and of the AppD.
Elian Kraja's avatar
Elian Kraja committed
        appProducts:
          type: array
          description: If present, match application instances that belong to application products with certain product names, from one particular provider.
          items:
            $ref: '#/components/schemas/AppProducts'
      description: "'Present only if appInstIdSelector = APP_FROM_PROVIDER. Match existing application instances, or those created in the future whilst the subscription is active, that belong to applications from certain providers.'"
Elian Kraja's avatar
Elian Kraja committed
    AppProducts:
      title: AppProducts
Elian Kraja's avatar
Elian Kraja committed
      required:
      type: object
Elian Kraja's avatar
Elian Kraja committed
      properties:
        appName:
          type: string
          description: Name to identify the MEC application.
Elian Kraja's avatar
Elian Kraja committed
        versions:
          type: array
          items:
            $ref: '#/components/schemas/AppProducts.Versions'
      description: "'If present, match application instances that belong to application products with certain product names, from one particular provider.'"
Elian Kraja's avatar
Elian Kraja committed
    AppProducts.Versions:
      title: AppProducts.Versions
Elian Kraja's avatar
Elian Kraja committed
      required:
        - appSoftVersion
      type: object
Elian Kraja's avatar
Elian Kraja committed
      properties:
        appSoftVersion:
          type: string
          description: Identifies the version of software of the MEC application.
Elian Kraja's avatar
Elian Kraja committed
        appDVersion:
          type: array
          items:
            type: string
          description: ''
      description: "'If present, match application instances that belong to application products with certain versions and a certain product name, from one particular provider.'"
Elian Kraja's avatar
Elian Kraja committed
    AppInstSelectorType:
      title: AppInstSelectorType
Elian Kraja's avatar
Elian Kraja committed
      enum:
        - VOID
        - APP_IDENTITY
        - APP_NAME
        - APP_D_ID
        - APP_FROM_PROVIDER
Elian Kraja's avatar
Elian Kraja committed
      type: string
      description: 0 = void
      examples:
    AppInstanceState:
      title: AppInstanceState
Elian Kraja's avatar
Elian Kraja committed
      enum:
        - NOT_INSTANTIATED
        - STARTED
        - STOPPED
      type: string
      description: Only send notifications for application instances that are in one of the states listed in this attribute. If this attribute is absent, match all states.
      examples:
        - NOT_INSTANTIATED
Elian Kraja's avatar
Elian Kraja committed
    AppInstNotification:
      title: AppInstNotification
      required:
        - _links
        - appDId
        - appInstanceId
        - appInstanceState
        - appPkgId
        - id
        - notificationType
        - subscriptionId
        - timeStamp
      type: object
Elian Kraja's avatar
Elian Kraja committed
      properties:
        _links:
          type: object
          $ref: '#/components/schemas/Links'
Elian Kraja's avatar
Elian Kraja committed
        appDId:
          type: string
          description: The application descriptor identifier identifies the application package and the application descriptor in a globally unique way.
Elian Kraja's avatar
Elian Kraja committed
        appInstanceId:
          type: string
          description: Identifier of application instance.
Elian Kraja's avatar
Elian Kraja committed
        appPkgId:
          type: string
          description: Identifier of the onboarded application package.
Elian Kraja's avatar
Elian Kraja committed
        id:
          type: string
          description: Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the "notificationId" attribute of all these notifications shall have the same value.
Elian Kraja's avatar
Elian Kraja committed
        notificationType:
          type: string
          description: Discriminator for the different notification types. Shall be set to "AppInstanceStateChangeSubscription" for this notification type.
Elian Kraja's avatar
Elian Kraja committed
        subscriptionId:
          type: string
          description: Identifier of the subscription related to this notification.
Elian Kraja's avatar
Elian Kraja committed
        timeStamp:
          type: object
          description: Date and time of the notification generation.
Elian Kraja's avatar
Elian Kraja committed
          $ref: '#/components/schemas/TimeStamp'
        appInstLocation:
          type: string
          description: Location of the MEC application instance. Shall be present if the application instance is instantiated and shall be absent otherwise.
          $ref: '#/components/schemas/LocationInformation'
        appInstanceState:
          type: string
          description: Application instance state
          enum:
            - NOT_INSTANTIATED
            - STARTED
            - STOPPED

    LocationInformation:
      type: object
      required:
        - countryCode
      properties:
        countryCode:
          type: string
          description: The two-letter ISO 3166 country code in capital letters where an instance is deployed.
        civicAddress:
          type: object
          description: Provides the civic address of the site hosting the MEC application instance.
          $ref: '#/components/schemas/LocationInformation.civicAddress'
        geographicalPosition:
          type: string
          description: Geographical position (i.e. latitude and longitude) where an instance is deployed. The content of this attribute shall follow the provisions for the "Point" geometry object as defined in IETF RFC 7946
      description: |
        NOTE: At least one of civicAddress or geographicalPosition shall be present. If both are present they shall specify the same location, bound by the precision of the provided coordinates.

    McioInfo:
      type: object
      required:
        - mcioId
        - mcioName
        - mcioNamespace
        - vduId
        - cismId
        - mcioType
        - desiredInstances
        - availableInstances
      properties:
        mcioId:
Umair Zafar's avatar
Umair Zafar committed
          type: string
          description: Identifier of this MCIO, created by the CISM.
        mcioName:
          type: string
          description: Human readable name of this MCIO.
        mcioNamespace:
          type: string
          description: Namespace of this MCIO 
        vduId:
          type: string
          description: Reference to the applicable Vdu information element in the VNFD. 
        cismId:
          type: string
          description: Identifier of the CISM managing this MCIO.
        mcioType:
          type: string
          description: The type of MCIO. See note 1. 
        desiredInstances:
Umair Zafar's avatar
Umair Zafar committed
          type: integer
          description: Number of desired MCIO instances.
        availableInstances:
Umair Zafar's avatar
Umair Zafar committed
          type: integer
          description: Number of available MCIO instances 
        additionalInfo:
          type: string
          description: Additional information which is specific to the MCIO, its type, and which is available from the CISM. See note 2
      description: |
        NOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from the CISM.
        EXAMPLE: In case of MCIOs managed by Kubernetes®, the type of MCIO corresponds to the "kind" property of the declarative descriptor.
        NOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and desired state of the MCIO(s)

    LocationInformation.civicAddress:
      type: object
      required:
        - civicAddressElement
      properties:
        civicAddressElement:
          type: array
          description: Provides elements comprising a single civic address as described in section 3.4, with accompanying example in section 5 of IETF RFC 4776.
          items:
            $ref: '#/components/schemas/CivicAddressElement'

    AppInstanceInfo:
      title: AppInstanceInfo
Elian Kraja's avatar
Elian Kraja committed
      required:
        - id
        - appDId
        - appProvider
        - appName
        - appSoftVersion
        - appDVersion
        - appPkgId
        - instantiationState
        - _links
Elian Kraja's avatar
Elian Kraja committed
      type: object
      properties:
        id:
          type: string
          description: Identifier of application instance.
Elian Kraja's avatar
Elian Kraja committed
        appInstanceName:
          type: string
          description: Name of the application instance.
Elian Kraja's avatar
Elian Kraja committed
        appInstanceDescription:
          type: string
          description: Human-readable description of the application instance to be created.
Elian Kraja's avatar
Elian Kraja committed
        appDId:
          type: string
          description: Identifier of this MEC application descriptor. This attribute shall be globally unique.
Elian Kraja's avatar
Elian Kraja committed
        appProvider:
          type: string
          description: Provider of the application and of the AppD.
        nsInstanceId:
          type: string
          description: |
            Identifier of the NS instance created by NFVO in which the MEC application has been instantiated as a VNF instance. See note 2
        vnfInstanceId:
          type: string
          description: |
            Identifier of the VNF instance created by VNFM that the MEC application has been instantiated as. See note 2.
        communicationInterface:
Umair Zafar's avatar
Umair Zafar committed
          type: string
          description: Interface for communication with other application instances. See clause 7.5.2 of ETSI GS MEC 021 [13] for the data type definition.
Umair Zafar's avatar
Umair Zafar committed
          items:
            $ref: '#/components/schemas/CommunicationInterface'
Elian Kraja's avatar
Elian Kraja committed
        appName:
          type: string
          description: Name to identify the MEC application.
Elian Kraja's avatar
Elian Kraja committed
        appSoftVersion:
          type: string
          description: Identifies the version of software of the MEC application.
Elian Kraja's avatar
Elian Kraja committed
        appDVersion:
          type: string
          description: Identifies the version of the application descriptor.
Elian Kraja's avatar
Elian Kraja committed
        appPkgId:
          type: string
          description: Identifier of the onboarded application package.
Elian Kraja's avatar
Elian Kraja committed
        vimConnectionInfo:
          type: array
          items:
            $ref: '#/components/schemas/VimConnectionInfo'
          description: Information about VIM connections to be used for managing the resources for the application instance.
                        The keys of the map, each of which identifies information about a particular VIM connection, are managed by the MEO and referenced from other data 
                        structures via the "vimConnectionId" attribute. See notes 1 and 3.
Elian Kraja's avatar
Elian Kraja committed
        instantiationState:
          $ref: '#/components/schemas/InstantiationState'
        instantiatedAppState:
          $ref: '#/components/schemas/InstantiatedAppState'
        _links:
          $ref: '#/components/schemas/AppInstanceInfo.links'
      description: |
        The data type of AppInstanceInfo represents the parameters of instantiated application instance resources.
        NOTE 1: This field does not apply if the data structure is used by MEAO.
        NOTE 2: This field applies if the data structure is used by MEAO.
        NOTE 3: This field does not apply if the data structure is used on Mm3*.
        NOTE 4: This field applies if the data structure is used on Mm3*.
        NOTE 5: This field applies if the data structure is used on Mm1 or Mm3*.
        NOTE 6: It is not specified in the present document how location information is obtained in the case of MEC in NFV.
        NOTE 7: This attribute reflects the ETSI NFV interpretation of the cloud native workloads.
Elian Kraja's avatar
Elian Kraja committed
    OperationState:
      title: OperationState
Elian Kraja's avatar
Elian Kraja committed
      enum:
        - STARTING
        - PROCESSING
        - COMPLETED
        - FAILED
        - FAILED_TEMP
Elian Kraja's avatar
Elian Kraja committed
      type: string
      description: Operation state
      examples:
Elian Kraja's avatar
Elian Kraja committed
    InstantiationState:
      title: InstantiationState
Elian Kraja's avatar
Elian Kraja committed
      enum:
        - NOT_INSTANTIATED
        - INSTANTIATED
      type: string
      description: Instantiation state of the application instance
      examples:
        - NOT_INSTANTIATED
Elian Kraja's avatar
Elian Kraja committed
    InstantiatedAppState:
      title: InstantiatedAppState
Elian Kraja's avatar
Elian Kraja committed
      required:
        - operationalState
      type: object
Elian Kraja's avatar
Elian Kraja committed
      properties:
        operationalState:
          $ref: '#/components/schemas/OperationalState'
        appInstLocation:
          type: object
          description:  Location of the MEC application instance. See note 5 and note 6.
          $ref: '#/components/schemas/LocationInformation'
        mcioInfo:
          type: array
          description: Information on the MCIO(s) representing application instance realized by one or a set of OS containers. See note 7.
          items:
            $ref: '#/components/schemas/McioInfo'
      description: "'Information specific to an instantiated application. This attribute shall be present if the instantiationState attribute value is INSTANTIATED.'"
Elian Kraja's avatar
Elian Kraja committed
    OperationalState:
      title: OperationalState
Elian Kraja's avatar
Elian Kraja committed
      enum:
        - STARTED
        - STOPPED
      type: string
      description: Operational state is applicable in the instantiation state INSTANTIATED
      examples:
Elian Kraja's avatar
Elian Kraja committed
    AppInstanceInfo.links:
      title: AppInstanceInfo.links
Elian Kraja's avatar
Elian Kraja committed
      required:
      type: object
Elian Kraja's avatar
Elian Kraja committed
      properties:
        self:
          type: object
          description: Self referring URI.
Elian Kraja's avatar
Elian Kraja committed
          $ref: '#/components/schemas/LinkType'
        instantiate:
          type: object
          description: Link to the "instantiate" task resource, if the related operation is possible based on the current status of this application instance resource (i.e. application instance in NOT_INSTANTIATED state). See note 3.
Elian Kraja's avatar
Elian Kraja committed
          $ref: '#/components/schemas/LinkType'
        terminate:
          type: object
          description: Link to the "terminate" task resource, if the related operation is possible based on the current status of this application instance resource (i.e. application instance is in INSTANTIATED state).
Elian Kraja's avatar
Elian Kraja committed
          $ref: '#/components/schemas/LinkType'
        operate:
          type: object
          description: Link to the "operate" task resource, if the related operation is supported for this application instance, and is possible based on the current status of this application instance resource (i.e. application instance is in INSTANTIATED state).
          $ref: '#/components/schemas/LinkType'
        configure_platform_for_app:
          type: object
          description: Link to the "configure_platform_for_app" task resource, if the related operation is supported for this application instance, and is possible based on the current status of this application instance resource (i.e. application instance is in INSTANTIATED state). See note 4
Elian Kraja's avatar
Elian Kraja committed
          $ref: '#/components/schemas/LinkType'
      description: Links to resources related to this resource.
Elian Kraja's avatar
Elian Kraja committed
    LcmOperation:
      title: LcmOperation
Elian Kraja's avatar
Elian Kraja committed
      enum:
        - INSTATIATE
        - OPERATE
        - TERMINATE
      type: string
      description: Type of the actual LCM operation represented by this application instance LCM operation occurrence
      examples:
        - INSTATIATE
Elian Kraja's avatar
Elian Kraja committed
    AppLcmOpOccNotification:
      title: AppLcmOpOccNotification
Elian Kraja's avatar
Elian Kraja committed
      required:
        - id
        - notificationType
        - operationType
        - operationState
        - subscriptionId
        - timeStamp
        - appLcmOpOccId
        - appInstanceId
        - _links
      type: object
Elian Kraja's avatar
Elian Kraja committed
      properties:
        id:
          type: string
          description: Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the "notificationId" attribute of all these notifications shall have the same value.
Elian Kraja's avatar
Elian Kraja committed
        notificationType:
          type: string
          description: Discriminator for the different notification types. Shall be set to "AppLcmOpOccStateChangeSubscription" for this notification type.
        operationType:
          type: string
          description: Type of the LCM operation represented by this application instance LCM operation occurrence.
          enum:
            - INSTANTIATE
            - OPERATE
            - TERMINATE 
        operationState:
          type: string
          description: Operation state.
          enum:
            - STARTING
            - PROCESSING
            - COMPLETED
            - FAILED
            - FAILED_TEMP
Elian Kraja's avatar
Elian Kraja committed
        subscriptionId:
          type: string
          description: Identifier of the subscription related to this notification.
Elian Kraja's avatar
Elian Kraja committed
        timeStamp:
          type: object
          description: Date and time of the notification generation.
Elian Kraja's avatar
Elian Kraja committed
          $ref: '#/components/schemas/TimeStamp'
        appLcmOpOccId:
          type: string
          description: Identifier of application lifecycle management operation occurrence.
Elian Kraja's avatar
Elian Kraja committed
        appInstanceId:
          type: string
          description: Identifier of application instance.
Elian Kraja's avatar
Elian Kraja committed
        _links:
          type: object
Elian Kraja's avatar
Elian Kraja committed
          $ref: '#/components/schemas/AppLcmOpOccNotification.links'
      description: "'This data type represents a notification related to state changes of an application LCM operation occurrence which informs the subscribers'"

    AppInstanceIdentifierCreationNotification:
      title: AppInstanceIdentifierCreationNotification
      required:
        - id
        - notificationType
        - subscriptionId
        - timeStamp
        - appInstanceId
        - _links
      type: object
      properties:
        id:
          type: string
          description: Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the "notificationId" attribute of all these notifications shall have the same value.
        notificationType:
          type: string
          description: Discriminator for the different notification types. Shall be set to "AppIdentifierCreationSubscription" for this notification type.
        subscriptionId:
          type: string
          description: Identifier of the subscription related to this notification.
          type: object
          description: Date and time of the notification generation.
          $ref: '#/components/schemas/TimeStamp'
        appInstanceId:
          type: string
          description: The created application instance Identifier.
          type: object
          description: Links to resources related to this notification.
          $ref: '#/components/schemas/Notification._links'
    
    Notification._links:
      type: object
      required:
        - subscription
        - appInstance
      properties:
        subscription:
          type: object
          description: A link to the related subscription.
          $ref: '#/components/schemas/LinkType'
        appInstance:
          type: object
          description: Link to the resource representing the created application instance.
          $ref: '#/components/schemas/LinkType'
    
    AppInstanceIdentifierDeletionNotification:
      title: AppInstanceIdentifierDeletionNotification
      required:
        - id
        - notificationType
        - subscriptionId
        - timeStamp
        - appInstanceId
        - _links
      type: object
      properties:
        id:
          type: string
          description: Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the "notificationId" attribute of all these notifications shall have the same value.
        notificationType:
          type: string
          description: Discriminator for the different notification types. Shall be set to "AppIdentifierDeletionSubscription" for this notification type.
        subscriptionId:
          type: string
          description: Identifier of the subscription related to this notification.
          type: object
          description: Date and time of the notification generation.
          $ref: '#/components/schemas/TimeStamp'
        appInstanceId:
          type: string
          description: The deleted application instance Identifier.
          type: object
          description: Links to resources related to this notification.
          $ref: '#/components/schemas/Notification._links'

Elian Kraja's avatar
Elian Kraja committed
    AppLcmOpOccNotification.links:
      title: AppLcmOpOccNotification.links
Elian Kraja's avatar
Elian Kraja committed
      required:
        - appInstance
        - subscription
        - appLcmOpOcc
      type: object
Elian Kraja's avatar
Elian Kraja committed
      properties:
        appInstance:
          type: object
Elian Kraja's avatar
Elian Kraja committed
          $ref: '#/components/schemas/LinkType'
        subscription:
          type: object
Elian Kraja's avatar
Elian Kraja committed
          $ref: '#/components/schemas/LinkType'
        appLcmOpOcc:
          type: object
Elian Kraja's avatar
Elian Kraja committed
          $ref: '#/components/schemas/LinkType'
      description: Links to resources related to this resource.
Elian Kraja's avatar
Elian Kraja committed
    InstantiateAppRequest:
      title: InstantiateAppRequest
      required:
        - selectedMECHostInfo
      type: object
Elian Kraja's avatar
Elian Kraja committed
      properties:
        locationConstraints:
          type: object
          description: Defines the location constraints for the application instance to be created. See note 3.
Elian Kraja's avatar
Elian Kraja committed
          $ref: '#/components/schemas/LocationConstraints'
        selectedMECHostInfo:
          type: array
          items:
            $ref: '#/components/schemas/MECHostInformation'
          description: |
            Describes the information of selected host for the application instance. See note 2.
        vimConnectionInfo:
Elian Kraja's avatar
Elian Kraja committed
          type: array
          items:
            $ref: '#/components/schemas/VimConnectionInfo'
          description: >-
            Information about VIM connections to be used for managing the resources for the application instance, or refer to external / externally-managed virtual links.
            This attribute shall only be supported and may be present if application-related resource management in direct mode is applicable. See note 2.
Elian Kraja's avatar
Elian Kraja committed
        virtualComputeDescriptor:
          type: object
          items:
            $ref: '#/components/schemas/VirtualComputeDescriptor'
          description: |
            Describes CPU and memory requirements, as well as optional additional requirements, such as disk and acceleration related capabilities, of the single VM to realize the application
            instance to be created. See note 1 and note 4.
        osContainerDescriptor:
          type: array
          items:
            $ref: '#/components/schemas/OsContainerDescriptor'
          description: |
            Describes CPU, memory requirements and limits, and software images of the OS Containers realizing this MEC application corresponding to OS Containers sharing the 
            same host and same network namespace. See note 1, note 4 and note 5.
Elian Kraja's avatar
Elian Kraja committed
        virtualStorageDescriptor:
          type: array
            $ref: '#/components/schemas/VirtualStorageDescriptor'
          description: |
            Defines descriptors of virtual storage resources to be used by the application instance to be created. See note 1.
        appTermCandsForCoord:
          type: object
          items:
            $ref: '#/components/schemas/AppTermCandsForCoord'
          description: Provides sets of applications as termination  candidate alternatives that the MEO/MEAO shall select from when utilizing the coordinate LCM operation exchange in pre-emption situations (see step 3 in clause 5.3.1). If this attribute is omitted, the MEO/MEAO shall make its own selection for the coordinate LCM operation exchange. See note 3.
      description: |
        NOTE 1: This attribute may be provided in the InstantiateAppRequest structure to override the same attribute in the AppD.
        NOTE 2: This field applies to Mm3 reference point only.
        NOTE 3: This field applies to Mm1 reference point only.
        NOTE 4: Only one of virtualComputeDescriptor or osContainerDescriptor shall be present.
        NOTE 5: This attribute reflects the ETSI NFV interpretation of the cloud native workloads.

    AppTermCandsForCoord:
      type: object
      required:
        - terminationOptions
      properties:
        terminationOptions:
          type: array
          description: Sets of application options for the MEO/MEAO to select from as candidates for termination. The MEO/MEAO shall select one or more of these alternate options to pass to the OSS when utilizing the LCM coordination exchange in pre-emption situations. For each option, the MEO/MEAO may select all, or a subset, of the candidate set's members.
            $ref: '#/components/schemas/AppTermCandsForCoord.terminationOptions'

    VirtualStorageDescriptor:
      type: object
      required:
        - id
        - typeOfStorage
      properties:
        id:
          type: string
          description: Unique identifier of this VirtualStorageDesc in the VNFD.
        typeOfStorage:
          type: string
          description: Type of virtualised storage resource.
          enum:
            - BLOCK
            - OBJECT
            - FILE
        blockStorageData:
          type: object
          $ref: '#/components/schemas/BlockStorageData'
          description: Details of block storage.
        objectStorageData:
          type: object
          $ref: '#/components/schemas/ObjectStorageData'
          description: Details of object storage.
        fileStorageData:
          type: object
          $ref: '#/components/schemas/FileStorageData'
          description: Details of file storage.
        nfviMaintenanceInfo:
          type: object
          $ref: '#/components/schemas/NfviMaintenanceInfo'
          description: Information on the rules to be observed during NFVI operation and maintenance.
        perVnfcInstance:
          type: boolean
          description: Indicates whether the virtual storage resource shall be instantiated per VNFC instance.

    NfviMaintenanceInfo:
      type: object
      required:
        - impactNotificationLeadTime
      properties:
        impactNotificationLeadTime:
          type: number
          description: The minimum notification lead time requested for upcoming impact of the virtualised resource or their group.
        isImpactMitigationRequested:
          type: boolean
          description: When set to True, it is requested that at the time of the notification of an upcoming change that is expected to have an impact on the VNF, virtualised resource(s) of the same characteristics as the impacted ones is/are provided to compensate for the impact.
        supportedMigrationType:
          type: array
          description: Applicable to VirtualComputeDesc and VirtualStorageDesc. When present, specifies the allowed migration types in the order of preference in case of an impact starting with the most preferred type. For LIVE_MIGRATION, see note 1.
          items:
            type: string
            enum:
              - NO_MIGRATION
              - OFFLINE_MIGRATION
              - LIVE_MIGRATION
        maxUndetectableInterruptionTime:
          type: number
          description: Applicable to VirtualComputeDesc and VirtualStorageDesc. When present, it specifies the maximum interruption time that can go undetected at the VNF level and therefore which will not trigger VNF-internal recovery during live migration. (see note 1)
        minRecoveryTimeBetweenImpacts:
          type: number
          description: When present, it specifies the time required by the group to recover from an impact, thus, the minimum time requested between consecutive impacts of the group. (see note 2.)
        maxNumberOfImpactedInstances:
          type: object
          $ref: '#/components/schemas/MaxNumberOfImpactedInstances'
          description: When present, specifies for different group sizes the maximum number of instances that can be impacted simultaneously within the group of virtualised resources without losing functionality. Zero cardinality indicates no constraint (see note 2). MaxNumberOfImpactedInstances is defined in clause 7.1.8.18. See note 3. 
        minNumberOfPreservedInstances:
          type: object
          $ref: '#/components/schemas/MinNumberOfPreservedInstances'
          description: When present, specifies for different group sizes the minimum number of instances which need to be preserved simultaneously within the group of virtualised resources. Zero cardinality indicates no constraint (see note 2). MinNumberOfPreservedInstances is defined in clause 7.1.8.22.See note 3.
      description: | 
        NOTE 1: When the maximum undetectable interruption time is specified it constrains the live migration. If it cannot be
        guaranteed on an NFVI that the interruption caused by the live migration will be less than the indicated
        maximum undetectable interruption time, then life migration should be downgraded according to the order of preference.
        NOTE 2: Impacts to instances of the group happening within the minimum recovery time are considered simultaneous
        impacts.
        NOTE 3: Either "maxNumberOfImpactedInstances" or "minNumberOfPreservedInstances" may be provided, but not both

    MaxNumberOfImpactedInstances:
      type: object
      required:
        - maxNumberOfImpactedInstances
      properties:
        groupSize:
          type: integer
          description: Determines the size of the group for which the maxNumberOfImpactedInstances is specified.
        maxNumberOfImpactedInstances:
          type: integer
          description: The maximum number of instances that can be impacted simultaneously within the group of the specified size.
      description: |
        NOTE 1: Each groupSize value specified for a group of virtual resources shall be unique, and it shall be possible to form an ascending ordered list of groupSizes. 
        NOTE 2: The number of instances in the group for which the maxNumberOfImpactedInstances is specified may be equal to groupSize or less. When the number of instances is less than   
                    the groupSize, it shall be at least 1 if this is the first groupSize in the ordered list of groupSizes, or it shall be greater by at least 1 than the previous groupSize in the ordered list of groupSizes.

    CommunicationInterface:
      type: object
      properties:
        ipAddresses:
          type: array
          description: Entry point information of the service as one or more pairs of IP address and port. 
          items:
            $ref: '#/components/schemas/ipAddresses'
    ipAddresses:
      type: object
      required:
        - host
        - port
      properties:
        host:
          type: string
          description: Host portion of the address.
        port:
          type: integer
          description: Port portion of the address.

    MinNumberOfPreservedInstances:
      type: object
      required:
        - minNumberOfPreservedInstances
      properties:
        groupSize:
          type: integer
          description: When present, determines the size of the group for which the minNumberOfPreservedInstances is specified. Otherwise, the size is not limited.
        minNumberOfPreservedInstances:
          type: integer
          description: The minimum number of instances which need to be preserved simultaneously within the group of the specified size.
      description: |
        NOTE 1: Each groupSize value specified for a group of virtual resources shall be unique, and it shall be possible to form 
                    an ascending ordered list of groupSizes. 
        NOTE 2: The number of instances in the group for which the minNumberOfPreservedInstances is specified may be equal 
                to groupSize or less.

    FileStorageData:
      type: object
      required:
        - sizeOfStorage
        - fileSystemProtocol
        - intVirtualLinkDesc
      properties:
        sizeOfStorage:
          type: number
          description: Size of virtualised storage resource in GB.
        fileSystemProtocol:
          type: string
          description: The shared file system protocol (e.g. NFS, CIFS).
        intVirtualLinkDesc:
          type: object
          $ref: '#/components/schemas/VnfVirtualLinkDesc'
          description: Reference of the internal VLD which this file storage connects to.

    VnfVirtualLinkDesc:
      type: object
      required:
        - virtualLinkDescId
        - virtualLinkDescFlavour
        - connectivityType
      properties:
        virtualLinkDescId: