diff --git a/MEC01002_AppGrant.yaml b/MEC01002_AppGrant.yaml index 135c1bc046204c3b9dbbc4457a2808a31bcef496..00f2e660a5d2b094ae70002e9ae9f65f9ef08b11 100644 --- a/MEC01002_AppGrant.yaml +++ b/MEC01002_AppGrant.yaml @@ -1,8 +1,8 @@ openapi: 3.1.0 +jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema info: title: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management' description: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI.' - version: '3.1.1' license: name: BSD-3-Clause url: https://forge.etsi.org/legal-matters @@ -10,43 +10,53 @@ info: name: ETSI Forge url: https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api email: cti_support@etsi.org -externalDocs: - description: "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management" - url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.01.01_60/gs_MEC01002v030101p.pdf' -jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema + version: 3.1.1 servers: - - url: https://localhost/granting/v1 - variables: {} -tags: - - name: granting - description: Grant operations +- url: https://localhost/granting/v1 paths: /grants: post: + summary: Request a grant for a particular application LCM operation. + description: The POST method requests a grant for a particular application lifecycle operation. + operationId: GrantsPOST tags: - - granting - summary: "requests a grant for a particular application lifecycle operation" - description: requests a grant for a particular application lifecycle operation - operationId: grantPOST - parameters: [] + - granting requestBody: + description: The POST method is to request a grand for an application lifecycle operation. + required: true content: application/json: schema: - $ref: "#/components/schemas/GrantRequest" - required: true + type: object + properties: + GrantRequest: + $ref: '#/components/schemas/GrantRequest' responses: - "201": - description: grant was created successfully (synchronous mode) - headers: {} + '201': + description: 'Shall be returned when the grant was created successfully (synchronous mode). + + + A representation of the created "Individual grant" resource shall be returned in the response message content. + + + The HTTP response shall include a "Location" HTTP header that indicates the URI of the "Individual grant" resource just created.' content: application/json: schema: - $ref: "#/components/schemas/Grant" - "202": - description: the request was accepted for processing - headers: {} - content: {} + type: object + properties: + Grant: + $ref: '#/components/schemas/Grant' + '202': + description: 'Shall be returned when the request was accepted for processing, and it is expected to take some time to create the grant (asynchronous mode). + + + The HTTP response shall include a "Location" HTTP header that indicates the URI of the "Individual grant" resource just created.' + content: + application/json: + schema: + type: object + properties: {} '400': $ref: '#/components/responses/400' '401': @@ -59,35 +69,40 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - parameters: [] + parameters: [] /grants/{grantId}: get: + summary: Read the status of grant for the application LCM operation. + description: The GET method reads a grant. + operationId: GrantsGETGrantid tags: - - granting - summary: "read the grant" - description: read the grant - operationId: GrantGET - parameters: - - name: grantId - in: path - description: Identifier of the individual grant. - required: true - style: simple - schema: - type: string + - granting responses: - "200": - description: A representation of the "individual grant" resource - headers: {} + '200': + description: 'Shall be returned when the grant was read successfully. + + + A representation of the "individual grant" resource shall be returned in the response message content.' + content: + application/json: + schema: + type: object + properties: + Grant: + $ref: '#/components/schemas/Grant' + '202': + description: 'Shall be returned when the process of creating the grant is ongoing, no grant is available yet. + + + The response message content shall be empty. + + + The HTTP response shall include a "Location" HTTP header that contains the URI of the newly-created resource.' content: application/json: schema: - $ref: "#/components/schemas/Grant" - "202": - description: returned when the process of creating the grant is ongoing, no grant is available yet - headers: {} - content: {} + type: object + properties: {} '400': $ref: '#/components/responses/400' '401': @@ -100,682 +115,664 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - parameters: [] + parameters: + - name: grantId + in: path + required: true + description: The unique identifier of the grantId. + schema: + type: string components: schemas: - AppExtCpConfig: - title: AppExtCpConfig + ProblemDetails: type: object properties: - cpInstanceId: + type: type: string - description: "Identifier of the external CP instance to which this set of configuration parameters is requested to be applied. \n\nShall be present if this instance has already been created." - cpProtocolData: - type: array - items: - $ref: "#/components/schemas/CpProtocolData" - description: Parameters for configuring the network protocols on the link port that connects the CP to a VL. See note. - linkPortId: + format: uri + description: A URI reference according to IETF RFC 3986 that identifies the problem type + title: type: string - description: Identifier of a pre-configured link port to which the external CP will be associated. See note. - description: | - NOTE: The following conditions apply to the attributes "linkPortId" and " cpProtocolData": - 1) The "linkPortId" and "cpProtocolData" attributes shall both be absent for the deletion of an existing - external CP instance addressed by cpInstanceId. - 2) At least one of these attributes shall be present for a to-be-created external CP instance or an existing - external CP instance. - 3) If the "linkPortId" attribute is absent, the MEPM shall create a link port. - 4) If the "cpProtocolData" attribute is absent, the "linkPortId" attribute shall be provided referencing a precreated link port, and the MEPM can use means outside the scope of the present document to obtain - the pre-configured address information for the connection point from the resource representing the link port. - 5) If both "cpProtocolData" and "linkportId" are provided, the API consumer shall ensure that the - cpProtocolData can be used with the pre-created link port referenced by "linkPortId". - - AppExtCpData: - title: AppExtCpData + description: A short, human-readable summary of the problem type + status: + type: integer + format: uint32 + description: The HTTP status code for this occurrence of the problem + detail: + type: string + description: A human-readable explanation specific to this occurrence of the problem + instance: + type: string + format: uri + description: A URI reference that identifies the specific occurrence of the problem + LinkType: + title: LinkType required: - - cpConfig - - cpdId + - href type: object properties: - cpConfig: - type: array - items: - $ref: "#/components/schemas/AppExtCpConfig" - description: List of instance data that need to be configured on the CP instances created from the respective CPD. - cpdId: + href: type: string - description: The identifier of the CPD in the AppD. + description: URI referring to a resource + KeyValuePairs: + description: 'This data type represents a list of key-value pairs. The order of the pairs in the list is not - ResourceDefinition.Type: - title: ResourceDefinition.Type - enum: - - COMPUTE - - STORAGE - - LINKPORT - - OSCONTAINER, see note. - type: string - description: > - Type of the resource definition referenced. - examples: - - COMPUTE + significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with - CpProtocolData: - title: CpProtocolData - required: - - layerProtocol + the provisions defined in clause 4 of IETF RFC 8259. + + ' type: object properties: - ipOverEthernet: + key: type: string - items: - $ref: "#/components/schemas/IpOverEthernetAddressData" - description: | - Network address data for IP over Ethernet to assign to the extCP instance. Shall be present - if layerProtocol is equal to "IP_OVER_ETHERNET", and shall be absent otherwise. - layerProtocol: + value: type: string - items: - $ref: "#/components/schemas/IpOverEthernetAddressData" - description: "Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET. See note." - description: | - Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET. See note. - 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. + KeyValuePair: + description: 'This data type represents a list of key-value pairs. The order of the pairs in the list is not - ExtLinkPortData: - title: ExtLinkPortData - required: - - id - - resourceHandle + significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with + + the provisions defined in clause 4 of IETF RFC 8259. + + ' type: object properties: - id: + key: type: string - description: Identifier of this link port as provided by the entity that has created the link port. - resourceHandle: - $ref: "#/components/schemas/ResourceHandle" - - ExtVirtualLinkData: - title: ExtVirtualLinkData - required: - - extCps - - id - - resourceId + value: + type: string + GrantRequest: + x-etsi-ref: 6.2.4.2 type: object properties: - extCps: + appInstanceId: + description: Identifier of the application instance which this grant request is related to. Shall also be provided for application instances that not yet exist but are planned to exist in the future, i.e. if the grant is requested for Instantiate. + type: string + appLcmOpOccId: + description: The identifier of the application lifecycle management operation occurrence associated to the GrantRequest. + type: string + appDId: + description: Identifier of the AppD that defines the application for which the LCM operation is to be granted. + type: string + operation: + type: string + enum: + - SEE_DESCRIPTION + description: 'The lifecycle management operation for which granting is requested: + + INSTANTIATE. + + OPERATE. + + TERMINATE. + + + See notes 1 and 2.' + addResources: + description: List of resource definitions in the AppD for resources to be added by the LCM operation which is related to this grant request, with one entry per resource. type: array + minItems: 0 items: - $ref: "#/components/schemas/AppExtCpData" - description: External CPs of the application instance to be connected to this external VL. - extLinkPorts: + $ref: '#/components/schemas/ResourceDefinition' + tempResources: + description: List of resource definitions in the AppD for resources to be temporarily instantiated during the runtime of the LCM operation which is related to this grant request. See note 3. type: array + minItems: 0 items: - $ref: "#/components/schemas/ExtLinkPortData" - description: | - Externally provided link ports to be used to connect external connection points to this external - VL. If this attribute is not present, the MEPM shall create the link ports on the external VL. + $ref: '#/components/schemas/ResourceDefinition' + removeResources: + description: Removed by the LCM operation which is related to this grant request, with one entry per resource. + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResourceDefinition' + updateResources: + description: Provides the definitions of resources to be modified by the LCM operation which is related to this grant request, with one entry per resource. + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResourceDefinition' + additionalParams: + description: MEPM, specific to the application and the LCM operation. + type: object + _links: + $ref: '#/components/schemas/_links' + required: + - appInstanceId + - appLcmOpOccId + - appDId + - operation + - _links + description: "|-\n NOTE 1:\tOther application LCM operations can be executed by the MEPM without requesting granting.\nNOTE 2:\tIf the granting request is for Instantiate, addResources shall be present.\nNOTE 3:\tThe MEO will assume that the MEPM will be responsible to both allocate and release the temporary resource during the runtime of the LCM operation. This means, the resource can be allocated and consumed after the \"start\" notification for the LCM operation is sent by the MEPM, and the resource will be released before the \"result\" notification of the application LCM operation is sent by the MEPM." + ResourceDefinition: + x-etsi-ref: 6.2.4.3 + type: object + properties: id: + description: Identifier of this "ResourceDefinition" structure, unique at least within the scope of the "GrantRequest" structure. type: string - description: The identifier of the external VL instance. The identifier is assigned by the MEC entity that manages this VL instance. - resourceId: + type: type: string - description: The identifier of the resource in the scope of the VIM. - vimConnectionId: + enum: + - SEE_DESCRIPTION + description: 'Type of the resource definition referenced. + + Permitted values: + + COMPUTE. + + STORAGE. + + LINKPORT + + OSCONTAINER, see note.' + vduId: + description: 'Reference to the related VDU in the AppD applicable to this resource. + + Shall only be present if a VDU is applicable to this resource.' type: string - description: Identifier of the VIM connection to manage this resource. - - Grant: - title: Grant + resourceTemplateId: + description: 'Reference to a resource template in the AppD as follows: + + If type="COMPUTE": VirtualComputeDescriptor, + + If type="LINKPORT": AppExtCpd, + + If type="STORAGE": VirtualStorageDescriptor, + + If type="OSCONTAINER": osContainerDescriptor. + + Cardinality may be greater than "1" when + + Type ="OSCONTAINER" and multiple references to + + OsContainerDescriptor are present in the AppD. Cardinality shall be "1" otherwise.' + type: array + minItems: 1 + items: + type: string + resource: + $ref: '#/components/schemas/Resource' required: - - id - - appInstanceId - - appLcmOpOccId - - _links + - id + - type + - resourceTemplateId + - resource + description: "|-\n NOTE:\tThis permitted value reflects the ETSI NFV interpretation of the cloud native workloads." + Grant: + x-etsi-ref: 6.2.4.4 type: object properties: id: + description: 'Identifier of the Grant. ' type: string - description: Identifier of the Grant. appInstanceId: - type: string description: Identifier of the application instance which this Grant is related to. - appLcmOpOccId: type: string + appLcmOpOccId: description: The identifier of the application lifecycle management operation occurrence associated to the Grant. + type: string vimConnections: + description: 'Provides information regarding VIM connections that are approved to be used by the MEPM to allocate resources, and provides parameters of these VIM connections. + + See note 1.' type: array - description: | - Provides information regarding VIM connections that are approved to be used by the MEPM to - allocate resources, and provides parameters of these VIM connections.See note 1. + minItems: 0 items: - $ref: "#/components/schemas/VimConnectionInfo" + $ref: '#/components/schemas/VimConnectionInfoMap' zones: + description: Identifies resource zones where the resources are approved to be allocated by the MEPM. type: array + minItems: 0 items: - $ref: "#/components/schemas/ZoneInfo" - description: Identifies resource zones where the resources are approved to be allocated by the MEPM. + $ref: '#/components/schemas/ZoneInfo' zoneGroups: + description: Information about groups of resource zones that are related and that the MEO has chosen to fulfil a zoneGroup constraint in the Grant request. type: array + minItems: 0 items: - $ref: "#/components/schemas/ZoneGroupInfo" - description: Information about groups of resource zones that are related and that the MEO has chosen to fulfil a zoneGroup - constraint in the Grant request. + $ref: '#/components/schemas/ZoneGroupInfo' addResources: + description: List of resources that are approved to be added, with one entry per resource. type: array + minItems: 0 items: - $ref: "#/components/schemas/GrantInfo" - description: List of resources that are approved to be added, with one entry per resource. + $ref: '#/components/schemas/GrantInfo' tempResources: + description: List of resources that are approved to be temporarily instantiated during the runtime of the lifecycle operation, with one entry per resource. type: array + minItems: 0 items: - $ref: "#/components/schemas/GrantInfo" - description: List of resources that are approved to be temporarily instantiated during the runtime of the lifecycle operation, with - one entry per resource + $ref: '#/components/schemas/GrantInfo' removeResources: + description: List of resources that are approved to be removed, with one entry per resource. type: array + minItems: 0 items: - $ref: "#/components/schemas/GrantInfo" - description: List of resources that are approved to be removed, with one entry per resource. + $ref: '#/components/schemas/GrantInfo' updateResources: + description: List of resources that are approved to be modified, with one entry per resource. type: array + minItems: 0 items: - $ref: "#/components/schemas/GrantInfo" - description: List of resources that are approved to be modified, with one entry per resource + $ref: '#/components/schemas/GrantInfo' vimAssets: - type: string - $ref: "#/components/schemas/VimAssets" - description: Information about assets for the application that are managed by the MEO in the VIM, such as software images.See note 2. + $ref: '#/components/schemas/VimAssets' extVirtualLinks: + description: Information about external VLs to connect the application instance to. See note 3. type: array + minItems: 0 items: - $ref: "#/components/schemas/ExtVirtualLinkData" - description: Information about external VLs to connect the application instance to. See note 3. + $ref: '#/components/schemas/ExtVirtualLinkData' additionalParams: - $ref: '#/components/schemas/KeyValuePair' - description: "MEPM, specific to the application and the LCM operation." + description: MEPM, specific to the application and the LCM operation. + type: object _links: - description: Links to resources related to this request. - $ref: "#/components/schemas/Grant.links" - description: | - This type represents a grant. Refer to clause 9.5.2.3 of ETSI GS NFV-SOL 003 - NOTE 1: This interface allows to signal the use of multiple VIMs per application. However, due to the partial support of - this feature in the present release, it is recommended in the present document that the number of entries in - the "vims" attribute in the Grant is not greater than 1. - NOTE 2: The further condition will be defined by ETSI GS NFV-SOL 003 [7]. - NOTE 3: External VLs can be passed in the application lifecycle management operation requests such as Instantiate, - and/or in the grant response. The MEO may choose to override in the grant response external VL instances - that have been passed previously in the associated application lifecycle management request, if the lifecycle - management request has originated from the MEO itself - - VimAssets: - title: VimAssets - type: object - properties: - softwareImages: - type: array - items: - $ref: "#/components/schemas/VimSoftwareImage" - description: "" - description: Information about assets for the application that are managed by the MEO in the VIM, such as software images. - - Grant.links: - title: Grant.links + $ref: '#/components/schemas/_links' required: - - appLcmOpOcc - - appInstance - type: object - properties: - appLcmOpOcc: - $ref: "#/components/schemas/LinkType" - appInstance: - $ref: "#/components/schemas/LinkType" - description: Links to resources related to this resource. - + - id + - appInstanceId + - appLcmOpOccId + - _links + description: "|-\n NOTE 1: \tThis interface allows to signal the use of multiple VIMs per application. However, due to the partial support of this feature in the present release, it is recommended in the present document that the number of entries in the \"vims\" attribute in the Grant is not greater than 1.\nNOTE 2:\tThe further condition will be defined by ETSI GS NFV-SOL 003 [7].\nNOTE 3:\tExternal VLs can be passed in the application lifecycle management operation requests such as Instantiate, and/or in the grant response. The MEO may choose to override in the grant response external VL instances that have been passed previously in the associated application lifecycle management request, if the lifecycle management request has originated from the MEO itself." GrantInfo: - title: GrantInfo - required: - - resourceDefinitionId + x-etsi-ref: 6.2.4.5 type: object properties: resourceDefinitionId: - type: string description: Identifier of the related "ResourceDefinition" structure from the related "GrantRequest" structure. - resourceGroupId: type: string - description: | - Identifier of the "infrastructure resource group", logical grouping of virtual resources assigned - to a tenant within an Infrastructure Domain, to be provided when allocating the resource.If the - VIM connection referenced by "vimConnectionId" applies to multiple infrastructure resource groups, - this attribute shall be present for new resources.If the VIM connection referenced by "vimConnectionId" - applies to a single infrastructure resource group, this attribute may be present for new resources. - This attribute shall be absent for resources that have already been allocated. vimConnectionId: + description: Identifier of the VIM connection to be used to manage this resource. Shall be present for new resources, and shall be absent for resources that have already been allocated. type: string - description: | - Identifier of the VIM connection to be used to manage this resource. Shall be present for new - resources, and shall be absent for resources that have already been allocated. zoneId: + description: Reference to the identifier of the "ZoneInfo" structure in the "Grant" structure defining the resource zone into which this resource is to be placed. Shall be present for new resources if the zones concept is applicable to them (typically, Compute resources), and shall be absent for resources that have already been allocated. + type: string + resourceGroupId: + description: 'Identifier of the "infrastructure resource group", logical grouping of virtual resources assigned to a tenant within an Infrastructure Domain, to be provided when allocating the resource. + + If the VIM connection referenced by "vimConnectionId" applies to multiple infrastructure resource groups, this attribute shall be present for new resources. + + If the VIM connection referenced by "vimConnectionId" applies to a single infrastructure resource group, this attribute may be present for new resources. + + This attribute shall be absent for resources that have already been allocated.' type: string - description: | - Reference to the identifier of the "ZoneInfo" structure in the "Grant" structure defining - the resource zone into which this resource is to be placed. Shall be present for new resources - if the zones concept is applicable to them (typically, Compute resources), and shall be absent - for resources that have already been allocated. containerNamespace: + description: 'The value of the namespace in which the MCIOs of an application with containerized components shall be deployed. + + This attribute shall be present if the granted resources are managed by a CISM. The attribute shall be absent if the granted resources are not managed by a CISM. See note.' type: string - description: > - The value of the namespace in which the MCIOs of an application with containerized components - shall be deployed. This attribute shall be present if the granted resources are managed by a CISM. - The attribute shall be absent if the granted resources are not managed by a CISM. See note. mcioConstraints: + description: 'The constraint values to be assigned to MCIOs of an application with containerized components. + + The key in the key-value pair indicates the parameter name of the MCIO constraint in the MCIO declarative descriptor and shall be one of the possible enumeration values of the "mcioConstraintsParams" attribute as specified in clause 7.1.6.2.2 of ETSI GS NFV-IFA 011 [1]. The value in the key-value pair indicates the value to be assigned to the MCIO constraint. + + This attribute shall be present if the granted resources are managed by a CISM. The attribute shall be absent if the granted resources are not managed by a CISM. See note.' type: array + minItems: 0 items: $ref: '#/components/schemas/KeyValuePair' - description: > - "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'" - description: | - NOTE: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. - - GrantRequest: - title: GrantRequest required: - - appInstanceId - - appLcmOpOccId - - appDId - - operation - - _links + - resourceDefinitionId + description: "|-\n NOTE:\tThis attribute reflects the ETSI NFV interpretation of the cloud native workloads." + ZoneInfo: + x-etsi-ref: 6.2.4.6 type: object properties: - appInstanceId: + id: + description: The identifier of this ZoneInfo instance, for the purpose of referencing it from other structures in the "Grant" structure. type: string - description: Identifier of application instance. - appLcmOpOccId: + zoneId: + description: The identifier of the resource zone, as managed by the resource management layer (typically, the VIM). type: string - description: Identifier of application lifecycle management operation occurrence. - appDId: + vimConnectionId: + description: 'Identifier of the connection to the VIM that manages the resource zone. + + + The applicable "VimConnectionInfo" structure, which is referenced by vimConnectionId, can be obtained from the " vimConnectionInfo" attribute of the "AppInstanceInfo" structure.' type: string - description: Identifier of this MEC application descriptor. This attribute shall be globally unique. - operation: - $ref: "#/components/schemas/GrantRequest.Operation" - description: The lifecycle management operation for which granting is requested See notes 1 and 2. - addResources: - type: array - items: - $ref: "#/components/schemas/ResourceDefinition" - description: List of resource definitions in the AppD for resources to be added by the LCM operation which is related to this grant request, with one entry per resource. - tempResources: - type: array - items: - $ref: "#/components/schemas/ResourceDefinition" - description: List of resource definitions in the AppD for resources to be temporarily instantiated during the runtime of the LCM operation which is related to this grant request. See note 3. - removeResources: - type: array - items: - $ref: "#/components/schemas/ResourceDefinition" - description: Removed by the LCM operation which is related to this grant request, with one entry per resource. - updateResources: - type: array - items: - $ref: "#/components/schemas/ResourceDefinition" - description: Provides the definitions of resources to be modified by the LCM operation which is related to this grant request, with one entry per resource. - additionalParams: - $ref: '#/components/schemas/KeyValuePair' - description: "MEPM, specific to the application and the LCM operation." - _links: - $ref: "#/components/schemas/GrantRequest.links" - description: | - This type represents a grant request. Refer to clause 9.5.2.2 of ETSI GS NFV-SOL 003 - NOTE 1: Other application LCM operations can be executed by the MEPM without requesting granting. - NOTE 2: If the granting request is for Instantiate, addResources shall be present. - NOTE 3: The MEO will assume that the MEPM will be responsible to both allocate and release the temporary - resource during the runtime of the LCM operation. This means, the resource can be allocated and - consumed after the "start" notification for the LCM operation is sent by the MEPM, and the resource will be - released before the "result" notification of the application LCM operation is sent by the MEPM. - - GrantRequest.Operation: - title: GrantRequest.Operation - enum: - - INSTANTIATE - - OPERATE - - TERMINATE - type: string - description: "'The lifecycle management operation for which granting is requested'" - examples: - - INSTANTIATE - - GrantRequest.links: - title: GrantRequest.links required: - - appLcmOpOcc - - appInstance - type: object - properties: - appLcmOpOcc: - $ref: "#/components/schemas/LinkType" - appInstance: - $ref: "#/components/schemas/LinkType" - description: Links to resources related to this resource. - - IpOverEthernetAddressData: - title: IpOverEthernetAddressData + - id + - zoneId + ZoneGroupInfo: + x-etsi-ref: 6.2.4.7 type: object properties: - macAddress: - type: string - description: | - "'MAC address. If this attribute is not present, it shall be chosen by the VIM. See note 1.'" - ipAddresses: + zoneId: + description: References of identifiers of "ZoneInfo" structures, each of which provides information about a resource zone that belongs to this group. type: array + minItems: 1 items: - $ref: "#/components/schemas/IpAddress" - description: | - List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1. - description: | - NOTE 1: At least one of "macAddress" or "ipAddresses" shall be present. - NOTE 2: Exactly one of "fixedAddresses", "numDynamicAddresses" or "ipAddressRange" shall be present. - - KeyValuePair: - description: | - This data type represents a list of key-value pairs. The order of the pairs in the list is not - significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with - the provisions defined in clause 4 of IETF RFC 8259. + type: string + required: + - zoneId + ExtVirtualLinkData: + x-etsi-ref: 6.2.4.8 type: object properties: - key: + id: + description: The identifier of the external VL instance. The identifier is assigned by the MEC entity that manages this VL instance. type: string - value: + vimConnectionId: + description: Identifier of the VIM connection to manage this resource. type: string - - IpAddress: - title: IpAddress - required: - - type - type: object - properties: - type: - $ref: "#/components/schemas/IpAddress.Type" - fixedAddresses: + resourceId: + description: The identifier of the resource in the scope of the VIM. + type: string + extCps: + description: External CPs of the application instance to be connected to this external VL. type: array + minItems: 1 items: - type: string - description: Fixed addresses to assign (from the subnet defined by subnetId if provided). - numDynamicAddresses: - type: integer - description: Number of dynamic addresses to assign (from the subnet defined by subnetId if provided) - format: int32 - addressRange: - $ref: "#/components/schemas/AddressRange" - subnetId: - type: string - description: Subnet defined by the identifier of the subnet resource in the VIM. - description: "'IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet.'" - - IpAddress.Type: - title: IpAddress.Type - enum: - - IPV4 - - IPV6 - type: string - description: The type of the IP addresses. - examples: - - IPV4 - - AddressRange: - title: AddressRange + $ref: '#/components/schemas/AppExtCpData' + extLinkPorts: + description: Externally provided link ports to be used to connect external connection points to this external VL. If this attribute is not present, the MEPM shall create the link ports on the external VL. + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ExtLinkPortData' required: - - minAddress - - maxAddress + - id + - resourceId + - extCps + ExtLinkPortData: + x-etsi-ref: 6.2.4.9 type: object properties: - minAddress: - type: string - description: Lowest IP address belonging to the range. - maxAddress: + id: + description: Identifier of this link port as provided by the entity that has created the link port. type: string - description: Highest IP address belonging to the range. - description: An IP address range to be used, e.g. in case of egress connections. - - LinkType: - title: LinkType + resourceHandle: + description: Reference to the virtualised resource realizing this link port. + $ref: '#/components/schemas/ResourceHandle' required: - - href + - id + - resourceHandle + ResourceHandle: + x-etsi-ref: 6.2.4.10 type: object properties: - href: - type: string - description: URI referring to a resource + vimConnectionId: + description: 'Identifier of the VIM connection to manage the resource. - ProblemDetails: - title: ProblemDetails + The applicable "VimConnectionInfo" structure, which is referenced by vimConnectionId, can be obtained from the "vimConnectionInfo" attribute of the "AppInstance" structure.' + type: string + resourceId: + description: Identifier of the resource in the scope of the VIM or the CISM or the resource provider. See note 2. + type: string + vimLevelResourceType: + description: Type of the resource in the scope of the VIM. See note 1. + type: string + required: + - resourceId + description: "|-\n NOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition.\nNOTE 2:\tWhen the container infrastructure service is a Kubernetes\xAE instance the resourceId shall be populated in the following way:\nFor a compute MCIO, it is the instance identifier that Kubernetes\xAE assigns, which is unique cluster wide per resource type.\nFor a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the 'claimName' field in the Kubernetes\xAE manifest, or a compound name built by Kubernetes\xAE if the persistent volume claim is defined inline in another template instead of in its own manifest.\nFor a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the 'metadata.name' field in Kubernetes\xAE manifest." + VimSoftwareImage: + x-etsi-ref: 6.2.4.11 type: object properties: - detail: + vimConnectionId: + description: Identifier of the VIM connection to access the software image referenced in this structure. type: string - description: A human-readable explanation specific to this occurrence of the problem - instance: + appDSoftwareImageId: + description: Identifier which references the software image descriptor in the AppD. type: string - description: A URI reference that identifies the specific occurrence of the problem - status: - type: integer - description: The HTTP status code for this occurrence of the problem - format: int32 - title: + vimSoftwareImageId: + description: Identifier of the software image in the resource management layer (i.e. VIM). See note. type: string - description: A short, human-readable summary of the problem type - type: + required: + - appDSoftwareImageId + - vimSoftwareImageId + description: "|-\n NOTE:\tFor an OS container image, the value of this attribute is a string concatenating the name and tag of the image in the CIR separated by a colon ':' with no spaces, e.g. \"dbImage:001\"." + AppExtCpData: + x-etsi-ref: 6.2.4.12 + type: object + properties: + cpdId: + description: The identifier of the CPD in the AppD. type: string - description: A URI reference according to IETF RFC 3986 that identifies the problem type - - ResourceDefinition: - title: ResourceDefinition + cpConfig: + description: List of instance data that need to be configured on the CP instances created from the respective CPD. + type: array + minItems: 1 + items: + $ref: '#/components/schemas/AppExtCpConfigMap' required: - - id - - type - - resourceTemplateId - - resource + - cpdId + - cpConfig + AppExtCpConfig: + x-etsi-ref: 6.2.4.13 type: object properties: - id: + cpInstanceId: + description: 'Identifier of the external CP instance to which this set of configuration parameters is requested to be applied. + + + Shall be present if this instance has already been created.' type: string - description: Identifier of the related ResourceDefinition structure from the related GrantRequest structure. - type: - $ref: "#/components/schemas/ResourceDefinition.Type" - description: Type of the resource definition referenced.See note - vduId: + linkPortId: + description: Identifier of a pre-configured link port to which the external CP will be associated. See note. type: string - description: Reference to the related VDU in the AppD applicable to this resource. - resourceTemplateId: - description: > - Reference to a resource template, in the AppD as follows: - - If type="COMPUTE": VirtualComputeDescriptor, - - If type="LINKPORT": AppExtCpd, - - If type="STORAGE": VirtualStorageDescriptor - - If type="OSCONTAINER": osContainerDescriptor - Cardinality may be greater than "1" when - Type ="OSCONTAINER" and multiple references to - OsContainerDescriptor are present in the AppD. Cardinality - shall be "1" otherwise. + cpProtocolData: + description: Parameters for configuring the network protocols on the link port that connects the CP to a VL. See note. type: array + minItems: 0 items: - type: string - resource: - $ref: "#/components/schemas/Resource" - description: | - This type provides information of an existing or proposed resource used by the application. Refer to clause 9.5.3.2 of ETSI GS NFV-SOL 003 - NOTE: This permitted value reflects the ETSI NFV interpretation of the cloud native workloads. - - Resource: - title: Resource - required: - - vimConnectionInfo - - resourceId + $ref: '#/components/schemas/CpProtocolData' + description: "|-\n NOTE:\tThe following conditions apply to the attributes \"linkPortId\" and \" cpProtocolData\":\nThe \"linkPortId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an existing external CP instance addressed by cpInstanceId.\nAt least one of these attributes shall be present for a to-be-created external CP instance or an existing external CP instance.\nIf the \"linkPortId\" attribute is absent, the MEPM shall create a link port.\nIf the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a pre-created link port, and the MEPM can use means outside the scope of the present document to obtain the pre-configured address information for the connection point from the resource representing the link port.\nIf both \"cpProtocolData\" and \"linkportId\" are provided, the API consumer shall ensure that the cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\"." + CpProtocolData: + x-etsi-ref: 6.2.4.14 type: object properties: - vimConnectionInfo: - $ref: "#/components/schemas/VimConnectionInfo" - resourceId: + layerProtocol: type: string - description: Identifier of the resource in the scope of the VIM. - description: Resource information for an existing resource + enum: + - SEE_DESCRIPTION + description: 'Identifier of layer(s) and protocol(s). - ResourceHandle: - title: ResourceHandle + + Permitted values: IP_OVER_ETHERNET. + + + See note.' + ipOverEthernet: + description: Network address data for IP 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: '#/components/schemas/IpOverEthernetAddressData' required: - - resourceId + - layerProtocol + description: "|-\n NOTE:\tThis 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." + IpOverEthernetAddressData: + x-etsi-ref: 6.2.4.15 type: object properties: - resourceId: - type: string - description: | - Identifier of the resource in the scope of the VIM or the CISM or the resource provider. See note 2. - vimConnectionId: - type: string - description: Identifier of the VIM connection to manage the resource.The applicable "VimConnectionInfo" structure, which is referenced by vimConnectionId, can be obtained from the "vimConnectionInfo" attribute of the "AppInstance" structure. - vimLevelResourceType: + macAddress: + description: MAC address. If this attribute is not present, it shall be chosen by the VIM. See note 1. type: string - description: > - Type of the resource in the scope of the VIM. See note 1. - description: | - NOTE 1: The value set of the "vimLevelResourceType" attribute is within the scope of the VIM and can be used as - information that complements the ResourceHandle. This value set is different from the value set of the - "type" attribute in the ResourceDefinition. - NOTE 2: When the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the - following way: - - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide - per resource type. - - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, - i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by - Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own - manifest. - - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value - of the 'metadata.name' field in Kubernetes® manifest. - + ipAddresses: + type: array + items: + $ref: '#/components/schemas/IpAddresses' + description: "|-\n NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present.\nNOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present." VimConnectionInfo: - title: VimConnectionInfo - required: - - id - - vimType + x-etsi-ref: 6.2.2.18 type: object properties: - accessInfo: - type: object - items: - $ref: "#/components/schemas/KeyValuePair" - description: "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'" - extra: - type: object - items: - $ref: "#/components/schemas/KeyValuePair" - description: | - "'This data type represents a list of key-value pairs. The order of the pairs in the list - is not significant. In JSON, a set of key-value pairs is represented as an object. It shall - comply with the provisions defined in clause 4 of IETF RFC 8259'" id: - type: string description: The identifier of the VIM Connection. This identifier is managed by the MEO. - interfaceInfo: - type: object - items: - $ref: "#/components/schemas/KeyValuePair" - description: | - "'This data type represents a list of key-value pairs. The order of the pairs in the list - is not significant. In JSON, a set of key-value pairs is represented as an object. It shall - comply with the provisions defined in clause 4 of IETF RFC 8259'" + type: string vimId: + description: 'The identifier of the VIM instance. This identifier is managed by the MEO. + + + Shall be present to address additional information about the VIM if such information has been configured into the MEPM by means outside the scope of the present document, and should be absent otherwise.' type: string - description: | - The identifier of the VIM instance. This identifier is managed by the MEO.Shall be present to - address additional information about the VIM if such information has been configured into the - MEPM by means outside the scope of the present document, and should be absent otherwise. vimType: + description: 'Discriminator for the different types of the VIM information. + + + The value of this attribute determines the structure of the "interfaceInfo" and "accessInfo" attributes, based on the type of the VIM. + + + The set of permitted values is expected to change over time as new types or versions of VIMs become available.' type: string - description: | - Discriminator for the different types of the VIM information. The value of this attribute - determines the structure of the "interfaceInfo" and "accessInfo" attributes, based on the type - of the VIM.The set of permitted values is expected to change over time as new types or versions - of VIMs become available. + interfaceInfo: + description: 'Information about the interface or interfaces to the VIM, if applicable, such as the URI of an interface endpoint to communicate with the VIM. The applicable keys are dependent on the content of vimType. - VimSoftwareImage: - title: VimSoftwareImage + + Alternatively, such information may have been configured into the VNFM and bound to the vimId.' + type: object + accessInfo: + description: 'Authentication credentials for accessing the VIM, and other access-related information such as tenants or infrastructure resource groups. The applicable keys are dependent on the content of vimType. + + + If the VimConnectionInfo structure is part of an HTTP response message content, sensitive attributes that are children of this attributes (such as passwords) shall not be included. + + + If the VimConnectionInfo structure is part of an HTTP request message content, sensitive attributes that are children of this attribute (such as passwords) shall be present if they have not been provisioned out of band.' + type: object + extra: + description: VIM type specific additional information. The applicable structure, and whether or not this attribute is available, is dependent on the content of vimType. + type: object required: - - appDSoftwareImageId - - vimSoftwareImageId + - id + - vimType + _links: + description: Links to resources related to this request. type: object properties: - appDSoftwareImageId: - type: string - description: Identifier which references the software image descriptor in the AppD. - vimConnectionId: - type: string - description: Identifier of the VIM connection to access the software image referenced in this structure. - vimSoftwareImageId: - type: string - description: > - Identifier of the software image in the resource management layer (i.e. VIM) See note. - description: | - NOTE: For an OS container image, the value of this attribute is a string concatenating the name and tag of the image in the CIR separated by a colon ':' with no spaces, e.g. "dbImage:001". + appLcmOpOcc: + description: Related lifecycle management operation occurrence. + $ref: '#/components/schemas/LinkType' + appInstance: + description: Related application instance. + $ref: '#/components/schemas/LinkType' + required: + - appLcmOpOcc + - appInstance + Resource: + description: 'Resource information for an existing resource. - ZoneGroupInfo: - title: ZoneGroupInfo + Shall be present for resources that are planned to be deleted or modified. + + Shall be absent otherwise.' + type: object + properties: + vimConnectionInfo: + description: Specifies the connection information of VIM for the resources of the application instance. + $ref: '#/components/schemas/VimConnectionInfo' + resourceId: + description: Identifier of the resource in the scope of the VIM. + type: string required: - - zoneId + - vimConnectionInfo + - resourceId + VimAssets: + description: 'Information about assets for the application that are managed by the MEO in the VIM, such as software images. + + See note 2.' type: object properties: - zoneId: + softwareImages: + description: Mappings between software images defined in the AppD and software images managed in the VIM. type: array + minItems: 0 items: - type: string - description: References of identifiers of "ZoneInfo" structures, each of which provides information about a resource zone that belongs to this group. + $ref: '#/components/schemas/VimSoftwareImage' + AddressRange: + description: 'An IP address range to be used, e.g. in case of egress connections. - ZoneInfo: - title: ZoneInfo - required: - - id - - zoneId + + In case this attribute is present, IP addresses from the range will be used. See note 2.' type: object properties: - id: + minAddress: + description: Lowest IP address belonging to the range. type: string - description: Identifier of the connection to the VIM that manages the resource zone. The applicable "VimConnectionInfo" structure, which is referenced by vimConnectionId, can be obtained from the " vimConnectionInfo" attribute of the "AppInstanceInfo" structure. - vimConnectionId: + maxAddress: + description: Highest IP address belonging to the range. type: string - description: | - "Identifier of the connection to the VIM that manages the resource zone.The applicable "VimConnectionInfo" structure, which is referenced byvimConnectionId, can be obtained from the " vimConnectionInfo" - attribute of the "AppInstanceInfo" structure." - zoneId: + required: + - minAddress + - maxAddress + IpAddresses: + description: 'List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. + + + If this attribute is not present, no IP address shall be assigned. See note 1.' + type: object + properties: + type: type: string - description: The identifier of the resource zone, as managed by the resource management layer (typically, the VIM). + enum: + - SEE_DESCRIPTION + description: 'The type of the IP addresses. + + + Permitted values: IPV4, IPV6.' + fixedAddresses: + description: Fixed addresses to assign (from the subnet defined by "subnetId" if provided). See note 2. + type: array + minItems: 0 + items: + type: string + numDynamicAddresses: + description: Number of dynamic addresses to assign (from the subnet defined by "subnetId" if provided). See note 2. + type: integer + addressRange: + $ref: '#/components/schemas/AddressRange' + subnetId: + description: 'Subnet defined by the identifier of the subnet resource in the VIM. + + In case this attribute is present, IP addresses from that subnet will be assigned; otherwise, IP addresses not bound to a subnet will be assigned.' + type: string + required: + - type + AppExtCpConfigMap: + type: object + additionalProperties: + $ref: '#/components/schemas/AppExtCpConfig' + VimConnectionInfoMap: + type: object + additionalProperties: + $ref: '#/components/schemas/VimConnectionInfo' responses: + '200': + description: OK + '204': + description: No Content '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + description: 'Bad Request: used to indicate that incorrect parameters were passed to the request.' content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '401': - description: 'Unauthorized : used when the client did not submit credentials.' + description: 'Unauthorized: used when the client did not submit credentials.' content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' + description: 'Forbidden: operation is not allowed given the current status of the resource.' content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + description: 'Not Found: used when a client provided a URI that cannot be mapped to a valid resource URI.' content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + description: 'Not Acceptable: used to indicate that the server cannot provide the any of the content formats supported by the client.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '409': + description: 'Conflict: The operation cannot be executed currently, due to a conflict with the state of the resource. .' content: application/problem+json: schema: @@ -786,6 +783,5 @@ components: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' + parameters: {} -security: - - {} diff --git a/MEC01002_AppLcm.yaml b/MEC01002_AppLcm.yaml index 0c2a0a2299a226fd3affbbc1132a11919d3d1e5f..4f3e686381f2769097498ab2c77b23f4216c9ec5 100644 --- a/MEC01002_AppLcm.yaml +++ b/MEC01002_AppLcm.yaml @@ -1,52 +1,52 @@ openapi: 3.1.0 +jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema info: title: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management' description: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI.' license: name: BSD-3-Clause - url: 'https://forge.etsi.org/legal-matters' + url: https://forge.etsi.org/legal-matters contact: name: ETSI Forge url: https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api email: cti_support@etsi.org - version: '3.1.1' - -externalDocs: - description: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v3.1.1' - url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.01.01_60/gs_MEC01002v030101p.pdf' -jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema -tags: -- name: app-lcm - description: App lifecycle management -- name: app-lcm-notifications - description: App lifecycle management notifications + version: 3.1.1 servers: - url: https://localhost/app_lcm/v1 - variables: {} paths: /app_instances: post: + summary: Create an application instance resource. + description: The POST method is used to create an application instance resource, which refers to the procedure of "creating application instance resource operation" described in clause 6.3. + operationId: AppinstancesPOST tags: - - 'app-lcm' - summary: 'Create an application instance resource' - description: Create an application instance resource - operationId: appInstancePOST - parameters: [] + - app-lcm requestBody: description: The POST method is used to create an application instance resource. + required: true content: application/json: schema: - $ref: '#/components/schemas/CreateAppInstanceRequest' - required: true + type: object + properties: + CreateAppInstanceRequest: + $ref: '#/components/schemas/CreateAppInstanceRequest' responses: '201': - description: An application instance identifier and the related resource has been created successfully. - headers: {} + description: 'An application instance identifier and the related resource has been created successfully. + + + The response message content shall contain a representation of the created resource. + + + The HTTP response shall include a "Location" HTTP header that contains the resource URI of the created application instance.' content: application/json: schema: - $ref: '#/components/schemas/AppInstanceInfo' + type: object + properties: + AppInstanceInfo: + $ref: '#/components/schemas/AppInstanceInfo' '400': $ref: '#/components/responses/400' '401': @@ -59,60 +59,31 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false + parameters: [] get: + summary: Query multiple application instance resources. + description: The GET method retrieves information about the application instances resources. This refers to the procedure of "query application instance information operation" as described in clause 6.3.1.5. + operationId: AppinstancesGET tags: - - 'app-lcm' - summary: 'Queries information relating to on-boarded application packages in the MEO' - description: queries information relating to on-boarded application packages in the MEO - operationId: appInstanceGET + - app-lcm parameters: - - name: filter - in: query - description: Attribute-based filtering parameters according to ETSI GS MEC 009 - style: form - explode: true - schema: - type: string - - name: all_fields - in: query - description: Include all complex attributes in the response. - style: form - explode: true - schema: - type: string - - name: fields - in: query - description: Complex attributes of AppPkgInfo to be included into the response - style: form - explode: true - schema: - type: string - - name: exclude_fields - in: query - description: Complex attributes of AppPkgInfo to be excluded from the response. - style: form - explode: true - schema: - type: string - - name: exclude_default - in: query - description: Indicates to exclude the following complex attributes of AppPkgInfo from the response. - style: form - explode: true - schema: - type: string + - $ref: '#/components/parameters/Query.Filter' + - $ref: '#/components/parameters/Query.All_fields' + - $ref: '#/components/parameters/Query.Fields' + - $ref: '#/components/parameters/Query.Exclude_fields' + - $ref: '#/components/parameters/Query.Exclude_default' responses: '200': - description: Array the representations of zero or more application instances - headers: {} + description: 'Information about zero or more application instances was queried successfully. + + + The response message content shall contain in an array the representations of zero or more application instances.' content: application/json: schema: type: array items: $ref: '#/components/schemas/AppInstanceInfo' - description: '' '400': $ref: '#/components/responses/400' '401': @@ -125,31 +96,26 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - parameters: [] /app_instances/{appInstanceId}: get: + summary: Read an application instance resource. + description: "The GET method retrieves the information of an individual application instance via reading an individual application instance resource, which is used by the procedure of \"query application instance information operation\" as described in clause\_6.3.1.5." + operationId: AppinstancesGETAppinstanceid tags: - - 'app-lcm' - summary: 'Retrieves the information of an individual application instance via reading an individual application instance.' - description: Retrieves the information of an individual application instance via reading an individual application instance. - operationId: appInstanceIdGET - parameters: - - name: appInstanceId - in: path - description: Identifier of an individual application instance - required: true - style: simple - schema: - type: string + - app-lcm responses: '200': - description: Contains a representation of the read resource. - headers: {} + description: 'Information about an individual application instance was read successfully. + + + The response message content shall contain a representation of the read resource.' content: application/json: schema: - $ref: '#/components/schemas/AppInstanceInfo' + type: object + properties: + AppInstanceInfo: + $ref: '#/components/schemas/AppInstanceInfo' '400': $ref: '#/components/responses/400' '401': @@ -162,26 +128,22 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - delete: - tags: - - 'app-lcm' - summary: 'Deletes an individual application instance resource.' - description: Deletes an individual application instance resource. - operationId: appInstanceIdDELETE parameters: - name: appInstanceId in: path - description: Identifier of an individual application instance required: true - style: simple + description: The unique identifier of the appInstanceId. schema: type: string + delete: + summary: Delete individual application instance resource. + description: The DELETE method deletes an individual application instance resource, which refers to the procedure of "delete application instance identifier operation" as described in clause 6.3.1.8. + operationId: AppinstancesDELETEAppinstanceid + tags: + - app-lcm responses: '204': - description: No Content - headers: {} - content: {} + $ref: '#/components/responses/204' '400': $ref: '#/components/responses/400' '401': @@ -194,38 +156,61 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - parameters: [] + parameters: + - name: appInstanceId + in: path + required: true + description: The unique identifier of the appInstanceId. + schema: + type: string /subscriptions: post: + summary: Subscribe to notifications related to application instances' lifecycle change. + description: The POST method is to subscribe to the notification of application instance related change, which is mapped to the procedure of "subscription operation". + operationId: SubscriptionsPOST tags: - - 'app-lcm-notifications' - summary: 'subscribe to the notification of application instance related change' - description: subscribe to the notification of application instance related change - operationId: appLcmSubscriptionsPOST + - subscriptions requestBody: - description: '' + description: 'The subscription request message content contains the data type of the specific subscription to application instance state change event that is to be created: + + AppInstSubscriptionRequest + + AppLcmOpOccSubscriptionRequest + + AppInstIdCreationSubscriptionRequest + + AppInstIdDeletionSubscriptionRequest.' content: application/json: schema: - oneOf: - - $ref: '#/components/schemas/AppInstSubscriptionRequest' - - $ref: '#/components/schemas/AppLcmOpOccSubscriptionRequest' - - $ref: '#/components/schemas/AppInstIdCreationSubscriptionRequest' - - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionRequest' - required: true + type: object + properties: + AppInstSubscriptionRequest: + $ref: '#/components/schemas/AppInstSubscriptionRequest' responses: '201': - description: a representation of the created SubscriptionInfo. - headers: {} + description: 'Upon success, a response message content representing the created subscription is returned. + + + The response message content shall contain a representation of the created SubscriptionInfo with the appropriate data type: + + AppInstSubscriptionInfo + + AppLcmOpOccSubscriptionInfo + + AppInstIdCreationSubscriptionInfo + + AppInstIdDeletionSubscriptionInfo + + + The HTTP response shall include a "Location" HTTP header that contains the resource URI of the created subscription resource.' content: application/json: schema: - oneOf: - - $ref: '#/components/schemas/AppInstSubscriptionInfo' - - $ref: '#/components/schemas/AppLcmOpOccSubscriptionInfo' - - $ref: '#/components/schemas/AppInstIdCreationSubscriptionInfo' - - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionInfo' + type: object + properties: + AppLcmOpOccSubscriptionRequest: + $ref: '#/components/schemas/AppLcmOpOccSubscriptionRequest' '400': $ref: '#/components/responses/400' '401': @@ -242,46 +227,47 @@ paths: notification: '{$request.body#/callbackUri}': post: - summary: 'Callback POST used to send a notification' - description: 'Notification for informing the subscribers about operational state of application instance resources or state changes of an application LCM operation occurrence. It depends on subscription type.' - operationId: notificationPOST + summary: Callback POST used to send a notification + description: Subscription notification + operationId: notificationPOST159916 requestBody: description: Subscription notification required: true content: application/json: schema: - oneOf: - - $ref: '#/components/schemas/AppInstNotification' - - $ref: '#/components/schemas/AppLcmOpOccNotification' + type: object + properties: + subscriptionNotification: + oneOf: + - $ref: '#/components/schemas/AppInstSubscriptionRequest' + - $ref: '#/components/schemas/AppLcmOpOccSubscriptionRequest' + - $ref: '#/components/schemas/AppInstIdCreationSubscriptionRequest' + - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionRequest' responses: '204': - description: "No content" + description: No content '404': - description: "Not found" - deprecated: false + description: Not found + parameters: [] get: + summary: Query multiple subscriptions. + description: The GET method retrieves the information of multiple subscriptions to notifications related to an application instance. + operationId: SubscriptionsGET tags: - - 'app-lcm-notifications' - summary: 'Retrieves the information of multiple subscriptions to notifications related to an application instance.' - description: Retrieves the information of multiple subscriptions to notifications related to an application instance. - operationId: appLcmSubscriptionsGET + - subscriptions parameters: - - name: subscriptionType - in: query - description: Query parameter to filter on a specific subscription type. - style: form - explode: true - schema: - $ref: '#/components/schemas/AppInstanceSubscriptionType' + - $ref: '#/components/parameters/Query.Subscriptiontype' responses: '200': - description: List of all subscriptions is returned. - headers: {} + description: Upon success, a response message content containing a list of all subscriptions is returned. content: application/json: schema: - $ref: '#/components/schemas/AppInstanceSubscriptionLinkList' + type: object + properties: + AppInstanceSubscriptionLinkList: + $ref: '#/components/schemas/AppInstanceSubscriptionLinkList' '400': $ref: '#/components/responses/400' '401': @@ -294,35 +280,34 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - parameters: [] /subscriptions/{subscriptionId}: get: + summary: Read an individual subscription resource. + description: The GET method retrieves the individual subscription information by reading an individual subscription resource. This method shall comply with the URI query parameters, request and response data structures, and response codes, as specified in tables 7.4.4.3.2-1 and 7.4.4.3.2-2. + operationId: SubscriptionsGETSubscriptionid tags: - - 'app-lcm-notifications' - summary: 'Used to represent an individual subscription to notifications about application package changes.' - description: Used to represent an individual subscription to notifications about application package changes. - operationId: individualSubscriptionGET - parameters: - - name: subscriptionId - in: path - description: Represents an individual subscription to notification related to an application instance - required: true - style: simple - schema: - type: string + - subscriptions responses: '200': - description: Representation of the resource. - headers: {} + description: 'Upon success, a response message content containing a representation of the individual subscription resource shall be returned. + + + The allowed data types for the SubscriptionInfo are: + + AppInstSubscriptionInfo + + AppLcmOpOccSubscriptionInfo + + AppInstIdCreationSubscriptionInfo + + AppInstIdDeletionSubscriptionInfo.' content: application/json: schema: - oneOf: - - $ref: '#/components/schemas/AppInstSubscriptionInfo' - - $ref: '#/components/schemas/AppLcmOpOccSubscriptionInfo' - - $ref: '#/components/schemas/AppInstIdCreationSubscriptionInfo' - - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionInfo' + type: object + properties: + AppLcmOpOccSubscriptionRequest: + $ref: '#/components/schemas/AppLcmOpOccSubscriptionRequest' '400': $ref: '#/components/responses/400' '401': @@ -335,105 +320,111 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - delete: - tags: - - 'app-lcm-notifications' - summary: 'Deletes the individual subscription to notifications about application package changes in MEO.' - description: Deletes the individual subscription to notifications about application package changes in MEO. - operationId: individualSubscriptionDELETE parameters: - name: subscriptionId in: path - description: Represents an individual subscription to notification related to an application instance required: true - style: simple + description: The unique identifier of the subscriptionId. schema: type: string + delete: + summary: Terminate an individual subscription. + description: The DELETE method is used to delete an individual subscription to notifications related to application instances. + operationId: SubscriptionsDELETESubscriptionid + tags: + - subscriptions responses: '204': - description: No Content - headers: {} - content: {} - '400': - $ref: '#/components/responses/400' + $ref: '#/components/responses/204' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - parameters: [] + parameters: + - name: subscriptionId + in: path + required: true + description: The unique identifier of the subscriptionId. + schema: + type: string /user_defined_notification: post: + summary: Delivers a notification from the application lifecycle management resource to the subscriber. + description: The POST method delivers a notification from the application lifecycle management resource to the subscriber. + operationId: UserdefinednotificationPOST tags: - - 'app-lcm-notifications' - summary: 'Delivers a notification from the application lifecycle management resource to the subscriber.' - description: Delivers a notification from the application lifecycle management resource to the subscriber. - operationId: appInstNotificationPOST - parameters: [] + - notification requestBody: - description: '' + description: 'A notification of an event related to an application instance. + + The allowed data types of application state change notification are: + + AppInstNotification + + AppLcmOpOccNotification + + AppInstanceIdentifierCreationNotification + + AppInstanceIdentifierDeletionNotification.' content: application/json: schema: - oneOf: - - $ref: '#/components/schemas/AppInstNotification' - - $ref: '#/components/schemas/AppLcmOpOccNotification' - - $ref: '#/components/schemas/AppInstanceIdentifierCreationNotification' - - $ref: '#/components/schemas/AppInstanceIdentifierDeletionNotification' - required: true + type: object + properties: + AppInstNotification: + $ref: '#/components/schemas/AppInstNotification' responses: '204': - description: No Content - headers: {} - content: {} - '400': - $ref: '#/components/responses/400' + description: The notification was delivered successfully. The response message content shall be empty. + content: + application/json: + schema: + type: object + properties: {} '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - parameters: [] + parameters: [] /app_instances/{appInstanceId}/instantiate: post: + summary: Instantiate the application instance. + description: The POST method is to instantiate the application instance. + operationId: AppinstancesInstantiatePOSTAppinstanceid tags: - - 'app-lcm' - summary: 'Deletes the individual subscription to notifications about application package changes in MEO.' - description: task of instantiating an application instance. - operationId: appLcmInstanciatePOST - parameters: - - name: appInstanceId - in: path - description: Identifier of an individual application instance - required: true - style: simple - schema: - type: string + - app-lcm requestBody: - description: '' + description: The request message content contains the information necessary to instantiate an application instance. + required: true content: application/json: schema: - $ref: '#/components/schemas/InstantiateAppRequest' - required: true + type: object + properties: + InstantiateAppRequest: + $ref: '#/components/schemas/InstantiateAppRequest' responses: '202': - description: accepted for processing, but the processing has not yet been completed. - headers: {} - content: {} + description: 'The request was accepted for processing, but the processing has not yet been completed. + + + The response message content shall be empty. + + + The HTTP response shall include a "Location" HTTP header that contains the URI of the newly-created "application LCM operation occurrence" resource that corresponds to this application instance instantiation operation.' + content: + application/json: + schema: + type: object + properties: {} '400': $ref: '#/components/responses/400' '401': @@ -446,38 +437,44 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - parameters: [] - - ## Resources of application lifecycle management on Mm1 - - /app_instances/{appInstanceId}/terminate: - post: - tags: - - 'app-lcm' - summary: 'terminate an application instance.' - description: terminate an application instance. - operationId: appLcmTerminatePOST parameters: - name: appInstanceId in: path - description: Identifier of an individual application instance required: true - style: simple + description: The unique identifier of the appInstanceId. schema: type: string + /app_instances/{appInstanceId}/terminate: + post: + summary: Terminate the application instance. + description: The POST method is used to terminate an application instance. + operationId: AppinstancesTerminatePOSTAppinstanceid + tags: + - app-lcm requestBody: - description: '' + description: Parameters for the termination, as defined in clause 6.2.2.9. + required: true content: application/json: schema: - $ref: '#/components/schemas/TerminateAppRequest' - required: true + type: object + properties: + TerminateAppRequest: + $ref: '#/components/schemas/TerminateAppRequest' responses: '202': - description: accepted for processing, but the processing has not yet been completed. - headers: {} - content: {} + description: 'The request was accepted for processing, but the processing has not yet been completed. + + + The response message content shall be empty. + + + The HTTP response shall include a "Location" HTTP header that contains the URI of the newlycreated "application LCM operation occurrence" resource that corresponds to this operation.' + content: + application/json: + schema: + type: object + properties: {} '400': $ref: '#/components/responses/400' '401': @@ -490,35 +487,44 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - parameters: [] - /app_instances/{appInstanceId}/operate: - post: - tags: - - 'app-lcm' - summary: 'change the operational state, i.e. start or stop, of the application instance' - description: change the operational state, i.e. start or stop, of the application instance - operationId: appLcmOperatePOST parameters: - name: appInstanceId in: path - description: Identifier of an individual application instance required: true - style: simple + description: The unique identifier of the appInstanceId. schema: type: string + /app_instances/{appInstanceId}/operate: + post: + summary: Start or stop the application instance. + description: The POST method is used to change the operational state, i.e. start or stop, of the application instance. + operationId: AppinstancesOperatePOSTAppinstanceid + tags: + - app-lcm requestBody: - description: '' + description: The request message content contains the information necessary to change the operational state of application instance, as described in clause 6.2.2.8. + required: true content: application/json: schema: - $ref: '#/components/schemas/OperateAppRequest' - required: true + type: object + properties: + OperateAppRequest: + $ref: '#/components/schemas/OperateAppRequest' responses: '202': - description: accepted for processing, but the processing has not yet been completed. - headers: {} - content: {} + description: 'The request was accepted for processing, but it is possible that the processing is not yet completed. + + + The response message content shall be empty. + + + The HTTP response shall include a "Location" HTTP header that contains the URI of the newlycreated "application LCM operation occurrence" resource that corresponds to this application instance instantiation operation.' + content: + application/json: + schema: + type: object + properties: {} '400': $ref: '#/components/responses/400' '401': @@ -531,62 +537,38 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - parameters: [] + parameters: + - name: appInstanceId + in: path + required: true + description: The unique identifier of the appInstanceId. + schema: + type: string /app_lcm_op_occs: get: + summary: Query multiple application lifecycle operation occurrences. + description: The GET method retrieves information of operation status about multiple application instance lifecycle management operation occurrences. + operationId: ApplcmopoccsGET tags: - - 'app-lcm' - summary: 'retrieves information of operation status about multiple application instance lifecycle management operation occurrences' - description: retrieves information of operation status about multiple application instance lifecycle management operation occurrences - operationId: appLcmOpOccsGET + - app-lcm parameters: - - name: filter - in: query - description: Attribute-based filtering parameters according to ETSI GS MEC 009 - style: form - explode: true - schema: - type: string - - name: all_fields - in: query - description: Include all complex attributes in the response. - style: form - explode: true - schema: - type: string - - name: fields - in: query - description: Complex attributes of AppLcmOpOcc to be excluded from the response. - style: form - explode: true - schema: - type: string - - name: exclude_fields - in: query - description: Complex attributes of AppLcmOpOcc to be excluded from the response. - style: form - explode: true - schema: - type: string - - name: exclude_default - in: query - description: Indicates to exclude the following complex attributes of AppLcmOpOcc from the response. - style: form - explode: true - schema: - type: string + - $ref: '#/components/parameters/Query.Filter1' + - $ref: '#/components/parameters/Query.All_fields' + - $ref: '#/components/parameters/Query.Fields1' + - $ref: '#/components/parameters/Query.Exclude_fields1' + - $ref: '#/components/parameters/Query.Exclude_default1' responses: '200': - description: Status information for zero or more application instance lifecycle management operation occurrences was queried successfully - headers: {} + description: 'Status information for zero or more application instance lifecycle management operation occurrences was queried successfully. + + + The response message content shall contain in an array the status information about zero or more application lifecycle operation occurrences.' content: application/json: schema: type: array items: $ref: '#/components/schemas/AppLcmOpOcc' - description: '' '400': $ref: '#/components/responses/400' '401': @@ -599,31 +581,26 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - parameters: [] /app_lcm_op_occs/{appLcmOpOccId}: get: + summary: Read the operation state of the individual application lifecycle operation occurrence. + description: The GET method reads the status information of an individual application LCM operation occurrence, which is used by the procedure of "query application lifecycle operation status" as described in clause 6.3.1.6. + operationId: ApplcmopoccsGETApplcmopoccid tags: - - 'app-lcm' - summary: 'reads the status information of an individual application LCM operation occurrence' - description: reads the status information of an individual application LCM operation occurrence - operationId: appLcmOpOccsbyIdGET - parameters: - - name: appLcmOpOccId - in: path - description: Identifies an individual application LCM operation occurrence - required: true - style: simple - schema: - type: string + - app-lcm responses: '200': - description: Information about an application LCM operation occurrence was read successfully - headers: {} + description: 'Information about an application LCM operation occurrence was read successfully. + + + The response message content shall contain status information about an application lifecycle management operation occurrence.' content: application/json: schema: - $ref: '#/components/schemas/AppLcmOpOcc' + type: object + properties: + AppLcmOpOcc: + $ref: '#/components/schemas/AppLcmOpOcc' '400': $ref: '#/components/responses/400' '401': @@ -636,35 +613,41 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - parameters: [] - /app_lcm_op_occs/{appLcmOpOccId}/cancel: - post: - tags: - - 'app-lcm' - summary: 'cancel an ongoing application lifecycle operation whose related "Individual application LCM operation occurrence" resource is in "PROCESSING" state.' - description: cancel an ongoing application lifecycle operation whose related "Individual application LCM operation occurrence" resource is in "PROCESSING" state. - operationId: appLcmCancelPOST parameters: - name: appLcmOpOccId in: path - description: Identifies an individual application LCM operation occurrence required: true - style: simple + description: The unique identifier of the appLcmOpOccId. schema: type: string + /app_lcm_op_occs/{appLcmOpOccId}/cancel: + post: + summary: Cancel an ongoing individual application LCM operation. + description: "The POST method is used to cancel an ongoing application lifecycle operation whose related \"Individual application LCM operation occurrence\" resource is in \"PROCESSING\" state. This method shall comply with the URI request and response data structures, and response codes, as specified in tables\_7.4.11.3.1-1 and 7.4.11.3.1-2." + operationId: ApplcmopoccsCancelPOSTApplcmopoccid + tags: + - app-lcm requestBody: - description: '' + description: The request message content contains the information on the cancellation mode to apply to the ongoing application LCM operation, as described in clause 5.4.5. + required: true content: application/json: schema: - $ref: '#/components/schemas/CancelMode' - required: true + type: object + properties: + CancelMode: + $ref: '#/components/schemas/CancelMode' responses: '202': - description: The request was accepted for processing, but it is possible that the processing is not yet completed. - headers: {} - content: {} + description: 'The request was accepted for processing, but it is possible that the processing is not yet completed. + + + The response message content shall be empty.' + content: + application/json: + schema: + type: object + properties: {} '400': $ref: '#/components/responses/400' '401': @@ -677,31 +660,38 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - parameters: [] - /app_lcm_op_occs/{appLcmOpOccId}/fail: - post: - tags: - - 'app-lcm' - summary: marks an application lifecycle management operation occurrence as "finally failed" - description: marks an application lifecycle management operation occurrence as "finally failed" - operationId: appLcmFailPOST parameters: - name: appLcmOpOccId in: path - description: Identifies an individual application LCM operation occurrence required: true - style: simple + description: The unique identifier of the appLcmOpOccId. schema: type: string + /app_lcm_op_occs/{appLcmOpOccId}/fail: + post: + summary: Finally fail an ongoing individual application LCM operation. + description: "The POST method marks an application lifecycle management operation occurrence as \"finally failed\" if that operation occurrence is in \"FAILED_TEMP\" state. This method shall comply with the URI request and response data structures, and response codes, as specified in tables\_7.4.12.3.1-1 and 7.4.12.3.1-2." + operationId: ApplcmopoccsFailPOSTApplcmopoccid + tags: + - app-lcm + requestBody: + description: The POST request message content to this resource shall be empty. + content: + application/json: {} + required: false responses: - '202': - description: Shall be returned when the state of the application lifecycle management operation occurrence has been changed successfully - headers: {} + '200': + description: 'Shall be returned when the state of the application lifecycle management operation occurrence has been changed successfully. + + + The response shall include a representation of the "Individual application lifecycle management operation occurrence" resource.' content: application/json: schema: - $ref: '#/components/schemas/AppLcmOpOcc' + type: object + properties: + AppLcmOpOcc: + $ref: '#/components/schemas/AppLcmOpOcc' '400': $ref: '#/components/responses/400' '401': @@ -714,28 +704,36 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - parameters: [] - /app_lcm_op_occs/{appLcmOpOccId}/retry: - post: - tags: - - 'app-lcm' - summary: initiate retrying an application lifecycle operation that has experience a temporary failure - description: initiate retrying an application lifecycle operation that has experience a temporary failure - operationId: appLcmRetryPOST parameters: - name: appLcmOpOccId in: path - description: Identifies an individual application LCM operation occurrence required: true - style: simple + description: The unique identifier of the appLcmOpOccId. schema: type: string + /app_lcm_op_occs/{appLcmOpOccId}/retry: + post: + summary: Retry an ongoing individual application LCM operation. + description: "The POST method is used to initiate retrying an application lifecycle operation that has experience a temporary failure, i.e. the related \"application LCM operation occurrence\" is in \"FAILED_TEMP\" state. This method shall comply with the URI request and response data structures, and response codes, as specified in tables\_7.4.13.3.1-1 and 7.4.13.3.1-2." + operationId: ApplcmopoccsRetryPOSTApplcmopoccid + tags: + - app-lcm + requestBody: + description: The POST request message content to this resource shall be empty. . + content: + application/json: {} + required: false responses: '202': - description: The request was accepted for processing, but it is possible that the processing is not yet completed - headers: {} - content: {} + description: 'The request was accepted for processing, but it is possible that the processing is not yet completed. + + + The response message content shall be empty.' + content: + application/json: + schema: + type: object + properties: {} '400': $ref: '#/components/responses/400' '401': @@ -748,667 +746,369 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - parameters: [] - - -## Resources of MEPM's application lifecycle management on Mm3 - /app_instances/{appInstanceId}/configure_platform_for_app: - post: - tags: - - 'app-lcm' - summary: provide configuration information in AppD to the MEPM-V, intended to configure the MEP to run the application instance. - description: provide configuration information in AppD to the MEPM-V, intended to configure the MEP to run the application instance. - operationId: appInstancesConfigPlatformPOST parameters: - - name: appInstanceId + - name: appLcmOpOccId in: path - description: The identifier of the application instance. required: true - style: simple + description: The unique identifier of the appLcmOpOccId. schema: type: string + /app_instances/{appInstanceId}/configure_platform_for_app: + post: + summary: Configures the platform for an application instance. + description: The POST method is to provide configuration information in AppD to the MEPM-V, intended to configure the MEP to run the application instance. + operationId: AppinstancesConfigureplatformforappPOSTAppinstanceid + tags: + - app-lcm requestBody: - description: The message content in the request contains the information necessary to provide configuration information in AppD + description: "The request message content contains the information necessary to provide configuration information in AppD as described in clause\_6.2.2.21." + required: true content: application/json: schema: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/ConfigPlatformForAppRequest' + type: object + properties: + ConfigPlatformForAppRequest: + $ref: '#/components/schemas/ConfigPlatformForAppRequest' responses: '202': - description: The request was accepted for processing, but it is possible that the processing is not yet completed - headers: {} - content: {} + description: 'The request has been accepted for processing, but the processing has not yet been completed. + + + The response message content shall be empty. + + + The HTTP response shall include a "Location" HTTP header that contains the URI of the newly-created "application LCM operation occurrence" resource that corresponds to this application instance configure operation.' + content: + application/json: + schema: + type: object + properties: {} '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - parameters: [] - + parameters: + - name: appInstanceId + in: path + required: true + description: The unique identifier of the appInstanceId. + schema: + type: string components: schemas: - AppLcmOpOcc: - title: AppLcmOpOcc - required: - - id - - operationState - - stateEnteredTime - - startTime - - lcmOperation - - _links + Not_specified: + type: object + ProblemDetails: type: object properties: - id: + type: type: string - description: "'Identifier of the subscription to application LCM operation occurrence notification'" - operationState: - type: object - description: Operation state - $ref: '#/components/schemas/OperationState' - stateEnteredTime: - type: object - description: Date and time when the current state was entered. - $ref: '#/components/schemas/TimeStamp' - startTime: - type: object - description: Date and time of the start of the operation. - $ref: '#/components/schemas/TimeStamp' - lcmOperation: - type: object - description: Date and time of the start of the operation. - $ref: '#/components/schemas/LcmOperation' - operationParams: - type: object - description: Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. See note 2. - $ref: '#/components/schemas/OperationParams' - isCancelPending: - type: boolean - description: If the application LCM operation occurrence operationState is in "PROCESSING" state and the operation is being cancelled, this attribute shall be set to true. Otherwise, it shall be set to false. - cancelMode: - type: object - description: The mode of a cancellation. - $ref: '#/components/schemas/CancelMode' - _links: - type: object - description: Links to resources related to this resource. - $ref: '#/components/schemas/AppInstanceLcmOpOcc.links' - description: | - This data type represents an application lifecycle management operation occurrence - NOTE 1: Void. - NOTE 2: This object contains structured data, and shall comply with the provisions of clause 4 of IETF RFC 8259 - - AppInstanceSubscriptionLinkList: - required: - - _links - properties: - _links: - type: object - description: List of hyperlinks related to the resource. - $ref: '#/components/schemas/AppInstanceSubscriptionLinkList._links' - - AppInstanceSubscriptionLinkList._links: - required: - - self - type: object - properties: - self: - type: string - description: URI referring to a resource - subscriptions: - type: array - description: A link list to the subscriptions. - items: - $ref: '#/components/schemas/AppInstanceSubscriptionLinkList._links.subscriptions' - - AppInstanceSubscriptionLinkList._links.subscriptions: + format: uri + description: A URI reference according to IETF RFC 3986 that identifies the problem type + title: + type: string + description: A short, human-readable summary of the problem type + status: + type: integer + format: uint32 + description: The HTTP status code for this occurrence of the problem + detail: + type: string + description: A human-readable explanation specific to this occurrence of the problem + instance: + type: string + format: uri + description: A URI reference that identifies the specific occurrence of the problem + VirtualMemoryData: type: object required: - - href - - subscriptionType + - virtualMemSize properties: - href: - type: string - format: uri - description: The URI referring to the subscription. - subscriptionType: - type: object - description: Type of the subscription. - $ref: '#/components/schemas/AppInstanceSubscriptionType' - - AppInstanceSubscriptionType: - type: string - description: String representing the type of a subscription. - enum: - - AppInstanceStateChangeSubscription - - AppLcmOpOccStateChangeSubscription - - AppIdentifierCreationSubscription - - AppIdentifierDeletionSubscription + virtualMemSize: + type: number + description: Amount of virtual memory in MB. + virtualMemOversubscriptionPolicy: + type: string + description: 'The memory core oversubscription policy in terms of virtual memory to physical memory - OperationParams: - oneOf: - - $ref: '#/components/schemas/InstantiateAppRequest' - - $ref: '#/components/schemas/OperateAppRequest' - - $ref: '#/components/schemas/TerminateAppRequest' + on the platform. The cardinality can be 0 during the allocation request, if no particular - CancelMode: - description: Indicates the intervention action to be taken. GRACEFUL Indicates ongoing resource management operations in the underlying system are allowed to complete execution or time out. FORCED Indicates ongoing resource management operations in the underlying system are to be cancelled without allowing them to complete execution or time out. - type: string - enum: - - GRACEFUL - - FORCED + value is requested. - AppInstIdCreationSubscriptionRequest: + ' + vduMemRequirements: + type: array + items: + $ref: '#/components/schemas/KeyValuePairs' + description: Array of key-value pair requirements on the memory for the VDU. + numaEnabled: + type: boolean + description: Specifies the memory allocation to be cognisant of the relevant process/core allocation. + hugePagesRequirements: + type: string + description: Specifies requirements on the huge pages resources for the virtual memory. + BlockStorageData: type: object required: - - subscriptionType - - callbackUri + - sizeOfStorage properties: - subscriptionType: - type: string - description: Shall be set to "AppIdentifierCreationSubscription". - callbackUri: - type: string - description: The URI of the endpoint for the subscription related notification to be sent to. - format: uri - appInstanceSubscriptionFilter: + sizeOfStorage: + type: number + description: Size of virtualised storage resource in GB. + vduStorageRequirements: + type: array + items: + $ref: '#/components/schemas/KeyValuePairs' + description: An array of key-value pairs that articulate the storage deployment requirements. + rdmaEnabled: + type: boolean + description: Indicate if the storage support RDMA. + swImageDesc: type: object - description: Criteria used to filter application instances for which to send notifications related to this subscription. See note. - $ref: '#/components/schemas/AppInstanceSubscriptionFilter' - description: | - NOTE: If present, the value of attribute "appInstSelectorType" in appInstanceSubscriptionFilter can only be set as "APP_D_ID" or "APP_FROM_PROVIDER". + $ref: '#/components/schemas/SwImageDesc' + description: 'References the software image to be loaded on the VirtualStorage resource created - AppInstIdDeletionSubscriptionRequest: + based on this VirtualStorageDesc. Shall be absent when used for virtual disks. See note + + ' + VirtualCpuData: type: object required: - - subscriptionType - - callbackUri + - numVirtualCpu properties: - subscriptionType: + cpuArchitecture: type: string - description: Shall be set to "AppIdentifierDeletionSubscription". - callbackUri: + description: CPU architecture type. Examples are x86, ARM. + numVirtualCpu: + type: integer + description: Number of virtual CPUs. + virtualCpuClock: + type: number + description: Minimum virtual CPU clock rate (e.g. in MHz). + virtualCpuOversubscriptionPolicy: type: string - format: uri - description: The URI of the endpoint for the subscription related notification to be sent to. - appInstanceSubscriptionFilter: - type: object - description: Criteria used to filter application instances for which to send notifications related to this subscription. - $ref: '#/components/schemas/AppInstanceSubscriptionFilter' - - AppInstIdCreationSubscriptionInfo: + description: The CPU core oversubscription policy, e.g. the relation of virtual CPU cores to physical CPU cores/threads. + vduCpuRequirements: + type: array + items: + $ref: '#/components/schemas/KeyValuePairs' + description: Array of key-value pair requirements on the Compute (CPU) for the VDU. + virtualCpuPinning: + $ref: '#/components/schemas/VirtualCpuPinningData' + RequestedAdditionalCapabilityData: type: object required: - - id - - subscriptionType - - callbackUri - - _links + - requestedAdditionalCapabilityName + - supportMandatory + - targetPerformanceParameters properties: - id: + requestedAdditionalCapabilityName: type: string - description: Identifier of the subscription to application instance operational state change notification. - subscriptionType: + description: Specifies a requested additional capability for the VDU + supportMandatory: + type: boolean + description: Indicates whether the requested additional capability is mandatory for successful operation + minRequestedAdditionalCapabilityVersion: type: string - description: Shall be set to "AppIdentifierCreationSubscription". - callbackUri: + description: Specifies the minimum version of the requested additional capability + preferredRequestedAdditionalCapabilityVersion: type: string - format: uri - description: The URI of the endpoint for the subscription related notification to be sent to. - appInstanceSubscriptionFilter: - type: object - description: Criteria used to select application instances on which to send notifications related to this subscription. - $ref: '#/components/schemas/AppInstanceSubscriptionFilter' - _links: - 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' - - AppInstIdDeletionSubscriptionInfo: + description: Specifies the preferred version of the requested additional capability + targetPerformanceParameters: + type: array + description: Specifies specific attributes, dependent on the requested additional capability type. + items: + $ref: '#/components/schemas/KeyValuePairs' + VirtualStorageDescriptor: type: object required: - - id - - subscriptionType - - callbackUri - - _links + - id + - typeOfStorage properties: id: type: string - description: Identifier of the subscription to application instance operational state change notification. - subscriptionType: - type: string - description: Shall be set to "AppIdentifierDeletionSubscription". - callbackUri: + description: Unique identifier of this VirtualStorageDesc in the VNFD. + typeOfStorage: type: string - format: uri - description: The URI of the endpoint for the subscription related notification to be sent to. - appInstanceSubscriptionFilter: - $ref: '#/components/schemas/AppInstanceSubscriptionFilter' - _links: - 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: + description: Type of virtualised storage resource. + enum: + - BLOCK + - OBJECT + - FILE + blockStorageData: type: object - description: URI of this resource. - $ref: '#/components/schemas/LinkType' - appInstance: + $ref: '#/components/schemas/BlockStorageData' + description: Details of block storage. + objectStorageData: 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: + $ref: '#/components/schemas/ObjectStorageData' + description: Details of object storage. + fileStorageData: 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: + $ref: '#/components/schemas/FileStorageData' + description: Details of file storage. + nfviMaintenanceInfo: type: object - $ref: '#/components/schemas/AppLcmOpOccSubscriptionInfo.links' - description: "'This data type represents a subscription to notifications of application life cycle management operation occurrence'" - - AppLcmOpOccSubscriptionInfo.links: - title: AppLcmOpOccSubscriptionInfo.links - required: - - self + $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. + FileStorageData: type: object - properties: - self: - type: object - description: URI of this resource. - $ref: '#/components/schemas/LinkType' - description: Links to resources related to this resource. - - AppInstSubscriptionInfo: - title: AppInstSubscriptionInfo required: - - id - - subscriptionType - - callbackUri - - _links - type: object + - sizeOfStorage + - fileSystemProtocol + - intVirtualLinkDesc properties: - id: - type: string - description: "'Identifier of the subscription to application instance operational state change notification.'" - subscriptionType: - const: AppInstanceStateChange - type: string - description: Shall be set to "AppInstanceStateChangeSubscription". - examples: - - 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' - callbackUri: + sizeOfStorage: + type: number + description: Size of virtualised storage resource in GB. + fileSystemProtocol: type: string - description: The URI of the endpoint for the subscription related notification to be sent to. - _links: + description: The shared file system protocol (e.g. NFS, CIFS). + intVirtualLinkDesc: type: object - $ref: '#/components/schemas/AppInstSubscriptionInfo.links' - description: "'The data type represents a subscription to notification of application instance operational state change.'" - - AppInstSubscriptionInfo.links: - title: AppInstSubscriptionInfo.links - required: - - self + $ref: '#/components/schemas/VnfVirtualLinkDesc' + description: Reference of the internal VLD which this file storage connects to. + VnfVirtualLinkDesc: type: object + required: + - virtualLinkDescId + - virtualLinkDescFlavour + - connectivityType properties: - self: - type: object - description: URI of this resource. - $ref: '#/components/schemas/LinkType' - description: Links to resources related to this resource. - - AppLcmOpOccSubscriptionRequest: - title: AppLcmOpOccSubscriptionRequest - required: - - callbackUri - - subscriptionType - type: object - properties: - appLcmOpOccSubscriptionFilter: - type: object - description: Subscription filter criteria to match specific application LCM operation occurrences. - $ref: '#/components/schemas/AppLcmOpOccSubscriptionFilter' - callbackUri: - type: string - description: The URI of the endpoint for the subscription related notification to be sent to. - subscriptionType: - type: string - description: Shall be set to "AppLcmOpOccStateChangeSubscription". - - AppLcmOpOccSubscriptionFilter: - title: AppLcmOpOccSubscriptionFilter - type: object - 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. - $ref: '#/components/schemas/AppInstanceSubscriptionFilter' - notificationTypes: + virtualLinkDescId: type: string - description: Match particular notification types. Permitted values AppLcmOpOccNotification. - $ref: '#/components/schemas/NotificationTypes' - operationStates: - type: array - description: Type of the LCM operation state represented by this application instance LCM operation occurrence. - items: - $ref: '#/components/schemas/OperationState' - operationTypes: + description: Unique identifier of this internal VLD in VNFD. + virtualLinkDescFlavour: type: array - description: Type of the LCM operation represented by this application instance LCM operation occurrence. + description: Describes a specific flavour of the VL with specific bitrate requirements. items: - $ref: '#/components/schemas/OperationTypes' - - NotificationTypes: - title: NotificationTypes - const: AppLcmOperationOccurrenceNotification - type: string - description: Match particular notification types. - examples: - - AppLcmOperationOccurrenceNotification - - OperationTypes: - title: OperationTypes - 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 - - CreateAppInstanceRequest: - title: CreateAppInstanceRequest - required: - - appDId - type: object - 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. - appInstanceDescription: - type: string - description: Human-readable description of the application instance to be created. - 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. - - AppInstSubscriptionRequest: - title: AppInstSubscriptionRequest - required: - - subscriptionType - - callbackUri - type: object - properties: - subscriptionType: - const: AppInstanceStateChange - type: string - description: Shall be set to "AppInstanceStateChangeSubscription". - examples: - - AppInstanceStateChange - callbackUri: - type: string - description: The URI of the endpoint for the notification to be sent to. - appInstanceState: - type: object - $ref: '#/components/schemas/AppInstanceState' - appInstanceSubscriptionFilter: - type: object - description: Criteria used to filter application instances for which to send notifications related to this subscription. - $ref: '#/components/schemas/AppInstanceSubscriptionFilter' - - AppInstanceSubscriptionFilter: - title: AppInstanceSubscriptionFilter - required: - - appInstSelectorType - type: object - properties: - appInstSelectorType: + $ref: '#/components/schemas/VirtualLinkDescFlavour' + connectivityType: type: object - $ref: '#/components/schemas/AppInstSelectorType' - appInstances: + description: See clause 7.1.7.3. + $ref: '#/components/schemas/ConnectivityType' + testAccess: type: array + description: Specifies test access facilities expected on the VL. 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. - appsFromProviders: - type: array - items: - $ref: '#/components/schemas/AppsFromProviders' - description: "'This data type represents subscription filter criteria to match application instances. '" - - AppsFromProviders: - title: AppsFromProviders - required: - - appProvider - type: object - properties: - appProvider: + example: passive monitoring + description: type: string - description: Provider of the application and of the AppD. - appProducts: + description: Provides human-readable information on the purpose of the VL. + example: control plane traffic + monitoringParameter: type: array - description: If present, match application instances that belong to application products with certain product names, from one particular provider. + description: Specifies the virtualised resource related performance metrics on VLD level to be tracked by the VNFM. 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.'" - - AppProducts: - title: AppProducts - required: - - appName - type: object - properties: - appName: + $ref: '#/components/schemas/MonitoringParameter' + nfviMaintenanceInfo: + type: object + description: When present, provides information on the rules to be observed when an instance based on this VnfVirtualLinkDesc is impacted during NFVI operation and maintenance (e.g. NFVI resource upgrades). NfviMaintenanceInfo is defined in clause 7.1.8.17. + $ref: '#/components/schemas/NfviMaintenanceInfo' + externallyManaged: type: string - description: Name to identify the MEC application. - 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.'" - - AppProducts.Versions: - title: AppProducts.Versions - required: - - appSoftVersion + description: Specifies the intent of the VNF designer with respect to the internal VL instances created from this descriptor being externally managed. + enum: + - REQUIRED + - ALLOWED + default: ALLOWED + ConnectivityType: type: object + required: + - layerProtocol properties: - appSoftVersion: - type: string - description: Identifies the version of software of the MEC application. - appDVersion: + layerProtocol: type: array + description: 'Specifies the protocols that the VL uses See note 1 and note 2. + + ' 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.'" - - AppInstSelectorType: - title: AppInstSelectorType - enum: - - VOID - - APP_IDENTITY - - APP_NAME - - APP_D_ID - - APP_FROM_PROVIDER - type: string - description: 0 = void - examples: - - VOID - - AppInstanceState: - title: AppInstanceState - 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 - - AppInstNotification: - title: AppInstNotification + enum: + - Ethernet + - MPLS + - ODU2 + - IPV4 + - IPV6 + - Pseudo-Wire + - Etc + minItems: 1 + flowPattern: + type: string + description: Specifies the flow pattern of the connectivity (Line, Tree, Mesh, etc.). + description: "NOTE 1 The top layer protocol of the VL protocol stack shall always be provided. The lower layer protocols may be included when there are specific requirements on these layers. \nNOTE 2 If more than 1 values are present, the first value represents the highest layer protocol data, and the last value represents the lowest layer protocol data. \n" + QoS: + type: object required: - - _links - - appDId - - appInstanceId - - appInstanceState - - appPkgId - - id - - notificationType - - subscriptionId - - timeStamp + - latency + - packetDelayVariation + properties: + latency: + type: number + description: Latency of the VL in milliseconds. + packetDelayVariation: + type: number + description: Packet delay variation of the VL in milliseconds. + packetLossRatio: + type: number + description: Packet loss ratio of the VL in percentage. + VirtualLinkDescFlavour: type: object + required: + - flavourId properties: - _links: - type: object - $ref: '#/components/schemas/Links' - appDId: - type: string - description: The application descriptor identifier identifies the application package and the application descriptor in a globally unique way. - appInstanceId: - type: string - description: Identifier of application instance. - appPkgId: - type: string - description: Identifier of the onboarded application package. - 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 "AppInstanceStateChangeSubscription" for this notification type. - subscriptionId: + flavourId: type: string - description: Identifier of the subscription related to this notification. - timeStamp: + description: Identifies a flavour within a VnfVirtualLinkDesc. + qos: type: object - description: Date and time of the notification generation. - $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: + $ref: '#/components/schemas/QoS' + description: QoS of the VL. + Version: type: object required: - - countryCode + - srcVnfdId + - dstVnfdId + - srcFlavourId properties: - countryCode: + srcVnfdId: 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: + description: Identifier of the source VNFD and the source VNF package. See note 1. + dstVnfdId: 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. - + description: Identifier of the destination VNFD and the destination VNF package. See note 1. + srcFlavourId: + type: string + description: Identifier of the deployment flavour in the source VNF package for which this modification applies. See note 2. + description: "NOTE 1: Either the srcVnfdId or the dstVnfdId shall be equal to the vnfdId of the VNFD containing this version selector. \nNOTE 2: It is up to protocol design stage to decide whether there is further optimization potential to apply one modification for multiple srcFlavourIds.\n" + AppInstanceSubscriptionType: + type: string + enum: + - AppInstanceStateChangeSubscription + - AppLcmOpOccStateChangeSubscription + - AppIdentifierCreationSubscription + - AppIdentifierDeletionSubscription + description: String representing the type of a subscription. McioInfo: type: object required: - - mcioId - - mcioName - - mcioNamespace - - vduId - - cismId - - mcioType - - desiredInstances - - availableInstances + - mcioId + - mcioName + - mcioNamespace + - vduId + - cismId + - mcioType + - desiredInstances + - availableInstances properties: mcioId: type: string @@ -1418,467 +1118,372 @@ components: description: Human readable name of this MCIO. mcioNamespace: type: string - description: Namespace of this MCIO + description: Namespace of this MCIO vduId: type: string - description: Reference to the applicable Vdu information element in the VNFD. + 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. + description: The type of MCIO. See note 1. desiredInstances: type: integer description: Number of desired MCIO instances. availableInstances: type: integer - description: Number of available MCIO instances + 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: + description: "NOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from the CISM.\nEXAMPLE: In case of MCIOs managed by Kubernetes\xAE, the type of MCIO corresponds to the \"kind\" property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and desired state of the MCIO(s)\n" + CommunicationInterface: type: object - required: - - civicAddressElement properties: - civicAddressElement: + ipAddresses: 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. + description: Entry point information of the service as one or more pairs of IP address and port. items: - $ref: '#/components/schemas/CivicAddressElement' - - AppInstanceInfo: - title: AppInstanceInfo - required: - - id - - appDId - - appProvider - - appName - - appSoftVersion - - appDVersion - - appPkgId - - instantiationState - - _links + $ref: '#/components/schemas/ipAddresses' + OsContainerDescriptor: + title: OsContainerDescriptor type: object + required: + - osContainerDescId + - name + - description + - swImageDesc properties: - id: - type: string - description: Identifier of application instance. - appInstanceName: - type: string - description: Name of the application instance. - appInstanceDescription: - type: string - description: Human-readable description of the application instance to be created. - appDId: - type: string - description: Identifier of this MEC application descriptor. This attribute shall be globally unique. - 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: - 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. - items: - $ref: '#/components/schemas/CommunicationInterface' - appName: - type: string - description: Name to identify the MEC application. - appSoftVersion: + osContainerDescId: type: string - description: Identifies the version of software of the MEC application. - appDVersion: + description: Unique identifier of this OsContainerDesc in the VNFD. + name: type: string - description: Identifies the version of the application descriptor. - appPkgId: + description: Human readable name of this OS container. + description: type: string - description: Identifier of the onboarded application package. - vimConnectionInfo: + description: Human readable description of this OS container. + requestedCpuResources: + type: integer + description: Number of CPU resources requested for the container (e.g. in milli-CPU-s). + requestedMemoryResources: + type: number + description: Amount of memory resources requested for the container (e.g. in MB). + requestedEphemeralStorageResources: + type: number + description: Size of ephemeral storage resources requested for the container (e.g. in GB). + extendedResourceRequests: 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. - 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. - - OperationState: - title: OperationState - enum: - - STARTING - - PROCESSING - - COMPLETED - - FAILED - - FAILED_TEMP - type: string - description: Operation state - examples: - - STARTING - - InstantiationState: - title: InstantiationState - enum: - - NOT_INSTANTIATED - - INSTANTIATED - type: string - description: Instantiation state of the application instance - examples: - - NOT_INSTANTIATED - - InstantiatedAppState: - title: InstantiatedAppState - required: - - operationalState - type: object - properties: - operationalState: - $ref: '#/components/schemas/OperationalState' - appInstLocation: + $ref: '#/components/schemas/KeyValuePairs' + description: An array of key-value pairs of extended resources required by the container see note. + cpuResourceLimit: + type: integer + description: Number of CPU resources the container can maximally use (e.g. in milli-CPU). + memoryResourceLimit: + type: number + description: Amount of memory resources the container can maximally use (e.g. in MB). + ephemeralStorageResourceLimit: + type: number + description: Size of ephemeral storage resources the container can maximally use (e.g. in GB). + hugePageResources: type: object - description: Location of the MEC application instance. See note 5 and note 6. - $ref: '#/components/schemas/LocationInformation' - mcioInfo: + description: Specifies HugePages resources requested for the container, which the container can maximally use. + additionalProperties: + type: string + cpuPinningRequirements: + type: object + $ref: '#/components/schemas/VirtualCpuPinningData' + description: Requirements for CPU pinning configuration for this OS container. + swImageDesc: + type: object + $ref: '#/components/schemas/SwImageDesc' + description: Describes the software image realizing this OS container. + bootData: + type: string + description: Contains a string or a URL to a file contained in the VNF package used to customize a container resource at boot time. The bootData may contain variable parts that are replaced by deployment specific values before being sent. + monitoringParameters: 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.'" - - OperationalState: - title: OperationalState - enum: - - STARTED - - STOPPED - type: string - description: Operational state is applicable in the instantiation state INSTANTIATED - examples: - - STARTED - - AppInstanceInfo.links: - title: AppInstanceInfo.links - required: - - self + $ref: '#/components/schemas/MonitoringParameter' + description: Specifies the virtualized resource related performance metrics on the OsContainerDesc level to be tracked by the VNFM. + KeyValuePairs: + type: object + additionalProperties: + type: object + ObjectStorageData: type: object properties: - self: - type: object - description: Self referring URI. - $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. - $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). - $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 - $ref: '#/components/schemas/LinkType' - description: Links to resources related to this resource. - - LcmOperation: - title: LcmOperation - enum: - - INSTATIATE - - OPERATE - - TERMINATE - type: string - description: Type of the actual LCM operation represented by this application instance LCM operation occurrence - examples: - - INSTATIATE - - AppLcmOpOccNotification: - title: AppLcmOpOccNotification - required: - - id - - notificationType - - operationType - - operationState - - subscriptionId - - timeStamp - - appLcmOpOccId - - appInstanceId - - _links + maxSizeOfStorage: + type: number + description: Maximum size of virtualized storage resource in GB. + VirtualCpuPinningData: 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 "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: + virtualCpuPinningPolicy: type: string - description: Operation state. + description: Indicates the policy for CPU pinning. enum: - - STARTING - - PROCESSING - - COMPLETED - - FAILED - - FAILED_TEMP - subscriptionId: - type: string - description: Identifier of the subscription related to this notification. - timeStamp: - type: object - description: Date and time of the notification generation. - $ref: '#/components/schemas/TimeStamp' - appLcmOpOccId: - type: string - description: Identifier of application lifecycle management operation occurrence. - appInstanceId: - type: string - description: Identifier of application instance. - _links: - type: object - $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 + - STATIC + - DYNAMIC + virtualCpuPinningRule: + type: array + items: + type: string + description: List of rules that should be considered during the allocation of the virtual CPUs to logical CPUs in case of "STATIC" virtualCpuPinningPolicy. + SwImageDesc: type: object + required: + - id + - name + - version + - containerFormat + - swImage 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: + description: The identifier of this software image. + name: type: string - description: Discriminator for the different notification types. Shall be set to "AppIdentifierCreationSubscription" for this notification type. - subscriptionId: + description: The name of this software image. + version: type: string - description: Identifier of the subscription related to this notification. - timeStamp: - type: object - description: Date and time of the notification generation. - $ref: '#/components/schemas/TimeStamp' - appInstanceId: + description: The version of this software image. + checksum: + $ref: '#/components/schemas/ChecksumData' + description: The checksum of the software image file. See note 3. + containerFormat: type: string - description: The created application instance Identifier. - _links: + description: The container format describes the container file format in which software image is provided. + diskFormat: + type: string + description: The disk format of a software image is the format of the underlying disk image. See note 1. + minDisk: + type: number + description: The minimal disk size requirement for this software image. The value of the "size of storage" attribute of the VirtualStorageDesc referencing this SwImageDesc shall not be smaller than the value of minDisk. See note 1. + minRam: + type: number + description: The minimal RAM requirement for this software image. The value of the "size" attribute of VirtualMemoryData of the Vdu referencing this SwImageDesc shall not be smaller than the value of minRam. See note 2. + size: + type: number + description: The size of this software image file. See note 3. + swImage: type: object - description: Links to resources related to this notification. - $ref: '#/components/schemas/Notification._links' - - Notification._links: + $ref: '#/components/schemas/SwImageDesc' + description: This is a reference to the actual software image. The reference can be relative to the root of the VNF Package or can be a URL. + operatingSystem: + type: string + description: Specifies the operating system used in the software image. This attribute may also identify if a 32 bit or 64 bit software image is used. + supportedVirtualisationEnvironment: + type: array + items: + type: string + description: Specifies the virtualisation environments (e.g. hypervisor) compatible with this software image. + description: "NOTE 1: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise.\nNOTE 2: The attribute may be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise.\nNOTE 3: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and may be present otherwise. \n" + MonitoringParameter: 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 + - monitoringParameterId + - performanceMetric properties: - id: + monitoringParameterId: 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: + description: Unique identifier of the monitoring parameter. + name: type: string - description: Discriminator for the different notification types. Shall be set to "AppIdentifierDeletionSubscription" for this notification type. - subscriptionId: + description: Human readable name of the monitoring parameter. + performanceMetric: type: string - description: Identifier of the subscription related to this notification. - timeStamp: - type: object - description: Date and time of the notification generation. - $ref: '#/components/schemas/TimeStamp' - appInstanceId: + description: Specifies the virtualised resource performance metric. + collectionPeriod: type: string - description: The deleted application instance Identifier. - _links: - type: object - description: Links to resources related to this notification. - $ref: '#/components/schemas/Notification._links' - - AppLcmOpOccNotification.links: - title: AppLcmOpOccNotification.links - required: - - appInstance - - subscription - - appLcmOpOcc + description: An attribute that describes the periodicity at which to collect the performance information. + VirtualComputeDescriptor: + title: VirtualComputeDescriptor type: object - properties: - appInstance: - type: object - $ref: '#/components/schemas/LinkType' - subscription: - type: object - $ref: '#/components/schemas/LinkType' - appLcmOpOcc: - type: object - $ref: '#/components/schemas/LinkType' - description: Links to resources related to this resource. - - InstantiateAppRequest: - title: InstantiateAppRequest required: - - selectedMECHostInfo - type: object + - virtualComputeDescId + - virtualMemory + - virtualCpu properties: - locationConstraints: - type: object - description: Defines the location constraints for the application instance to be created. See note 3. - $ref: '#/components/schemas/LocationConstraints' - selectedMECHostInfo: + virtualComputeDescId: + type: string + description: Unique identifier of this VirtualComputeDesc in the VNFD. + logicalNode: type: array + description: The logical node requirements. items: - $ref: '#/components/schemas/MECHostInformation' - description: | - Describes the information of selected host for the application instance. See note 2. - vimConnectionInfo: + $ref: '#/components/schemas/LogicalNodeRequirements' + requestAdditionalCapabilities: type: array + description: Specifies requirements for additional capabilities. These may be for a range of purposes. One example is acceleration related capabilities. See clause 7.1.9.5. 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. - 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: + $ref: '#/components/schemas/RequestedAdditionalCapabilityData' + computeRequirements: + description: Specifies compute requirements. 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. - virtualStorageDescriptor: - type: array - items: - $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: string + format: not-specified + virtualMemory: + type: object + description: The virtual memory of the virtualised compute. See clause 7.1.9.3.2. + $ref: '#/components/schemas/VirtualMemoryData' + virtualCpu: type: object + description: The virtual CPU(s) of the virtualised compute. See clause 7.1.9.2.3. + $ref: '#/components/schemas/VirtualCpuData' + virtualDisk: + type: array + description: The local or ephemeral disk(s) of the virtualised compute. See clause 7.1.9.4.3. 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: + $ref: '#/components/schemas/BlockStorageData' + LogicalNodeRequirements: type: object required: - - terminationOptions + - id + - logicalNodeRequirementDetail properties: - terminationOptions: + id: + type: string + format: uuid + description: Identifies this set of logical node requirements + logicalNodeRequirementDetail: + description: 'The logical node-level compute, memory and I/O requirements. An array of key-value pairs that articulate the deployment requirements. This could include the number of CPU cores on this logical node, a memory configuration specific to a logical node (e.g. such as available in the Linux kernel via the libnuma library) or a requirement related to the association of an I/O device with the logical node. + + ' 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. items: - $ref: '#/components/schemas/AppTermCandsForCoord.terminationOptions' - - VirtualStorageDescriptor: + type: string + format: not-specified + ChecksumData: type: object required: - - id - - typeOfStorage + - algorithm + - hash properties: - id: + algorithm: type: string - description: Unique identifier of this VirtualStorageDesc in the VNFD. - typeOfStorage: + description: Specifies the algorithm used to obtain the checksum value. See note. + hash: 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. + description: 'Contains the result of applying the algorithm indicated by the algorithm attribute to the data to which this ChecksumData refers. + + ' + description: 'NOTE: The algorithm attribute value shall be one of the Hash Function Textual Names present in [2]. + + ' + 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. + Polygon: + type: string + description: 'To specify a constraint specific to Polygons, it is useful to introduce the concept of a linear ring: + + + - A linear ring is a closed LineString with four or more positions. + + - The first and last positions are equivalent, and they MUST contain identical values; their representation SHOULD also be identical. + + - A linear ring is the boundary of a surface or the boundary of a hole in a surface. + + - A linear ring MUST follow the right-hand rule with respect to the area it bounds, i.e., exterior rings are counterclockwise, and holes are clockwise. + + + Note: The [GJ2008] specification did not discuss linear ring winding order. For backward compatibility, parsers SHOULD NOT reject Polygons that do not follow the right-hand rule. + + + Though a linear ring is not explicitly represented as a GeoJSON geometry type, it leads to a canonical formulation of the Polygon geometry type definition as follows: + + + - For type "Polygon", the "coordinates" member MUST be an array of linear ring coordinate arrays. + - For Polygons with more than one of these rings, the first MUST be the exterior ring, and any others MUST be interior rings. The exterior ring bounds the surface, and the interior rings (if present) bound holes within the surface. + + ' + TransportTypes: + x-etsi-ref: 8.1.6.4 + type: string + enum: + - REST_HTTP + - MB_TOPIC_BASED + - MB_ROUTING + - MB_PUBSUB + - RPC + - RPC_STREAMING + - WEBSOCKET + description: The enumeration TransportType represents types of transports. + x-etsi-mec-extensible: true + x-etsi-mec-enumeration-table: + - value: REST_HTTP + description: RESTful API using HTTP (as defined in IETF RFC 9110 [11]). + - value: MB_TOPIC_BASED + description: Topic-based message bus which routes messages to receivers based on subscriptions, if a pattern passed on subscription matches the topic of the message. EXAMPLE MQTT (see [i.4]). + - value: MB_ROUTING + description: Routing-based message bus which routes messages to receivers based on subscriptions, if a key passed on subscription is equal to the key of the message. + - value: MB_PUBSUB + description: Publish-subscribe based message bus which distributes messages to all subscribers. + - value: RPC + description: Remote procedure call. EXAMPLE GRPC (see [i.5]). + - value: RPC_STREAMING + description: Remote procedure call supporting streams of requests and responses. EXAMPLE GRPC (see [i.5]). + - value: WEBSOCKET + description: Websockets as defined in IETF RFC 6455 [12]. + SerializerType: + x-etsi-ref: 8.1.6.3 + type: string + enum: + - JSON + - XML + - PROTOBUF3 + x-etsi-mec-extensible: true + x-etsi-mec-enumeration-table: + - value: JSON + description: Javascript object notation [9] + - value: XML + description: eXtensible Mark-up Language version 1.1 [10] + - value: PROTOBUF3 + description: Protocol buffers version 3 [i.3] + SecurityInfo: + x-etsi-ref: 8.1.5.4 + type: object + properties: + oAuth2Info: + $ref: '#/components/schemas/OAuth2Info' + (extensions): + description: Extensions for alternative transport mechanisms. These extensions depend on the actual transport, and are out of scope of the present document. For instance, such extensions may be used to signal the necessary parameters for the client to use TLS-based authorization defined for alternative transports (see ETSI GS MEC 009 [5] for more information). + OAuth2Info: + description: Parameters related to use of OAuth 2.0. Shall be present in case OAuth 2.0 (see IETF RFC 6749 [13]) is supported to secure the provision of the service over the transport. + type: object + properties: + grantTypes: + description: "List of supported OAuth 2.0 grant types. Each entry shall be one of the following permitted values: \u2022 OAUTH2_AUTHORIZATION_CODE (Authorization code grant type) \u2022 OAUTH2_IMPLICIT_GRANT (Implicit grant type) \u2022 OAUTH2_RESOURCE_OWNER (Resource owner password credentials grant type) \u2022 OAUTH2_CLIENT_CREDENTIALS (Client credentials grant type) Only the value \"OAUTH2_CLIENT_CREDENTIALS\" is supported in the present document." + type: array + minItems: 0 + items: + type: string + enum: + - SEE_DESCRIPTION + tokenEndpoint: + description: The token endpoint. Shall be present unless the grant type is OAUTH2_IMPLICIT_GRANT. + type: string + format: uri + required: + - grantTypes NfviMaintenanceInfo: type: object required: - - impactNotificationLeadTime + - impactNotificationLeadTime properties: impactNotificationLeadTime: type: number @@ -1892,9 +1497,9 @@ components: items: type: string enum: - - NO_MIGRATION - - OFFLINE_MIGRATION - - LIVE_MIGRATION + - 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) @@ -1904,23 +1509,28 @@ components: 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. + 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 + 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 + - maxNumberOfImpactedInstances properties: groupSize: type: integer @@ -1928,37 +1538,11 @@ components: 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. - + 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. \nNOTE 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 \n 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.\n" MinNumberOfPreservedInstances: type: object required: - - minNumberOfPreservedInstances + - minNumberOfPreservedInstances properties: groupSize: type: integer @@ -1966,738 +1550,1636 @@ components: 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: + description: "NOTE 1: Each groupSize value specified for a group of virtual resources shall be unique, and it shall be possible to form \n an ascending ordered list of groupSizes. \nNOTE 2: The number of instances in the group for which the minNumberOfPreservedInstances is specified may be equal \n to groupSize or less.\n" + CategoryRef: + x-etsi-ref: 8.1.5.2 type: object - required: - - sizeOfStorage - - fileSystemProtocol - - intVirtualLinkDesc properties: - sizeOfStorage: - type: number - description: Size of virtualised storage resource in GB. - fileSystemProtocol: + href: + description: Reference of the catalogue. + type: string + id: + description: Unique identifier of the category. + type: string + name: + description: Name of the category. + type: string + version: + description: Name of the category. 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 + - href + - id + - name + - version + ServiceDescriptor: + x-etsi-ref: 6.2.1.7 + type: object properties: - virtualLinkDescId: + serName: + description: The name of the service, for example, RNIS, LocationService, etc. type: string - description: Unique identifier of this internal VLD in VNFD. - virtualLinkDescFlavour: - type: array - description: Describes a specific flavour of the VL with specific bitrate requirements. - items: - $ref: '#/components/schemas/VirtualLinkDescFlavour' - connectivityType: - type: object - description: See clause 7.1.7.3. - $ref: '#/components/schemas/ConnectivityType' - testAccess: + serCategory: + description: A Category reference of the service, defined in ETSI GS MEC 011 [17]. + $ref: '#/components/schemas/CategoryRef' + version: + description: The version of the service. + type: string + transportsSupported: type: array - description: Specifies test access facilities expected on the VL. items: - type: string - example: passive monitoring - description: + $ref: '#/components/schemas/TransportsSupported' + required: + - serName + - version + FeatureDependency: + x-etsi-ref: 6.2.1.8 + type: object + properties: + featureName: + description: The name of the feature, for example, UserApps, UEIdentity, etc. type: string - description: Provides human-readable information on the purpose of the VL. - example: control plane traffic - monitoringParameter: + version: + description: The version of the feature. + type: string + required: + - featureName + - version + TrafficRuleDescriptor: + x-etsi-ref: 6.2.1.9 + type: object + properties: + trafficRuleId: + description: Identifies the traffic rule. + type: string + filterType: + type: string + enum: + - SEE_DESCRIPTION + description: 'Definition of filter type: per FLOW or PACKET + + If it is per FLOW, the filter matches upstream (e.g. UE->EPC) packets and downstream (e.g. EPC->UE) packets are handled by the same context.' + priority: + description: "Priority of this traffic rule within the range 0 to 255. If traffic rule conflicts, the one with higher priority take precedence. See note\_1." + type: integer + trafficFilter: + description: The filter used to identify specific flow/packets that need to be handled by the MEC host. type: array - description: Specifies the virtualised resource related performance metrics on VLD level to be tracked by the VNFM. + minItems: 1 items: - $ref: '#/components/schemas/MonitoringParameter' - nfviMaintenanceInfo: - type: object - description: When present, provides information on the rules to be observed when an instance based on this VnfVirtualLinkDesc is impacted during NFVI operation and maintenance (e.g. NFVI resource upgrades). NfviMaintenanceInfo is defined in clause 7.1.8.17. - $ref: '#/components/schemas/NfviMaintenanceInfo' - externallyManaged: + $ref: '#/components/schemas/TrafficFilter' + action: type: string - description: Specifies the intent of the VNF designer with respect to the internal VL instances created from this descriptor being externally managed. enum: - - REQUIRED - - ALLOWED - default: ALLOWED + - SEE_DESCRIPTION + description: 'Identifies the action of the MEC host data plane, when a packet matches the trafficFilter, the example actions include: - ConnectivityType: - type: object - required: - - layerProtocol - properties: - layerProtocol: - type: array - description: | - Specifies the protocols that the VL uses See note 1 and note 2. - items: - type: string - enum: - - Ethernet - - MPLS - - ODU2 - - IPV4 - - IPV6 - - Pseudo-Wire - - Etc - minItems: 1 - flowPattern: - type: string - description: Specifies the flow pattern of the connectivity (Line, Tree, Mesh, etc.). - description: | - NOTE 1 The top layer protocol of the VL protocol stack shall always be provided. The lower layer protocols may be included when there are specific requirements on these layers. - NOTE 2 If more than 1 values are present, the first value represents the highest layer protocol data, and the last value represents the lowest layer protocol data. + DROP, - VirtualLinkDescFlavour: - type: object - required: - - flavourId - properties: - flavourId: - type: string - description: Identifies a flavour within a VnfVirtualLinkDesc. - qos: - type: object - $ref: '#/components/schemas/QoS' - description: QoS of the VL. + FORWARD_DECAPSULATED, - QoS: - type: object - required: - - latency - - packetDelayVariation - properties: - latency: - type: number - description: Latency of the VL in milliseconds. - packetDelayVariation: - type: number - description: Packet delay variation of the VL in milliseconds. - packetLossRatio: - type: number - description: Packet loss ratio of the VL in percentage. + FORWARD_ENCAPSULATED, - ObjectStorageData: - type: object - properties: - maxSizeOfStorage: - type: number - description: Max size of virtualised storage resource in GB. + PASSTHROUGH, - AppTermCandsForCoord.terminationOptions: - type: object + DUPLICATE_DECAPSULATED, + + DUPLICATE_ENCAPSULATED ' + dstInterface: + description: Describes the destination interface information. If the action is FORWARD_DECAPSULATED, FORWARD_ENCAPSULATED or PASSTHROUGH, one value shall be provided. If the action is DUPLICATE_DECAPSULATED or DUPLICATE_ENCAPSULATED, two values shall be provided. See note 2. If the action is DROP, no value shall be provided. + $ref: '#/components/schemas/InterfaceDescriptor' required: - - appInstIdTerminationCands + - trafficRuleId + - filterType + - priority + - trafficFilter + - action + description: "|-\n NOTE 1:\tValue indicates the priority in descending order, i.e. with 0 as the highest priority and 255 as the lowest priority.\nNOTE 2:\tSome applications (like inline/tap) require two interfaces. The first interface in the case of inline/tap is on the client (e.g. UE) side and the second on the core network (e.g. EPC) side." + TrafficFilter: + x-etsi-ref: 6.2.1.10 + type: object properties: - appInstIdTerminationCands: + srcAddress: + description: 'An IP address or a range of IP addresses. + + For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses. + + For IPv6, the IP address could be an IP prefix, or a range of IP prefixes.' type: array - description: List of application instance identifiers, constituting a candidate set for termination. + minItems: 0 items: type: string + dstAddress: + description: 'An IP address or a range of IP addresses. - LinkType: - title: LinkType - required: - - href - type: object - properties: - href: - type: string - description: URI referring to a resource + For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses. - OsContainerDescriptor: - title: OsContainerDescriptor - type: object - required: - - osContainerDescId - - name - - description - - swImageDesc - properties: - osContainerDescId: - type: string - description: Unique identifier of this OsContainerDesc in the VNFD. - name: - type: string - description: Human readable name of this OS container. - description: - type: string - description: Human readable description of this OS container. - requestedCpuResources: - type: integer - description: Number of CPU resources requested for the container (e.g. in milli-CPU-s). - requestedMemoryResources: - type: number - description: Amount of memory resources requested for the container (e.g. in MB). - requestedEphemeralStorageResources: - type: number - description: Size of ephemeral storage resources requested for the container (e.g. in GB). - extendedResourceRequests: + For IPv6, the IP address could be an IP prefix, or a range of IP prefixes.' type: array + minItems: 0 items: - $ref: '#/components/schemas/KeyValuePairs' - description: An array of key-value pairs of extended resources required by the container see note. - cpuResourceLimit: - type: integer - description: Number of CPU resources the container can maximally use (e.g. in milli-CPU). - memoryResourceLimit: - type: number - description: Amount of memory resources the container can maximally use (e.g. in MB). - ephemeralStorageResourceLimit: - type: number - description: Size of ephemeral storage resources the container can maximally use (e.g. in GB). - hugePageResources: - type: object - description: Specifies HugePages resources requested for the container, which the container can maximally use. - additionalProperties: type: string - cpuPinningRequirements: + srcPort: + description: A port or a range of ports. + type: array + minItems: 0 + items: + type: string + dstPort: + description: A port or a range of ports. + type: array + minItems: 0 + items: + type: string + protocol: + description: Specify the protocol of the traffic filter. + type: array + minItems: 0 + items: + type: string + tag: + description: Used for tag based traffic rule. + type: array + minItems: 0 + items: + type: string + uri: + description: An URI label, in application layer, i.e. in HTTP message, is used to filter the traffic. + type: array + minItems: 0 + items: + type: string + packetLabel: + description: A customized packet label in network layer, as defined by the owner of the MEC platform, is used to filter the traffic. + type: array + minItems: 0 + items: + type: string + srcTunnelAddress: + description: Used for GTP tunnel based traffic rule. + type: array + minItems: 0 + items: + type: string + tgtTunnelAddress: + description: Used for GTP tunnel based traffic rule. + type: array + minItems: 0 + items: + type: string + srcTunnelPort: + description: Used for GTP tunnel based traffic rule. + type: array + minItems: 0 + items: + type: string + dstTunnelPort: + description: Used for GTP tunnel based traffic rule. + type: array + minItems: 0 + items: + type: string + qCI: + description: Used to match all packets that have the same QCI. + type: integer + dSCP: + description: Used to match all IPv4 packets that have the same DSCP. + type: integer + tC: + description: Used to match all IPv6 packets that have the same TC. + type: integer + InterfaceDescriptor: + x-etsi-ref: 6.2.1.11 + type: object + properties: + interfaceType: + type: string + enum: + - SEE_DESCRIPTION + description: 'Type of interface: TUNNEL, MAC, IP, etc.' + tunnelInfo: + description: Included only if the destination address type is tunnel. + $ref: '#/components/schemas/TunnelInfo' + srcMACAddress: + description: If the interface type is MAC, the source address identifies the MAC address of the interface. + type: string + dstMACAddress: + description: If the interface type is MAC, the destination address identifies the MAC address of the destination. Only used for dstInterface. + type: string + dstIPAddress: + description: If the interface type is IP, the destination address identifies the IP address of the destination. Only used for dstInterface. + type: string + required: + - interfaceType + TunnelInfo: + x-etsi-ref: 6.2.1.12 + type: object + properties: + tunnelType: + type: string + enum: + - SEE_DESCRIPTION + description: 'Type of tunnel: GTP-U, GRE, etc.' + tunnelDstAddress: + description: Destination address of the tunnel. + type: string + tunnelSrcAddress: + description: Source address of the tunnel. + type: string + tunnelSpecificData: + description: Parameters specific to the tunnel. type: object - $ref: '#/components/schemas/VirtualCpuPinningData' - description: Requirements for CPU pinning configuration for this OS container. - swImageDesc: + required: + - tunnelType + - tunnelDstAddress + - tunnelSrcAddress + DNSRuleDescriptor: + x-etsi-ref: 6.2.1.13 + type: object + properties: + dnsRuleId: + description: Identifies the DNS Rule + type: string + domainName: + description: FQDN of the DNS rule + type: string + ipAddressType: + type: string + enum: + - IP_V4 + description: 'Specifies the IP address type, value: IP_V6, IP_V4' + ipAddress: + description: IP address given by the DNS rule + type: string + ttl: + description: Time-to-live value + type: integer + required: + - dnsRuleId + - domainName + - ipAddressType + - ipAddress + LatencyDescriptor: + x-etsi-ref: 6.2.1.14 + type: object + properties: + maxLatency: + description: The value of the maximum latency in nano seconds tolerated by the MEC application. See note. + type: integer + format: uint32 + required: + - maxLatency + description: "|-\n NOTE:\tThe latency is considered to be the one way end-to-end latency between the client application (e.g. in a device) and the service (i.e. the MEC application instance)." + ServiceDependency: + x-etsi-ref: 6.2.1.17 + type: object + properties: + serName: + description: The name of the service, for example, RNIS, LocationService, AMS, etc. + type: string + serCategory: + description: A Category reference of the service. + $ref: '#/components/schemas/CategoryRef' + version: + description: The version of the service. + type: string + serTransportDependencies: + description: Indicates transport and serialization format dependencies of consuming the service. Defaults to REST + JSON if absent. See note. + type: array + minItems: 0 + items: + $ref: '#/components/schemas/TransportDependency' + requestedPermissions: + description: 'Requested permissions regarding the access of the application to the service. See clause 7.2 of ETSI GS MEC 009 [4]. + + The format of this attribute is left for the data model design stage.' + type: array + minItems: 0 + items: + $ref: '#/components/schemas/Not_specified' + required: + - serName + - version + description: "|-\n NOTE:\tThis attribute indicates groups of transport bindings that a service-consuming MEC application supports for the consumption of the MEC service defined by this ServiceDependency structure. If at least one of the indicated groups is supported by the service it may be consumed by the application." + TransportDependency: + x-etsi-ref: 6.2.1.18 + type: object + properties: + transport: + description: Information about the transport in this transport binding. + $ref: '#/components/schemas/TransportDescriptor' + serializers: + description: Information about the serializers in this transport binding, as defined in the SerializerType type in ETSI GS MEC 011 [17]. Support for at least one of the entries is required in conjunction with the transport. + type: array + minItems: 1 + items: + $ref: '#/components/schemas/SerializerType' + labels: + description: Set of labels that allow to define groups of transport bindings. The mechanism of the grouping is defined below this table. + type: array + minItems: 1 + items: + type: string + required: + - transport + - serializers + - labels + TransportDescriptor: + x-etsi-ref: 6.2.1.19 + type: object + properties: + name: + description: The name of this transport. + type: string + description: + description: Human-readable description of this transport. + type: string + type: + description: Type of the transport, as defined in the TransportTypes type in ETSI GS MEC 011 [17]. + $ref: '#/components/schemas/TransportTypes' + protocol: + description: The name of the protocol used. Shall be set to "HTTP" for a REST API. + type: string + version: + description: The version of the protocol used. + type: string + security: + description: Information about the security used by the transport in ETSI GS MEC 011 [17]. + $ref: '#/components/schemas/SecurityInfo' + implSpecificInfo: + description: Additional implementation specific details of the transport. type: object - $ref: '#/components/schemas/SwImageDesc' - description: Describes the software image realizing this OS container. - bootData: + required: + - name + - type + - protocol + - version + - security + UserContextTransferCapability: + x-etsi-ref: 6.2.1.20 + type: object + properties: + statefulApplication: + description: 'If the application is stateful, this attribute shall be set to true. + + Otherwise, this attribute shall be set to false. ' + type: boolean + userContextTransferSupport: + description: 'This attribute shall be present if the application is stateful and shall be absent otherwise. + + + If the application supports the user context transfer, this attribute shall be set to true. + + Otherwise this attribute shall be set to false.' + type: boolean + required: + - statefulApplication + AppNetworkPolicy: + x-etsi-ref: 6.2.1.21 + type: object + properties: + steeredNetwork: + $ref: '#/components/schemas/SteeredNetwork' + required: + - steeredNetwork + description: "|-\n NOTE:\tThe network types may depend on the availability of deployed access networks of MEC system." + LocationConstraints: + x-etsi-ref: 6.2.2.2 + type: object + properties: + countryCode: + description: The two-letter ISO 3166 [3] country code in capital letters. Shall be present in the case that "area" attribute is absent. May be present if the "area" attribute is present. See note. type: string - description: Contains a string or a URL to a file contained in the VNF package used to customize a container resource at boot time. The bootData may contain variable parts that are replaced by deployment specific values before being sent. - monitoringParameters: + civicAddressElement: type: array items: - $ref: '#/components/schemas/MonitoringParameter' - description: Specifies the virtualized resource related performance metrics on the OsContainerDesc level to be tracked by the VNFM. + $ref: '#/components/schemas/CivicAddressElement' + area: + description: Geographic area. Shall be absent if the "civicAddressElement" attribute is present. The content of this attribute shall follow the provisions for the "Polygon" geometry object as defined in IETF RFC 7946 [8], for which the "type" member shall be set to the value "Polygon". See note. + $ref: '#/components/schemas/Polygon' + description: "|-\n NOTE:\tIf both \"countryCode\" and \"area\" are present, no conflicts should exist between the values of these two attributes. In case of conflicts, the API producer (e.g. MEO, MEAO) shall disregard parts of the geographic area signalled by \"area\" that are outside the boundaries of the country signalled by \"countryCode\". If \"countryCode\" is absent, it is solely the \"area\" attribute that defines the location constraint." + CreateAppInstanceRequest: + x-etsi-ref: 6.2.2.3 + type: object + properties: + appDId: + description: The application descriptor identifier. It is managed by the application provider to identify the application descriptor in a globally unique way. + type: string + appInstanceName: + description: Human-readable name of the application instance to be created. + type: string + appInstanceDescription: + description: Human-readable description of the application instance to be created. + type: string + appPlacementInfo: + description: Describes the information of selected MEC platform for the application instance to associate. See note. + $ref: '#/components/schemas/MepInformation' + required: + - appDId + description: "|-\n NOTE:\tThis field applies to Mm3* reference point only." + AppInstanceInfo: + x-etsi-ref: 6.2.2.4 + type: object + properties: + id: + description: Identifier of the application instance represented by this data type. + type: string + appInstanceName: + description: Name of the application instance. + type: string + appInstanceDescription: + description: Human-readable description of the application instance to be created. + type: string + appDId: + description: 'The application descriptor identifier is managed by the application provider to identify the application descriptor in a globally unique way. - MonitoringParameter: + It is copied from the AppD of the onboarded application package.' + type: string + appProvider: + description: The onboarded application package provider name. + type: string + appName: + description: The onboarded application name. + type: string + appSoftVersion: + description: The application software version. + type: string + appDVersion: + description: Version of the application descriptor. + type: string + appPkgId: + description: Identifier of the onboarded application package. + type: string + vimConnectionInfo: + description: "Information about VIM connections to be used for managing the resources for the application instance.\nThe 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. \nSee notes 1 and 3." + type: array + minItems: 0 + items: + $ref: '#/components/schemas/VimConnectionInfoMap' + nsInstanceId: + description: Identifier of the NS instance created by NFVO in which the MEC application has been instantiated as a VNF instance. See note 2. + type: string + vnfInstanceId: + description: "Identifier of the VNF instance created by VNFM that the MEC application has been instantiated as. See\_note 2." + type: string + instantiationState: + type: string + enum: + - SEE_DESCRIPTION + description: "Instantiation state of the application instance: \nNOT_INSTANTIATED: the application instance is not instantiated.\nINSTANTIATED: the application instance has been instantiated." + instantiatedAppState: + $ref: '#/components/schemas/InstantiatedAppState' + communicationInterface: + description: Interface for communication with other application instances. See clause 7.5.2 of ETSI GS MEC 021 [13] for the data type definition. + $ref: '#/components/schemas/CommunicationInterface' + _links: + $ref: '#/components/schemas/_links' + required: + - id + - appDId + - appProvider + - appName + - appSoftVersion + - appDVersion + - appPkgId + - instantiationState + - _links + description: "|-\n NOTE 1:\tThis field does not apply if the data structure is used by MEAO.\nNOTE 2:\tThis field applies if the data structure is used by MEAO.\nNOTE 3:\tThis field does not apply if the data structure is used on Mm3*.\nNOTE 4:\tThis field applies if the data structure is used on Mm3*.\nNOTE 5:\tThis field applies if the data structure is used on Mm1 or Mm3*.\nNOTE 6:\tIt is not specified in the present document how location information is obtained in the case of MEC in NFV.\nNOTE 7:\tThis attribute reflects the ETSI NFV interpretation of the cloud native workloads." + AppInstanceSubscriptionFilter: + x-etsi-ref: 6.2.2.5 type: object + properties: + appInstSelectorType: + type: integer + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + description: '0 = void + + 1 = APP_IDENTITY + + 2 = APP_NAME + + 3 = APP_D_ID + + 4 = APP_FROM_PROVIDER' + appInstances: + 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.' + type: array + minItems: 0 + items: + type: string + appsFromProviders: + type: array + items: + $ref: '#/components/schemas/AppsFromProviders' required: - - monitoringParameterId - - performanceMetric + - appInstSelectorType + AppLcmOpOccSubscriptionFilter: + x-etsi-ref: 6.2.2.6 + type: object properties: - monitoringParameterId: + appInstanceSubscriptionFilter: + description: If present, this attribute contains filter criteria that selects one or more application instances on which to receive "LCM operation occurrence" notifications. + $ref: '#/components/schemas/AppInstanceSubscriptionFilter' + notificationTypes: + description: 'Match particular notification types. + + + Permitted values: + + AppLcmOpOccNotification.' type: string - description: Unique identifier of the monitoring parameter. - name: + operationTypes: + type: string + enum: + - SEE_DESCRIPTION + description: 'Type of the LCM operation represented by this application instance LCM operation occurrence. + + + Permitted values: + + INSTANTIATE. + + OPERATE. + + TERMINATE. + + + Match particular application lifecycle operation types for the notification of AppLcmOpOccNotification. + + + May be present if the "notificationTypes" attribute contains the value "AppLcmOpOccNotification", and shall be absent otherwise.' + operationStates: + type: string + enum: + - SEE_DESCRIPTION + description: 'Type of the LCM operation state represented by this application instance LCM operation occurrence. + + + Permitted values: + + STARTING. + + PROCESSING. + + COMPLETED. + + FAILED. + + FAILED_TEMP + + + Match particular LCM operation state values as reported in notifications of AppLcmOpOccNotification. + + + May be present if the "notificationTypes" attribute contains the value "AppLcmOpOccNotification", and shall be absent otherwise.' + InstantiateAppRequest: + x-etsi-ref: 6.2.2.7 + type: object + properties: + 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 notes 1 and 4. + $ref: '#/components/schemas/VirtualComputeDescriptor' + 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 notes 1, 4 and 5.' + type: array + minItems: 0 + items: + $ref: '#/components/schemas/OsContainerDescriptor' + virtualStorageDescriptor: + description: Defines descriptors of virtual storage resources to be used by the application instance to be created. See note 1. + type: array + minItems: 0 + items: + $ref: '#/components/schemas/VirtualStorageDescriptor' + selectedMECHostInfo: + description: Describes the information of selected host for the application instance. See note 2. + type: array + minItems: 1 + items: + $ref: '#/components/schemas/MECHostInformation' + locationConstraints: + description: Defines the location constraints for the application instance to be created. See note 3. + $ref: '#/components/schemas/LocationConstraints' + 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.\nThis attribute shall only be supported and may be present if application-related resource management in direct mode is applicable. See\_note 2." + type: array + minItems: 0 + items: + $ref: '#/components/schemas/VimConnectionInfoMap' + 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. + $ref: '#/components/schemas/AppTermCandsForCoord' + required: + - selectedMECHostInfo + description: "|-\n NOTE 1:\tThis attribute may be provided in the InstantiateAppRequest structure to override the same attribute in the AppD.\nNOTE 2:\tThis field applies to Mm3 reference point only.\nNOTE 3:\tThis field applies to Mm1 reference point only.\nNOTE 4:\tOnly one of virtualComputeDescriptor or osContainerDescriptor shall be present.\nNOTE 5:\tThis attribute reflects the ETSI NFV interpretation of the cloud native workloads." + OperateAppRequest: + x-etsi-ref: 6.2.2.8 + type: object + properties: + changeStateTo: + type: string + enum: + - SEE_DESCRIPTION + description: 'The desired operational state: + + STARTED: the application instance is up and running. + + STOPPED: the application instance stops operation.' + stopType: + type: string + enum: + - SEE_DESCRIPTION + description: 'The stop type: + + FORCEFUL: it will stop the application immediately after accepting the request. + + GRACEFUL: it will first arrange to take the application instance out of service after accepting the request. Once that operation is successful or once the timer value specified in the "gracefulStopTimeout" attribute expires, it will stop the application. + + See notes 1 and 3.' + gracefulStopTimeout: + description: The time interval (in seconds) to wait for the application instance to be taken out of service during graceful stop, before stopping the application. See note 1 and note 2. + type: integer + required: + - changeStateTo + description: "|-\n NOTE 1:\tThe \"stopType\" and \"gracefulStopTimeout\" attributes shall be absent, when the \"changeStateTo\" attribute is equal to \"STARTED\".\nNOTE 2:\tThe \"gracefulStopTimeout\" attribute shall be present, when the \"changeStateTo\" is equal to \"STOPPED\" and the \"stopType\" attribute is equal to \"GRACEFUL\". The \"gracefulStopTimeout\" attribute shall be absent, when the \"changeStateTo\" attribute is equal to \"STOPPED\" and the \"stopType\" attribute is equal to \"FORCEFUL\".\nNOTE 3:\tThe request shall be treated as if the \"stopType\" attribute was set to \"FORCEFUL\", when the \"changeStateTo\" attribute is equal to \"STOPPED\" and the \"stopType\" attribute is absent." + TerminateAppRequest: + x-etsi-ref: 6.2.2.9 + type: object + properties: + terminationType: + type: string + enum: + - SEE_DESCRIPTION + description: "Indicates whether forceful or graceful termination is requested. \nFORCEFUL: it will shut down the application instance and release the resources immediately after accepting the request. See note.\nGRACEFUL: it will first arrange to take the application instance out of service after accepting the request. Once the operation of taking the application instance out of service finishes or once the timer value specified in the \"gracefulTerminationTimeout\" attribute expires, it will shut down the application instance and release the resources." + gracefulTerminationTimeout: + description: 'This attribute is only applicable in case of graceful termination. It defines the time to wait for the application instance to be taken out of service before shutting down the application and releasing the resources. + + The unit is seconds. + + If not given and the "terminationType" attribute is set to "GRACEFUL", it is expected to wait for the successful taking out of service of the application, no matter how long it takes, before shutting down the application and releasing the resources.' + type: integer + required: + - terminationType + description: "|-\n NOTE:\tIf the application instance is still in service, requesting forceful termination can adversely impact service." + AppInstSubscriptionInfo: + x-etsi-ref: 6.2.2.10 + type: object + properties: + id: + description: Identifier of the subscription to application instance operational state change notification. + type: string + subscriptionType: + description: Shall be set to "AppInstanceStateChangeSubscription". + type: string + appInstanceState: + type: string + enum: + - SEE_DESCRIPTION + description: 'Application instance state subscribed to: + + NOT_INSTANTIATED: the application instance is not instantiated. + + STARTED: the application instance is up and running. + + STOPPED: the application instance stops operation.' + appInstanceSubscriptionFilter: + description: Criteria used to select application instances on which to send notifications related to this subscription. + $ref: '#/components/schemas/AppInstanceSubscriptionFilter' + callbackUri: + description: The URI of the endpoint for the subscription related notification to be sent to. + type: string + format: uri + _links: + $ref: '#/components/schemas/_links1' + required: + - id + - subscriptionType + - callbackUri + - _links + AppInstNotification: + x-etsi-ref: 6.2.2.11 + type: object + properties: + id: + 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. + type: string + notificationType: + description: Discriminator for the different notification types. Shall be set to "AppInstanceStateChangeSubscription" for this notification type. + type: string + appInstanceState: + type: string + enum: + - SEE_DESCRIPTION + description: 'Application instance state: + + NOT_INSTANTIATED: the application instance is not instantiated. + + STARTED: the application instance is up and running. + + STOPPED: the application instance stops operation.' + subscriptionId: + description: Identifier of the subscription related to this notification. + type: string + timeStamp: + description: Date and time of the notification generation. + $ref: '#/components/schemas/TimeStamp' + appInstanceId: + description: Identifier of application instance. + type: string + appPkgId: + description: Identifier of the onboarded application package. + type: string + appDId: + description: The application descriptor identifier identifies the application package and the application descriptor in a globally unique way. + type: string + appInstLocation: + 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' + _links: + $ref: '#/components/schemas/_links2' + required: + - id + - notificationType + - appInstanceState + - subscriptionId + - timeStamp + - appInstanceId + - appPkgId + - appDId + - _links + AppInstSubscriptionRequest: + x-etsi-ref: 6.2.2.12 + type: object + properties: + subscriptionType: + description: Shall be set to "AppInstanceStateChangeSubscription". + type: string + callbackUri: + description: The URI of the endpoint for the subscription related notification to be sent to. + type: string + format: uri + appInstanceState: + type: string + enum: + - SEE_DESCRIPTION + 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. + + + Application states: + + NOT_INSTANTIATED: the application instance is not instantiated. + + STARTED: the application instance is up and running. + + STOPPED: the application instance stops operation.' + appInstanceSubscriptionFilter: + description: Criteria used to filter application instances for which to send notifications related to this subscription. + $ref: '#/components/schemas/AppInstanceSubscriptionFilter' + required: + - subscriptionType + - callbackUri + AppLcmOpOcc: + x-etsi-ref: 6.2.2.13 + type: object + properties: + id: + description: Identifier of the subscription to application LCM operation occurrence notification. + type: string + operationState: + type: string + enum: + - SEE_DESCRIPTION + description: 'Operation state: + + STARTING: the LCM operation starting. + + PROCESSING: the LCM operation is currently in execution. + + COMPLETED: the LCM operation has been completed. + + FAILED: The LCM operation has failed and it cannot be retried, as it is determined that such action will not succeed. + + FAILED_TEMP: The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed.' + stateEnteredTime: + description: Date and time when the current state was entered. + $ref: '#/components/schemas/TimeStamp' + startTime: + description: Date and time of the start of the operation. + $ref: '#/components/schemas/TimeStamp' + lcmOperation: + type: string + enum: + - SEE_DESCRIPTION + description: 'Type of the actual LCM operation represented by this application instance LCM operation occurrence: + + INSTANTIATE. + + OPERATE. + + TERMINATE. + + This attribute is associated to the operationParams.' + operationParams: + description: 'Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. The following mapping between LCM operation and the data type of this attribute shall apply: INSTANTIATE: InstantiateAppRequest. OPERATE: OperateAppRequest. TERMINATE: TerminateAppRequest. This attribute shall be present if this data type is returned in a response to reading an individual resource. See note 2.' + $ref: '#/components/schemas/InstantiateAppRequest' + isCancelPending: + description: If the application LCM operation occurrence operationState is in "PROCESSING" state and the operation is being cancelled, this attribute shall be set to true. Otherwise, it shall be set to false. + type: boolean + cancelMode: + description: 'The mode of a cancellation: GRACEFUL: Indicates ongoing resource management operations in the underlying system are being allowed to complete execution or timing out. FORCEFUL: Indicates ongoing resource management operations in the underlying system are being forcefully cancelled. Shall be present when isCancelPending equals true and shall be absent otherwise.' + $ref: '#/components/schemas/CancelMode' + _links: + $ref: '#/components/schemas/_links3' + required: + - id + - operationState + - stateEnteredTime + - startTime + - lcmOperation + - _links + description: "|-\n Note 1:\tVoid.\nNote 2:\tThis object contains structured data, and shall comply with the provisions of clause 4 of IETF RFC 8259 [5]." + AppLcmOpOccSubscriptionRequest: + x-etsi-ref: 6.2.2.14 + type: object + properties: + subscriptionType: + description: Shall be set to "AppLcmOpOccStateChangeSubscription". + type: string + callbackUri: + description: The URI of the endpoint for the subscription related notification to be sent to. + type: string + format: uri + appLcmOpOccSubscriptionFilter: + description: Subscription filter criteria to match specific application LCM operation occurrences. + $ref: '#/components/schemas/AppLcmOpOccSubscriptionFilter' + required: + - subscriptionType + - callbackUri + AppLcmOpOccSubscriptionInfo: + x-etsi-ref: 6.2.2.15 + type: object + properties: + id: + description: Identifier of this subscription resource. + type: string + subscriptionType: + description: Shall be set to "AppLcmOpOccStateChangeSubscription". + type: string + callbackUri: + description: The URI of the endpoint for the subscription related notification to be sent to. + type: string + format: uri + appLcmOpOccSubscriptionFilter: + description: Criteria used to select application LCM operation occurrences on which to send notifications related to this subscription. + $ref: '#/components/schemas/AppLcmOpOccSubscriptionFilter' + _links: + $ref: '#/components/schemas/_links1' + required: + - id + - subscriptionType + - callbackUri + - _links + AppLcmOpOccNotification: + x-etsi-ref: 6.2.2.16 + type: object + properties: + id: + 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. + type: string + notificationType: + description: Discriminator for the different notification types. Shall be set to "AppLcmOpOccStateChangeSubscription" for this notification type. + type: string + operationType: + type: string + enum: + - SEE_DESCRIPTION + description: 'Type of the LCM operation represented by this application instance LCM operation occurrence. + + + Permitted values: + + INSTANTIATE. + + OPERATE. + + TERMINATE.' + operationState: + type: string + enum: + - SEE_DESCRIPTION + description: 'Operation state: + + + STARTING: the LCM operation starting. + + PROCESSING: the LCM operation is currently in execution. + + COMPLETED: the LCM operation has been completed. + + FAILED: The LCM operation has failed and it cannot be retried, as it is determined that such action will not succeed. + + FAILED_TEMP: The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed.' + subscriptionId: + description: Identifier of the subscription to this notification. + type: string + timeStamp: + description: Date and time of the notification generation. + $ref: '#/components/schemas/TimeStamp' + appLcmOpOccId: + description: Identifier of application lifecycle management operation occurrence. + type: string + appInstanceId: + description: Identifier of application instance. + type: string + _links: + $ref: '#/components/schemas/_links4' + required: + - id + - notificationType + - operationType + - operationState + - subscriptionId + - timeStamp + - appLcmOpOccId + - appInstanceId + - _links + MECHostInformation: + x-etsi-ref: 6.2.2.17 + type: object + properties: + hostName: + description: Human-readable name of MEC host. + type: string + hostId: + description: Deployment-specific information to identify a MEC host. See note. + type: object + required: + - hostId + description: "|-\n NOTE:\tThis information can be structured to cater for host identification schemes that are more complex than a simple identifier, e.g. when referring to the structure of an NFVI." + VimConnectionInfo: + x-etsi-ref: 6.2.2.18 + type: object + properties: + id: + description: The identifier of the VIM Connection. This identifier is managed by the MEO. type: string - description: Human readable name of the monitoring parameter. - performanceMetric: + vimId: + description: 'The identifier of the VIM instance. This identifier is managed by the MEO. + + + Shall be present to address additional information about the VIM if such information has been configured into the MEPM by means outside the scope of the present document, and should be absent otherwise.' type: string - description: Specifies the virtualised resource performance metric. - collectionPeriod: + vimType: + description: 'Discriminator for the different types of the VIM information. + + + The value of this attribute determines the structure of the "interfaceInfo" and "accessInfo" attributes, based on the type of the VIM. + + + The set of permitted values is expected to change over time as new types or versions of VIMs become available.' type: string - description: An attribute that describes the periodicity at which to collect the performance information. + interfaceInfo: + description: 'Information about the interface or interfaces to the VIM, if applicable, such as the URI of an interface endpoint to communicate with the VIM. The applicable keys are dependent on the content of vimType. - VirtualComputeDescriptor: - title: VirtualComputeDescriptor + + Alternatively, such information may have been configured into the VNFM and bound to the vimId.' + type: object + accessInfo: + description: 'Authentication credentials for accessing the VIM, and other access-related information such as tenants or infrastructure resource groups. The applicable keys are dependent on the content of vimType. + + + If the VimConnectionInfo structure is part of an HTTP response message content, sensitive attributes that are children of this attributes (such as passwords) shall not be included. + + + If the VimConnectionInfo structure is part of an HTTP request message content, sensitive attributes that are children of this attribute (such as passwords) shall be present if they have not been provisioned out of band.' + type: object + extra: + description: VIM type specific additional information. The applicable structure, and whether or not this attribute is available, is dependent on the content of vimType. + type: object + required: + - id + - vimType + AppInstanceSubscriptionLinkList: + x-etsi-ref: 6.2.2.19 type: object + properties: + _links: + $ref: '#/components/schemas/_links5' required: - - virtualComputeDescId - - virtualMemory - - virtualCpu + - _links + ConfigPlatformForAppRequest: + x-etsi-ref: 6.2.2.21 + type: object properties: - virtualComputeDescId: - type: string - description: Unique identifier of this VirtualComputeDesc in the VNFD. - logicalNode: + appServiceRequired: + description: Describes services a MEC application requires to run. type: array - description: The logical node requirements. + minItems: 0 items: - $ref: '#/components/schemas/LogicalNodeRequirements' - requestAdditionalCapabilities: + $ref: '#/components/schemas/ServiceDependency' + appServiceOptional: + description: Describes services a MEC application may use if available. type: array - description: Specifies requirements for additional capabilities. These may be for a range of purposes. One example is acceleration related capabilities. See clause 7.1.9.5. + minItems: 0 items: - $ref: '#/components/schemas/RequestedAdditionalCapabilityData' - computeRequirements: - description: Specifies compute requirements. + $ref: '#/components/schemas/ServiceDependency' + appServiceProduced: + description: Describes services a MEC application is able to produce to the platform or other MEC applications. Only relevant for service-producing apps. type: array + minItems: 0 items: - type: string - format: not-specified - virtualMemory: - type: object - description: The virtual memory of the virtualised compute. See clause 7.1.9.3.2. - $ref: '#/components/schemas/VirtualMemoryData' - virtualCpu: - type: object - description: The virtual CPU(s) of the virtualised compute. See clause 7.1.9.2.3. - $ref: '#/components/schemas/VirtualCpuData' - virtualDisk: + $ref: '#/components/schemas/ServiceDescriptor' + appFeatureRequired: + description: Describes features a MEC application requires to run. type: array - description: The local or ephemeral disk(s) of the virtualised compute. See clause 7.1.9.4.3. + minItems: 0 items: - $ref: '#/components/schemas/BlockStorageData' - - BlockStorageData: + $ref: '#/components/schemas/FeatureDependency' + appFeatureOptional: + description: Describes features a MEC application may use if available. + type: array + minItems: 0 + items: + $ref: '#/components/schemas/FeatureDependency' + transportDependencies: + description: Transports, if any, that this application requires to be provided by the platform. These transports will be used by the application to deliver services provided by this application. Only relevant for service-producing apps. + type: array + minItems: 0 + items: + $ref: '#/components/schemas/TransportDependency' + appTrafficRule: + description: Describes traffic rules the MEC application requires. + type: array + minItems: 0 + items: + $ref: '#/components/schemas/TrafficRuleDescriptor' + appDNSRule: + description: Describes DNS rules the MEC application requires. + type: array + minItems: 0 + items: + $ref: '#/components/schemas/DNSRuleDescriptor' + appLatency: + description: Describes the maximum latency tolerated by the MEC application. + $ref: '#/components/schemas/LatencyDescriptor' + userContextTransferCapability: + description: If the application supports the user context transfer capability, this attribute shall be included. + $ref: '#/components/schemas/UserContextTransferCapability' + appNetworkPolicy: + description: If present, it represents the application network policy of carrying the application traffic. + $ref: '#/components/schemas/AppNetworkPolicy' + MepInformation: + x-etsi-ref: 6.2.2.22 type: object + properties: + mepName: + description: Human-readable name of MEC platform. + type: string + mepId: + description: Deployment-specific identifier of MEC platform. + type: string required: - - sizeOfStorage + - mepId + AppTermCandsForCoord: + x-etsi-ref: 6.2.2.23 + type: object properties: - sizeOfStorage: - type: number - description: Size of virtualised storage resource in GB. - vduStorageRequirements: + terminationOptions: type: array items: - $ref: '#/components/schemas/KeyValuePairs' - description: An array of key-value pairs that articulate the storage deployment requirements. - rdmaEnabled: - type: boolean - description: Indicate if the storage support RDMA. - swImageDesc: - type: object - $ref: '#/components/schemas/SwImageDesc' - description: | - References the software image to be loaded on the VirtualStorage resource created - based on this VirtualStorageDesc. Shall be absent when used for virtual disks. See note. - - SwImageDesc: + $ref: '#/components/schemas/TerminationOptions' + required: + - terminationOptions + AppInstIdCreationSubscriptionRequest: + x-etsi-ref: 6.2.2.25 type: object + properties: + subscriptionType: + description: Shall be set to "AppIdentifierCreationSubscription". + type: string + callbackUri: + description: The URI of the endpoint for the subscription related notification to be sent to. + type: string + format: uri + appInstanceSubscriptionFilter: + description: Criteria used to filter application instances for which to send notifications related to this subscription. See note. + $ref: '#/components/schemas/AppInstanceSubscriptionFilter' required: - - id - - name - - version - - containerFormat - - swImage + - subscriptionType + - callbackUri + description: "|-\n NOTE:\tIf present, the value of attribute \"appInstSelectorType\" in appInstanceSubscriptionFilter can only be set as \"APP_D_ID\" or \"APP_FROM_PROVIDER\"." + AppInstIdCreationSubscriptionInfo: + x-etsi-ref: 6.2.2.26 + type: object properties: id: + description: Identifier of the subscription to application instance operational state change notification. type: string - description: The identifier of this software image. - name: + subscriptionType: + description: Shall be set to "AppIdentifierCreationSubscription". type: string - description: The name of this software image. - version: + callbackUri: + description: The URI of the endpoint for the subscription related notification to be sent to. type: string - description: The version of this software image. - checksum: - $ref: '#/components/schemas/ChecksumData' - description: The checksum of the software image file. See note 3. - containerFormat: + format: uri + appInstanceSubscriptionFilter: + description: Criteria used to select application instances on which to send notifications related to this subscription. + $ref: '#/components/schemas/AppInstanceSubscriptionFilter' + _links: + $ref: '#/components/schemas/_links1' + required: + - id + - subscriptionType + - callbackUri + - _links + AppInstanceIdentifierCreationNotification: + x-etsi-ref: 6.2.2.27 + type: object + properties: + id: + 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. type: string - description: The container format describes the container file format in which software image is provided. - diskFormat: + notificationType: + description: Discriminator for the different notification types. Shall be set to "AppIdentifierCreationSubscription" for this notification type. type: string - description: The disk format of a software image is the format of the underlying disk image. See note 1. - minDisk: - type: number - description: The minimal disk size requirement for this software image. The value of the "size of storage" attribute of the VirtualStorageDesc referencing this SwImageDesc shall not be smaller than the value of minDisk. See note 1. - minRam: - type: number - description: The minimal RAM requirement for this software image. The value of the "size" attribute of VirtualMemoryData of the Vdu referencing this SwImageDesc shall not be smaller than the value of minRam. See note 2. - size: - type: number - description: The size of this software image file. See note 3. - swImage: - type: object - $ref: '#/components/schemas/SwImageDesc' - description: This is a reference to the actual software image. The reference can be relative to the root of the VNF Package or can be a URL. - operatingSystem: + subscriptionId: + description: Identifier of the subscription related to this notification. type: string - description: Specifies the operating system used in the software image. This attribute may also identify if a 32 bit or 64 bit software image is used. - supportedVirtualisationEnvironment: - type: array - items: - type: string - description: Specifies the virtualisation environments (e.g. hypervisor) compatible with this software image. - description: | - NOTE 1: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise. - NOTE 2: The attribute may be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise. - NOTE 3: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and may be present otherwise. - - ChecksumData: + timeStamp: + description: Date and time of the notification generation. + $ref: '#/components/schemas/TimeStamp' + appInstanceId: + description: The created application instance Identifier. + type: string + _links: + $ref: '#/components/schemas/_links6' + required: + - id + - notificationType + - subscriptionId + - timeStamp + - appInstanceId + - _links + AppInstIdDeletionSubscriptionRequest: + x-etsi-ref: 6.2.2.28 type: object - required: - - algorithm - - hash properties: - algorithm: + subscriptionType: + description: Shall be set to "AppIdentifierDeletionSubscription". type: string - description: Specifies the algorithm used to obtain the checksum value. See note. - hash: + callbackUri: + description: The URI of the endpoint for the subscription related notification to be sent to. type: string - description: | - Contains the result of applying the algorithm indicated by the algorithm attribute to the data to which this ChecksumData refers. - description: | - NOTE: The algorithm attribute value shall be one of the Hash Function Textual Names present in [2]. - - LogicalNodeRequirements: + format: uri + appInstanceSubscriptionFilter: + description: Criteria used to filter application instances for which to send notifications related to this subscription. + $ref: '#/components/schemas/AppInstanceSubscriptionFilter' + required: + - subscriptionType + - callbackUri + AppInstIdDeletionSubscriptionInfo: + x-etsi-ref: 6.2.2.29 type: object + properties: + id: + description: Identifier of the subscription to application instance operational state change notification. + type: string + subscriptionType: + description: Shall be set to "AppIdentifierDeletionSubscription". + type: string + callbackUri: + description: The URI of the endpoint for the subscription related notification to be sent to. + type: string + format: uri + appInstanceSubscriptionFilter: + description: Criteria used to select application instances on which to send notifications related to this subscription. + $ref: '#/components/schemas/AppInstanceSubscriptionFilter' + _links: + $ref: '#/components/schemas/_links1' required: - - id - - logicalNodeRequirementDetail + - id + - subscriptionType + - callbackUri + - _links + AppInstanceIdentifierDeletionNotification: + x-etsi-ref: 6.2.2.30 + type: object properties: id: + 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. type: string - format: uuid - description: Identifies this set of logical node requirements - logicalNodeRequirementDetail: - description: > - The logical node-level compute, memory and I/O requirements. An array of key-value pairs that - articulate the deployment requirements. This could include the number of CPU cores on this logical - node, a memory configuration specific to a logical node (e.g. such as available in the Linux kernel - via the libnuma library) or a requirement related to the association of an I/O device with the logical node. - type: array - items: - type: string - format: not-specified - - RequestedAdditionalCapabilityData: + notificationType: + description: Discriminator for the different notification types. Shall be set to "AppIdentifierDeletionSubscription" for this notification type. + type: string + subscriptionId: + description: Identifier of the subscription related to this notification. + type: string + timeStamp: + description: Date and time of the notification generation. + $ref: '#/components/schemas/TimeStamp' + appInstanceId: + description: The deleted application instance Identifier. + type: string + _links: + $ref: '#/components/schemas/_links7' + required: + - id + - notificationType + - subscriptionId + - timeStamp + - appInstanceId + - _links + LocationInformation: + x-etsi-ref: 6.2.2.31 + type: object + properties: + countryCode: + description: The two-letter ISO 3166 [3] country code in capital letters where an instance is deployed. + type: string + civicAddress: + $ref: '#/components/schemas/CivicAddress' + geographicalPosition: + 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 [8]. + type: string + required: + - countryCode + description: "|-\n NOTE:\tAt 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." + CancelMode: + x-etsi-ref: 6.2.2.32 type: object + properties: + CancelMode: + type: string + enum: + - SEE_DESCRIPTION + description: 'Indicates the intervention action to be taken. + + GRACEFUL: Indicates ongoing resource management operations in the underlying system are allowed to complete execution or time out. + + FORCED: Indicates ongoing resource management operations in the underlying system are to be cancelled without allowing them to complete execution or time out.' required: - - requestedAdditionalCapabilityName - - supportMandatory - - targetPerformanceParameters + - CancelMode + LinkType: + x-etsi-ref: 6.2.5.2 + type: object properties: - requestedAdditionalCapabilityName: + href: + description: URI referring to a resource. type: string - description: Specifies a requested additional capability for the VDU - supportMandatory: - type: boolean - description: Indicates whether the requested additional capability is mandatory for successful operation - minRequestedAdditionalCapabilityVersion: + format: uri + required: + - href + TimeStamp: + x-etsi-ref: 6.2.5.4 + type: object + properties: + seconds: + description: "The seconds part of the Time. Time is defined as Unix-time since January\_1, 1970, 00:00:00 UTC." + type: integer + format: uint32 + nanoSeconds: + description: The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. + type: integer + format: uint32 + required: + - seconds + - nanoSeconds + Checksum: + x-etsi-ref: 6.2.5.6 + type: object + properties: + algorithm: + description: Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004 [18]. For example, SHA-256, SHA-512. type: string - description: Specifies the minimum version of the requested additional capability - preferredRequestedAdditionalCapabilityVersion: + hash: + description: The hexadecimal value of the checksum. type: string - description: Specifies the preferred version of the requested additional capability - targetPerformanceParameters: + required: + - algorithm + - hash + TransportsSupported: + description: Indicates transports and serialization formats supported made available to the service-consuming application. Defaults to REST + JSON if absent. + type: object + properties: + transport: + description: Information about the transport in this binding. + $ref: '#/components/schemas/TransportDescriptor' + serializers: + description: "Information about the serializers in this binding, as defined in the SerializerType type in ETSI GS\_MEC\_011\_[17]." type: array - description: Specifies specific attributes, dependent on the requested additional capability type. + minItems: 1 items: - $ref: '#/components/schemas/KeyValuePairs' + $ref: '#/components/schemas/SerializerType' + required: + - transport + - serializers + SteeredNetwork: + description: 'This attribute provides an option for the application to specify a type of network to carry the application traffic. - KeyValuePairs: - description: | - This data type represents a list of key-value pairs. The order of the pairs in the list is not - significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with - the provisions defined in clause 4 of IETF RFC 8259. + See note.' type: object properties: - key: - type: string - value: - type: string - - VirtualMemoryData: + cellularNetwork: + description: If present, and the application prefers to a cellular network to carry its traffic, this attribute shall be set to true. Otherwise, it shall be set to false. + type: boolean + wi-fiNetwork: + description: "If present, and the application prefers to a WiFi\xAEnetwork to carry its traffic, this attribute shall be set to true. Otherwise, it shall be set to false." + type: boolean + fixedAccessNetwork: + description: If present, and the application prefers to a fixed access network to carry its traffic, this attribute shall be set to true. Otherwise, it shall be set to false. + type: boolean + CivicAddressElement: + description: Zero or more elements comprising the civic address. Shall be absent if the "area" attribute is present. type: object + properties: + caType: + description: Describe the content type of caValue. The value of caType shall comply with section 3.4 of IETF RFC 4776 [2]. + type: integer + caValue: + description: Content of civic address element corresponding to the caType. The format caValue shall comply with section 3.4 of IETF RFC 4776 [2]. + type: string required: - - virtualMemSize + - caType + - caValue + InstantiatedAppState: + description: Information specific to an instantiated application. This attribute shall be present if the instantiationState attribute value is INSTANTIATED. + type: object properties: - virtualMemSize: - type: number - description: Amount of virtual memory in MB. - virtualMemOversubscriptionPolicy: + operationalState: type: string - description: | - The memory core oversubscription policy in terms of virtual memory to physical memory - on the platform. The cardinality can be 0 during the allocation request, if no particular - value is requested. - vduMemRequirements: + enum: + - SEE_DESCRIPTION + description: 'Operational state is applicable in the instantiation state INSTANTIATED: + + STARTED: the application instance is up and running. + + STOPPED: the application instance stops operation.' + appInstLocation: + description: Location of the MEC application instance. See note 5 and note 6. + $ref: '#/components/schemas/LocationInformation' + mcioInfo: + description: Information on the MCIO(s) representing application instance realized by one or a set of OS containers. See note 7. type: array + minItems: 0 items: - $ref: '#/components/schemas/KeyValuePairs' - description: Array of key-value pair requirements on the memory for the VDU. - numaEnabled: - type: boolean - description: Specifies the memory allocation to be cognisant of the relevant process/core allocation. - hugePagesRequirements: - type: string - description: Specifies requirements on the huge pages resources for the virtual memory. - - VirtualCpuData: + $ref: '#/components/schemas/McioInfo' + required: + - operationalState + _links: + description: Links to resources related to this resource. type: object + properties: + self: + description: Self referring URI. + $ref: '#/components/schemas/LinkType' + instantiate: + 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. + $ref: '#/components/schemas/LinkType' + terminate: + 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). + $ref: '#/components/schemas/LinkType' + operate: + 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: + 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. + $ref: '#/components/schemas/LinkType' required: - - numVirtualCpu + - self + Versions: + description: If present, match application instances that belong to application products with certain versions and a certain product name, from one particular provider. + type: object properties: - cpuArchitecture: - type: string - description: CPU architecture type. Examples are x86, ARM. - numVirtualCpu: - type: integer - description: Number of virtual CPUs. - virtualCpuClock: - type: number - description: Minimum virtual CPU clock rate (e.g. in MHz). - virtualCpuOversubscriptionPolicy: + appSoftVersion: + description: Application software version to match. type: string - description: The CPU core oversubscription policy, e.g. the relation of virtual CPU cores to physical CPU cores/threads. - vduCpuRequirements: + appDVersion: + description: If present, match application instances that belong to application products with certain appD versions, a certain software version and a certain product name, from one particular provider. type: array + minItems: 0 items: - $ref: '#/components/schemas/KeyValuePairs' - description: Array of key-value pair requirements on the Compute (CPU) for the VDU. - virtualCpuPinning: - $ref: '#/components/schemas/VirtualCpuPinningData' - - VirtualCpuPinningData: + type: string + required: + - appSoftVersion + AppProducts: + description: If present, match application instances that belong to application products with certain product names, from one particular provider. type: object properties: - virtualCpuPinningPolicy: + appName: + description: Name of the application product to match. type: string - description: Indicates the policy for CPU pinning. - enum: - - STATIC - - DYNAMIC - virtualCpuPinningRule: + versions: type: array items: - type: string - description: List of rules that should be considered during the allocation of the virtual CPUs to logical CPUs in case of "STATIC" virtualCpuPinningPolicy. - - LocationConstraints: - title: LocationConstraints + $ref: '#/components/schemas/Versions' + required: + - appName + AppsFromProviders: + 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. type: object properties: - countryCode: + appProvider: + description: Name of the application provider to match. type: string - description: The two-letter ISO 3166 country code in capital letters. See note. - civicAddressElement: + appProducts: type: array items: - $ref: '#/components/schemas/CivicAddressElement' - area: - type: string - description: Geographic area. Shall be absent if the "civicAddressElement" attribute is present. The content of this attribute shall follow the provisions for the "Polygon" geometry object as defined in IETF RFC 7946 [8], for which the "type" member shall be set to the value "Polygon". See note. - - description: | - "'The LocationConstraints data type supports the specification of MEC application requirements related to MEC application deployment location constraints. The location constraints shall be presented as a country code, optionally followed by a civic address based on the format defined by IETF RFC 4776'" - NOTE: If both "countryCode" and "area" are present, no conflicts should exist between the values of these two - attributes. In case of conflicts, the API producer (e.g. MEO, MEAO) shall disregard parts of the geographic - area signalled by "area" that are outside the boundaries of the country signalled by "countryCode". If - "countryCode" is absent, it is solely the "area" attribute that defines the location constraint. - - CivicAddressElement: - title: CivicAddressElement + $ref: '#/components/schemas/AppProducts' required: - - caType - - caValue + - appProvider + _links1: + description: Links to resources related to this resource. type: object properties: - caType: - type: integer - description: "'Describe the content type of caValue. The value of caType shall comply with section 3.4 of IETF RFC 4776.'" - format: int32 - caValue: - type: string - description: "'Content of civic address element corresponding to the caType. The format caValue shall comply with section 3.4 of IETF RFC 4776.'" - description: "'The civic address.'" - - MECHostInformation: - title: MECHostInformation + self: + description: URI of this resource. + $ref: '#/components/schemas/LinkType' required: - - hostId + - self + _links2: + description: Links to resources related to this notification. type: object properties: - hostId: - $ref: '#/components/schemas/KeyValuePairs' - description: Deployment-specific information to identify a MEC host. See note. - hostName: - type: string - description: Human-readable name of MEC host. - description: | - NOTE: This information can be structured to cater for host identification schemes that are more - complex than a simple identifier, e.g. when referring to the structure of an NFVI. - - OperateAppRequest: - title: OperateAppRequest + subscription: + description: A link to the related subscription. + $ref: '#/components/schemas/LinkType' required: - - changeStateTo + - subscription + _links3: + description: Links to resources related to this resource. type: object properties: - changeStateTo: - $ref: '#/components/schemas/ChangeStateTo' - gracefulStopTimeout: - type: integer - description: The time interval (in seconds) to wait for the application instance to be taken out of service during graceful stop, before stopping the application. See note 1 and note 2. - format: int32 - stopType: - description: The stop type. See notes 1 and 3. - $ref: '#/components/schemas/StopType' - description: | - NOTE 1: The "stopType" and "gracefulStopTimeout" attributes shall be absent, when the "changeStateTo" attribute is - equal to "STARTED". - NOTE 2: The "gracefulStopTimeout" attribute shall be present, when the "changeStateTo" is equal to "STOPPED" and - the "stopType" attribute is equal to "GRACEFUL". The "gracefulStopTimeout" attribute shall be absent, when - the "changeStateTo" attribute is equal to "STOPPED" and the "stopType" attribute is equal to "FORCEFUL". - NOTE 3: The request shall be treated as if the "stopType" attribute was set to "FORCEFUL", when the - "changeStateTo" attribute is equal to "STOPPED" and the "stopType" attribute is absent - - StopType: - title: StopType - enum: - - FORCEFUL - - GRACEFUL - type: string - examples: - - FORCEFUL - - ChangeStateTo: - title: ChangeStateTo - enum: - - STARTED - - STOPPED - type: string - description: The desired operational state - examples: - - STARTED - - ProblemDetails: - title: ProblemDetails + self: + description: URI of this resource. + $ref: '#/components/schemas/LinkType' + appInstance: + description: Link to the application instance that the operation applies to. + $ref: '#/components/schemas/LinkType' + required: + - self + - appInstance + _links4: + description: Links to resources related to this notification. type: object properties: - detail: - type: string - description: A human-readable explanation specific to this occurrence of the problem - instance: - type: string - description: A URI reference that identifies the specific occurrence of the problem - status: - type: integer - description: The HTTP status code for this occurrence of the problem - format: int32 - title: - type: string - description: A short, human-readable summary of the problem type - type: - type: string - description: A URI reference according to IETF RFC 3986 that identifies the problem type - - TerminateAppRequest: - title: TerminateAppRequest + appInstance: + description: Link to the resource representing the application instance to which the notified change applies. + $ref: '#/components/schemas/LinkType' + subscription: + description: Link to the related subscription. + $ref: '#/components/schemas/LinkType' + appLcmOpOcc: + description: Link to the application lifecycle management operation occurrence that this notification is related to. + $ref: '#/components/schemas/LinkType' required: - - terminationType + - appInstance + - subscription + - appLcmOpOcc + Subscriptions: + description: A link list to the subscriptions. type: object properties: - gracefulTerminationTimeout: - type: integer - description: "This attribute is only applicable in case of graceful termination. It defines the time to wait for the application instance to be taken out of service before shutting - down the application and releasing the resources. \nThe unit is seconds.\nIf not given and the \"terminationType\" attribute is set to \"GRACEFUL\", it is expected to wait for the successful taking out of service of the application, no matter how long it takes, before shutting down the application and releasing the resources." - format: int32 - terminationType: - $ref: '#/components/schemas/TerminationType' - description: | - NOTE: If the application instance is still in service, requesting forceful termination can adversely impact service. - - TimeStamp: - title: TimeStamp + href: + description: The URI referring to the subscription. + type: string + format: uri + subscriptionType: + description: Type of the subscription. + $ref: '#/components/schemas/AppInstanceSubscriptionType' required: - - nanoSeconds - - seconds + - href + - subscriptionType + _links5: + description: List of hyperlinks related to the resource. type: object properties: - nanoSeconds: - type: integer - description: The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. - format: int32 - seconds: - type: integer - description: The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. - format: int32 - - TerminationType: - title: TerminationType - enum: - - FORCEFUL - - GRACEFUL - type: string - description: "'Indicates whether forceful or graceful termination is requested.'" - examples: - - FORCEFUL - - VimConnectionInfo: - title: VimConnectionInfo + self: + description: URI of this resource. + $ref: '#/components/schemas/LinkType' + subscriptions: + type: array + items: + $ref: '#/components/schemas/Subscriptions' required: - - id - - vimType + - self + TerminationOptions: + 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. type: object properties: - accessInfo: - $ref: '#/components/schemas/KeyValuePairs' - description: | - This data type represents a list of key-value pairs. The order of the pairs in the list is - not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply - with the provisions defined in clause 4 of IETF RFC 8259. - extra: - $ref: '#/components/schemas/KeyValuePairs' - description: | - This data type represents a list of key-value pairs. The order of the pairs in the list is not - significant. In JSON, a set of key-value pairs is represented as an object. It shall comply - with the provisions defined in clause 4 of IETF RFC 8259. - id: - type: string - description: The identifier of the VIM Connection. This identifier is managed by the MEO. - interfaceInfo: - $ref: '#/components/schemas/KeyValuePairs' - description: | - This data type represents a list of key-value pairs. The order of the pairs in the list is - not significant. In JSON, a set of key-value pairs is represented as an object. It shall - comply with the provisions defined in clause 4 of IETF RFC 8259. - vimId: - type: string - description: - The identifier of the VIM instance. This identifier is managed by the MEO.Shall be present - to address additional information about the VIM if such information has been configured into - the MEPM by means outside the scope of the present document, and should be absent otherwise. - vimType: - type: string - description: | - Discriminator for the different types of the VIM information.The value of this attribute - determines the structure of the "interfaceInfo" and "accessInfo" attributes, based on the type - of the VIM.The set of permitted values is expected to change over time as new types or versions - of VIMs become available. - - Links: - title: Links + appInstIdTerminationCands: + description: 'List of application instance identifiers, constituting a candidate set for termination. ' + type: array + minItems: 1 + items: + type: string required: - - subscription + - appInstIdTerminationCands + _links6: + description: Links to resources related to this notification. type: object properties: subscription: + description: A link to the related subscription. + $ref: '#/components/schemas/LinkType' + appInstance: + description: Link to the resource representing the created application instance. $ref: '#/components/schemas/LinkType' + required: + - subscription + - appInstance + _links7: description: Links to resources related to this notification. - + type: object + properties: + subscription: + description: A link to the related subscription. + $ref: '#/components/schemas/LinkType' + appInstance: + description: Link to the resource representing the deleted application instance. + $ref: '#/components/schemas/LinkType' + required: + - subscription + - appInstance + CivicAddressElement1: + description: Provides elements comprising a single civic address as described in section 3.4, with accompanying example in section 5 of IETF RFC 4776 [2]. + type: object + properties: + caType: + description: "Describe the content type of caValue. The value of caType shall comply with section 3.4 of IETF RFC\_4776 [2]. " + type: integer + caValue: + description: "Content of civic address element corresponding to the caType. The format caValue shall comply with section\_3.4 of IETF RFC 4776 [2]." + type: string + required: + - caType + - caValue + CivicAddress: + description: Provides the civic address of the site hosting the MEC application instance. + type: object + properties: + civicAddressElement: + type: array + items: + $ref: '#/components/schemas/CivicAddressElement1' + required: + - civicAddressElement + VimConnectionInfoMap: + type: object + additionalProperties: + $ref: '#/components/schemas/VimConnectionInfo' responses: + '200': + description: OK + '204': + description: No Content '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + description: 'Bad Request: used to indicate that incorrect parameters were passed to the request.' content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '401': - description: 'Unauthorized : used when the client did not submit credentials.' + description: 'Unauthorized: used when the client did not submit credentials.' content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' + description: 'Forbidden: operation is not allowed given the current status of the resource.' content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + description: 'Not Found: used when a client provided a URI that cannot be mapped to a valid resource URI.' content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + description: 'Not Acceptable: used to indicate that the server cannot provide the any of the content formats supported by the client.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '409': + description: 'Conflict: The operation cannot be executed currently, due to a conflict with the state of the resource. .' content: application/problem+json: schema: @@ -2708,6 +3190,108 @@ components: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' + parameters: + Query.Filter: + description: 'Attribute-based filtering parameters according to ETSI GS MEC 009 [4]. + + The API producer shall support receiving filtering parameters as part of the URI query string. + + All attribute names that appear in the AppInstanceInfo and in data types referenced from it shall be supported in attribute-based filtering parameters. + + See clause 6.19 in ETSI GS MEC 009 [4] for details.' + name: filter + in: query + required: false + x-exportParamName: Query.Filter + schema: + type: string + Query.All_fields: + description: "Include all complex attributes in the response. See clause 6.18 in ETSI GS\_MEC\_009\_[4] for details. The API producer shall support this parameter." + name: all_fields + in: query + required: false + x-exportParamName: Query.All_fields + schema: + type: string + Query.Fields: + description: "Complex attributes to be included into the response. See clause 6.18 in ETSI GS\_MEC\_009 [4] for details. The API producer should support this parameter." + name: fields + in: query + required: false + x-exportParamName: Query.Fields + schema: + type: string + Query.Exclude_fields: + description: Complex attributes to be excluded from the response. See clause 6.18 in [4] for details. The API producer should support this parameter. + name: exclude_fields + in: query + required: false + x-exportParamName: Query.Exclude_fields + schema: + type: string + Query.Exclude_default: + description: "Indicates to exclude the following complex attributes from the response. See clause\_6.18 in ETSI GS MEC 009 [4] for details. The API producer shall support this parameter.\nThe following attributes shall be excluded from the AppInstanceInfo structure in the response message content if this parameter is provided, or none of the parameters \"all_fields\", \"fields\", \"exclude_fields\", \"exclude_default\" are provided:\nvimConnectionInfo;\ninstantiate;\nterminate;\noperate." + name: exclude_default + in: query + required: false + x-exportParamName: Query.Exclude_default + schema: + type: string + Query.Subscriptiontype: + description: Query parameter to filter on a specific subscription type. + name: subscriptiontype + in: query + required: false + x-exportParamName: Query.Subscriptiontype + schema: + $ref: '#/components/schemas/AppInstanceSubscriptionType' + Query.Filter1: + description: 'Attribute-based filtering parameters according to ETSI GS MEC 009 [4]. + + The API producer shall support receiving filtering parameters as part of the URI query string. + + All attribute names that appear in the AppLcmOpOcc and in data types referenced from it shall be supported in attribute-based filtering parameters. See clause 6.19 in ETSI GS MEC 009 [4] for details.' + name: filter1 + in: query + required: false + x-exportParamName: Query.Filter1 + schema: + type: string + Query.Fields1: + description: 'Complex attributes of AppLcmOpOcc to be included into the response. + + + See clause 6.18 in ETSI GS MEC 009 [4] for details. The API producer should support this parameter.' + name: fields1 + in: query + required: false + x-exportParamName: Query.Fields1 + schema: + type: string + Query.Exclude_fields1: + description: 'Complex attributes of AppLcmOpOcc to be excluded from the response. + + + See clause 6.18 in ETSI GS MEC 009 [4] for details. The API producer should support this parameter.' + name: exclude_fields1 + in: query + required: false + x-exportParamName: Query.Exclude_fields1 + schema: + type: string + Query.Exclude_default1: + description: 'Indicates to exclude the following complex attributes of AppLcmOpOcc from the response. + + + The following attributes shall be excluded from the AppLcmOpOcc structure in the response message content if this parameter is provided, or none of the parameters "all_fields", "fields", "exclude_fields", "exclude_default" are provided: + + operationParams; + + _links.' + name: exclude_default1 + in: query + required: false + x-exportParamName: Query.Exclude_default1 + schema: + type: string -security: -- {} diff --git a/MEC01002_AppPkgMgmt.yaml b/MEC01002_AppPkgMgmt.yaml index b0cd38fa844d594496c790e13d693efb90ed0ec9..2d23ba1a2a9be5e17914f4d491b3689b31cc22ec 100644 --- a/MEC01002_AppPkgMgmt.yaml +++ b/MEC01002_AppPkgMgmt.yaml @@ -1,53 +1,46 @@ openapi: 3.1.0 +jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema info: title: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management' description: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI.' license: name: BSD-3-Clause - url: 'https://forge.etsi.org/legal-matters' + url: https://forge.etsi.org/legal-matters contact: name: ETSI Forge url: https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api email: cti_support@etsi.org - version: '3.1.1' -jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema - -externalDocs: - description: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v3.1.1' - url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.01.01_60/gs_MEC01002v030101p.pdf' -tags: -- name: app-pkgm - description: App Package management -- name: app-pkgm-notifications - description: App Package management notifications + version: 3.1.1 servers: - url: https://localhost/app_pkgm/v1 - variables: {} paths: - /app_packages: + /onboarded_app_packages: post: + summary: Create a new resource for onboarded application package. + description: The POST method is used to create a resource for on-boarding an application package to a MEO/MEAO, which refers to the procedure of "onboarding operation" as described in clause 6.3.3.5. The POST method is also used to create a resource for on-boarding an application package from OSS through MEAO to NFVO as described in clause 5.6.2. + operationId: OnboardedapppackagesPOST tags: - app-pkgm - summary: 'Create a resource for on-boarding an application package to a MEO/MEAO' - description: Create a resource for on-boarding an application package to a MEO/MEAO - operationId: app_packagesPOST - parameters: [] requestBody: - description: Resource to be created + description: The POST method is used to create a new resource for onboarding an application package onto a MEO/MEAO. + required: true content: application/json: schema: - $ref: '#/components/schemas/CreateAppPkg' - required: true + type: object + properties: + CreateAppPkg: + $ref: '#/components/schemas/CreateAppPkg' responses: '201': - description: Successful response for resource creation - headers: {} + description: "Indicates a successful request. The response message content shall contain a representation of the application package resource defined in clause\_6.2.\n\nThe HTTP response includes a \"Location\" HTTP header that contains the URI of the created resource." content: application/json: schema: - $ref: '#/components/schemas/AppPkgInfo' - description: The response body shall contain a representation of the application package resource + type: object + properties: + AppPkgInfo: + $ref: '#/components/schemas/AppPkgInfo' '400': $ref: '#/components/responses/400' '401': @@ -60,60 +53,28 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false + parameters: [] get: + summary: Query on-boarded application package information. + description: This GET method queries information relating to on-boarded application packages in the MEO/MEAO matching the filtering criteria. It refers to the procedure of "query operation" of application package as described in clause 6.3.3.2. This GET method also queries information relating to on-boarded application packages in the NFVO matching the filtering criteria by the OSS through MEAO to NFVO. + operationId: OnboardedapppackagesGET tags: - app-pkgm - summary: Queries information relating to on-boarded application packages in the MEO/MEAO' - description: queries information relating to on-boarded application packages in the MEO/MEAO - operationId: app_packagesGET parameters: - - name: filter - in: query - description: Attribute-based filtering parameters according to ETSI GS MEC 009 - style: form - explode: true - schema: - type: string - - name: all_fields - in: query - description: Include all complex attributes in the response. - style: form - explode: true - schema: - type: string - - name: fields - in: query - description: Complex attributes of AppPkgInfo to be included into the response - style: form - explode: true - schema: - type: string - - name: exclude_fields - in: query - description: Complex attributes of AppPkgInfo to be excluded from the response. - style: form - explode: true - schema: - type: string - - name: exclude_default - in: query - description: Indicates to exclude the following complex attributes of AppPkgInfo from the response. - style: form - explode: true - schema: - type: string + - $ref: '#/components/parameters/Query.Filter' + - $ref: '#/components/parameters/Query.All_fields' + - $ref: '#/components/parameters/Query.Fields' + - $ref: '#/components/parameters/Query.Exclude_fields' + - $ref: '#/components/parameters/Query.Exclude_default' responses: '200': - description: Contains a representation of the application package resource - headers: {} + description: Indicate the success of request. The response message content shall contain a list of representations of the "individual application package" resources that match the attribute filter. content: application/json: schema: type: array items: $ref: '#/components/schemas/AppPkgInfo' - description: 'Indicate the success of request. The response message content shall contain a list of representations of the "individual application package" resources that match the attribute filter' '400': $ref: '#/components/responses/400' '401': @@ -126,139 +87,23 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - parameters: [] - - /onboarded_app_packages: - post: - tags: - - app-pkgm - summary: 'Create a resource for on-boarding an application package to a MEO/MEAO' - description: Create a resource for on-boarding an application package to a MEO/MEAO - operationId: onboarded_app_packagesPOST - parameters: [] - requestBody: - description: Resource to be created - content: - application/json: - schema: - $ref: '#/components/schemas/CreateAppPkg' - required: true - responses: - '201': - description: Successful response for resource creation - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/AppPkgInfo' - description: The response body shall contain a representation of the application package resource - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' - deprecated: false - get: - tags: - - app-pkgm - summary: Queries information relating to on-boarded application packages in the MEO/MEAO' - description: queries information relating to on-boarded application packages in the MEO/MEAO - operationId: onboarded_app_packagesGET - parameters: - - name: filter - in: query - description: Attribute-based filtering parameters according to ETSI GS MEC 009 - style: form - explode: true - schema: - type: string - - name: all_fields - in: query - description: Include all complex attributes in the response. - style: form - explode: true - schema: - type: string - - name: fields - in: query - description: Complex attributes of AppPkgInfo to be included into the response - style: form - explode: true - schema: - type: string - - name: exclude_fields - in: query - description: Complex attributes of AppPkgInfo to be excluded from the response. - style: form - explode: true - schema: - type: string - - name: exclude_default - in: query - description: Indicates to exclude the following complex attributes of AppPkgInfo from the response. - style: form - explode: true - schema: - type: string - responses: - '200': - description: Contains a representation of the application package resource - headers: {} - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/AppPkgInfo' - description: Indicate the success of request. The response body message content shall contain a list of representations of the "individual application package" resources that match the attribute filter. - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' - deprecated: false - parameters: [] - - /app_packages/{appPkgId}: + /onboarded_app_packages/{appDId}: get: + summary: Read information of an individual on-boarded application package. + description: This GET method is used to query the information related to individual application package resources. + operationId: OnboardedapppackagesGETAppdid tags: - app-pkgm - summary: 'Queries the information related to individual application package resources' - description: Queries the information related to individual application package resources - operationId: app_packageGET - parameters: - - name: appPkgId - in: path - description: Identifier of an individual application package resource - required: true - style: simple - schema: - type: string responses: '200': - description: Contains a representation of the application package resource - headers: {} + description: Indicates the success of request. The response message content shall contain a representation of the resource. content: application/json: schema: - items: - $ref: '#/components/schemas/AppPkgInfo' - description: Indicates the success of request. The response message content shall contain a representation of the resource + type: object + properties: + AppPkgInfo: + $ref: '#/components/schemas/AppPkgInfo' '400': $ref: '#/components/responses/400' '401': @@ -271,26 +116,22 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - delete: - tags: - - app-pkgm - summary: 'Deletes an individual application package resources in MEO/MEAO' - description: Deletes an individual application package resources in MEO/MEAO - operationId: app_packageDELETE parameters: - - name: appPkgId + - name: appDId in: path - description: Identifier of an individual application package resource required: true - style: simple + description: The unique identifier of the appDId. schema: type: string + delete: + summary: Delete an individual on-boarded application package. + description: This DELETE method realizes the procedure of "delete operation" of application package resource in MEO/MEAO or the procedure of "delete operation" of application package resource in NFVO by OSS through MEAO as described in clause 6.3.3.9. + operationId: OnboardedapppackagesDELETEAppdid + tags: + - app-pkgm responses: '204': - description: No Content - headers: {} - content: {} + $ref: '#/components/responses/204' '400': $ref: '#/components/responses/400' '401': @@ -303,110 +144,39 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - patch: - tags: - - app-pkgm - summary: 'Updates the operational state of an individual application package resource' - description: Updates the operational state of an individual application package resources - operationId: app_packagePATCH parameters: - - name: appPkgId + - name: appDId in: path - description: Identifier of an individual application package resource required: true - style: simple + description: The unique identifier of the appDId. schema: type: string + patch: + summary: Enable or disable an individual onboarded application package. + description: This PATCH method updates the operational state of an individual application package resource used by the procedure of "enable operation" as described in clause 6.3.3.6, "disable operation" as described in clause 6.3.3.7. + operationId: OnboardedapppackagesPATCHAppdid + tags: + - app-pkgm requestBody: description: Parameters for application package information modification. + required: true content: application/json: schema: - $ref: '#/components/schemas/AppPkgInfoModifications' - required: true - responses: - '200': - description: Shows that the operation has been completed successfully - headers: {} - content: - application/json: - schema: - items: + type: object + properties: + AppPkgInfoModifications: $ref: '#/components/schemas/AppPkgInfoModifications' - description: Shall be returned when the operation has been completed successfully. - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' - deprecated: false - parameters: [] - - /onboarded_app_packages/{appPkgId}: - get: - tags: - - app-pkgm - summary: 'Queries the information related to individual application package resources' - description: Queries the information related to individual application package resources - operationId: onboarded_app_packageGET - parameters: - - name: appPkgId - in: path - description: Identifier of an individual application package resource - required: true - style: simple - schema: - type: string responses: '200': - description: Contains a representation of the application package resource - headers: {} + description: Shall be returned when the operation has been completed successfully. content: application/json: schema: - items: - $ref: '#/components/schemas/AppPkgInfo' - description: Indicates the success of request. The response message content shall contain arepresentation of the resource. - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' - deprecated: false - delete: - tags: - - app-pkgm - summary: 'Deletes an individual application package resources in MEO/MEAO' - description: Deletes an individual application package resources in MEO/MEAO - operationId: onboarded_app_packageDELETE - parameters: - - name: appPkgId - in: path - description: Identifier of an individual application package resource - required: true - style: simple - schema: - type: string - responses: - '204': - description: No Content - headers: {} - content: {} + type: object + properties: + AppPkgInfoModifications: + $ref: '#/components/schemas/AppPkgInfoModifications' '400': $ref: '#/components/responses/400' '401': @@ -419,77 +189,40 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - patch: - tags: - - app-pkgm - summary: 'Updates the operational state of an individual application package resource' - description: Updates the operational state of an individual application package resources - operationId: onboarded_app_packagePATCH parameters: - - name: appPkgId + - name: appDId in: path - description: Identifier of an individual application package resource required: true - style: simple + description: The unique identifier of the appDId. schema: type: string - requestBody: - description: Parameters for application package information modification. - content: - application/json: - schema: - items: - $ref: '#/components/schemas/AppPkgInfoModifications' - description: Shall be returned when the operation has been completed successfully. - required: true - responses: - '200': - description: Shows that the operation has been completed successfully - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/AppPkgInfoModifications' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' - deprecated: false - parameters: [] - /subscriptions: post: + summary: Subscribe to notification related to on-boarding and/or changes of application packages. + description: The POST method is used to subscribe to notifications about on-boarding an application package, or about operational state changes of on-boarded application package, which is mapped to the procedure of "subscription operation" as described in clause 6.3.3.3. + operationId: SubscriptionsPOST tags: - app-pkgm - summary: 'Subscribe to notifications about on-boarding an application package' - description: Subscribe to notifications about on-boarding an application package - operationId: subscriptionsPOST - parameters: [] requestBody: - description: The input parameters of subscribe operation to notifications + description: The input parameters of "subscribe operation" to notifications about changes related to application package management for the onboarding, or operational state change of application package. + required: true content: application/json: schema: - $ref: '#/components/schemas/AppPkgSubscription' - required: true + type: object + properties: + AppPkgSubscription: + $ref: '#/components/schemas/AppPkgSubscription' responses: '201': - description: Successful response for created subscription - headers: {} + description: Upon success, a response message content representing the created subscription shall be returned. content: application/json: schema: - $ref: '#/components/schemas/AppPkgSubscriptionInfo' - description: Upon success, a response message contentrepresenting the created subscription shall bereturned. + type: object + properties: + AppPkgSubscriptionInfo: + $ref: '#/components/schemas/AppPkgSubscriptionInfo' '400': $ref: '#/components/responses/400' '401': @@ -502,41 +235,45 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - callbacks: + callbacks: notification: - '{$request.body#/subscription.href}': + '{$request.body#/callbackUri}': post: - summary: 'Callback POST used to send a notification' - description: ' The notification is triggered when a new application package is onboarded' - operationId: notificationPOST + summary: Callback POST used to send a notification + description: Subscription notification + operationId: notificationPOST180140 requestBody: description: Subscription notification required: true content: application/json: schema: - $ref: '#/components/schemas/AppPkgNotification' + type: object + properties: + subscriptionNotification: + $ref: '#/components/schemas/AppPkgSubscription' responses: '204': - description: "No content" + description: No content '404': - description: "Not found" + description: Not found + parameters: [] get: + summary: Query multiple subscriptions. + description: This GET method is used to retrieve the information of subscriptions to individual application package resource in MEO or MEAO. Upon success, the response contains the list of links to the subscriptions that are present for the requestor. + operationId: SubscriptionsGET tags: - app-pkgm - summary: 'used to retrieve the information of subscriptions to individual application package resource in MEO or MEAO' - description: used to retrieve the information of subscriptions to individual application package resource in MEO or MEAO package - operationId: subscriptionsGET - parameters: [] responses: '200': - description: List of zero or more subscriptions - headers: {} + description: Upon success, a response message content containing a list of zero or more subscriptions shall be returned. content: application/json: schema: - $ref: '#/components/schemas/AppPkgSubscriptionLinkList' - description: Upon success, a response message content containing a list of zero or more subscriptions shallbe returned. + type: object + properties: + AppPkgSubscriptionLinkList: + $ref: '#/components/schemas/AppPkgSubscriptionLinkList' '400': $ref: '#/components/responses/400' '401': @@ -549,32 +286,24 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - parameters: [] + parameters: [] /subscriptions/{subscriptionId}: get: + summary: Read resource of an individual subscription. + description: This GET method is used to retrieve the individual subscription information to the application package resource in MEO or MEAO. + operationId: SubscriptionsGETSubscriptionid tags: - app-pkgm - summary: 'Used to represent an individual subscription to notifications about application package changes.' - description: Used to represent an individual subscription to notifications about application package changes. - operationId: individualSubscriptionGET - parameters: - - name: subscriptionId - in: path - description: Identifier of an individual subscription to notifications about application package changes - required: true - style: simple - schema: - type: string responses: '200': - description: a response body containing a representation of the resource shall be returned. - headers: {} + description: Upon success, a response message content containing a representation of the resource shall be returned. content: application/json: schema: - $ref: '#/components/schemas/AppPkgSubscriptionInfo' - description: Upon success, a response message content containing a representation of the resource shall be returned. + type: object + properties: + AppPkgSubscriptionInfo: + $ref: '#/components/schemas/AppPkgSubscriptionInfo' '400': $ref: '#/components/responses/400' '401': @@ -587,178 +316,108 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - delete: - tags: - - app-pkgm - summary: 'Deletes the individual subscription to notifications about application package changes in MEO or MEAO.' - description: Deletes the individual subscription to notifications about application package changes in MEO or MEAO. - operationId: individualSubscriptionDELETE parameters: - name: subscriptionId in: path - description: Identifier of an individual subscription to notifications about application package changes required: true - style: simple + description: The unique identifier of the subscriptionId. schema: type: string + delete: + summary: Terminate an individual subscription. + description: This DELETE method is used to delete the individual subscription to notifications about application package changes in MEO or MEAO. + operationId: SubscriptionsDELETESubscriptionid + tags: + - app-pkgm responses: '204': - description: No Content - headers: {} - content: {} - '400': - $ref: '#/components/responses/400' + $ref: '#/components/responses/204' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - parameters: [] - /app_packages/{appPkgId}/appd: - get: - tags: - - app-pkgm - summary: 'Reads the content of the AppD of on-boarded individual application package resources.' - description: Reads the content of the AppD of on-boarded individual application package resources. - operationId: appPkgIdGET parameters: - - name: appPkgId + - name: subscriptionId in: path - description: Identifier of an on-boarded individual application package required: true - style: simple - schema: - type: string - - name: filter - in: query - description: Attribute-based filtering parameters according to ETSI GS MEC 009 - style: form - explode: true - schema: - type: string - - name: all_fields - in: query - description: Include all complex attributes in the response. - style: form - explode: true - schema: - type: string - - name: fields - in: query - description: Complex attributes of AppPkgInfo to be included into the response - style: form - explode: true - schema: - type: string - - name: exclude_fields - in: query - description: Complex attributes of AppPkgInfo to be excluded from the response. - style: form - explode: true - schema: - type: string - - name: exclude_default - in: query - description: Indicates to exclude the following complex attributes of AppPkgInfo from the response. - style: form - explode: true + description: The unique identifier of the subscriptionId. schema: type: string + /user_defined_notification: + post: + summary: Delivers a notification from the application lifecycle management resource to the subscriber. + description: The POST method delivers a notification from the application package management resource in MEO or MEAO to the subscriber. + operationId: UserdefinednotificationPOST + tags: + - notification + requestBody: + description: A notification of an application package for on-boarding or operational state change. + required: true + content: + application/json: + schema: + type: object + properties: + AppPkgNotification: + $ref: '#/components/schemas/AppPkgNotification' responses: - '200': - description: Content of the AppD is returned. - headers: {} + '204': + description: 'The notification was delivered successfully. + + The response message content shall be empty.' content: - text/plain: + application/json: schema: - $ref: '#/components/schemas/AppD' - description: Indicates the success of request, and the content of the AppD is returned.The response message content shall contain a copy of the file representing the AppD or a - ZIP file that contains the file or multiple files representing the AppD.The "Content-Type" HTTP header shall be set according to the format of the returned file, which is - selected according to "Accept" HTTP header options passed in the request. - application/zip: {} - '400': - $ref: '#/components/responses/400' + type: object + properties: {} '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - parameters: [] + parameters: [] /onboarded_app_packages/{appDId}/appd: get: + summary: Read application descriptor of an onboarded application package. + description: This GET method reads the content of the AppD of on-boarded individual application package resources. The format of the AppD is left for future specification. + operationId: OnboardedapppackagesAppdGETAppdid tags: - app-pkgm - summary: 'Reads the content of the AppD of on-boarded individual application package resources.' - description: Reads the content of the AppD of on-boarded individual application package resources. - operationId: appDGET parameters: + - $ref: '#/components/parameters/Query.Filter1' + - $ref: '#/components/parameters/Query.All_fields1' + - $ref: '#/components/parameters/Query.Fields1' + - $ref: '#/components/parameters/Query.Exclude_fields1' + - $ref: '#/components/parameters/Query.Exclude_default1' - name: appDId in: path - description: Identifier of an application descriptor required: true - style: simple - schema: - type: string - - name: filter - in: query - description: Attribute-based filtering parameters according to ETSI GS MEC 009 - style: form - explode: true - schema: - type: string - - name: all_fields - in: query - description: Include all complex attributes in the response. - style: form - explode: true - schema: - type: string - - name: fields - in: query - description: Complex attributes of AppPkgInfo to be included into the response - style: form - explode: true - schema: - type: string - - name: exclude_fields - in: query - description: Complex attributes of AppPkgInfo to be excluded from the response. - style: form - explode: true - schema: - type: string - - name: exclude_default - in: query - description: Indicates to exclude the following complex attributes of AppPkgInfo from the response. - style: form - explode: true + description: The unique identifier of the appDId. schema: type: string responses: '200': - description: Content of the AppD is returned. - headers: {} + description: 'Indicates the success of request, and the content of the AppD is returned. + + + The response message content shall contain a copy of the file representing the AppD or a ZIP file that contains the file or multiple files representing the AppD. + + + The "Content-Type" HTTP header shall be set according to the format of the returned file, which is selected according to "Accept" HTTP header options passed in the request.' content: - text/plain: + application/json: schema: - $ref: '#/components/schemas/AppD' - description: Indicates the success of request, and the content of the AppD is returned.The response message content shall contain a copy of the file representing the AppD or a - ZIP file that contains the file or multiple files representing the AppD.The "Content-Type" HTTP header shall be set according to the format of the returned file, which is - selected according to "Accept" HTTP header options passed in the request. - application/zip: {} + type: object + properties: + AppD: + $ref: '#/components/schemas/AppD' '400': $ref: '#/components/responses/400' '401': @@ -771,34 +430,21 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - parameters: [] - /app_packages/{appPkgId}/package_content: + /onboarded_app_packages/{appDId}/package_content: get: + summary: Fetch an on-boarded application package. + description: The GET method is used to fetch the onboarded application package content identified by appPkgId or appDId. The client can use this resource to fetch the content of the application package. + operationId: OnboardedapppackagesPackagecontentGETAppdid tags: - app-pkgm - summary: 'Fetch the onboarded application package content identified by appPkgId or appDId.' - description: Fetch the onboarded application package content identified by appPkgId or appDId. - operationId: appPkgGET - parameters: - - name: appPkgId - in: path - description: Identifier of an on-boarded individual application package - required: true - style: simple - schema: - type: string responses: '200': - description: The payload body shall contain a copy of the file representing the AppD or a ZIP file that contains the file or multiple files representing the AppD. - headers: {} - content: - application/zip: {} - '206': - description: On success, if the MEO or MEAO supports range requests, a single consecutive byte range from the content of the application package file shall be returned. - headers: {} + description: "On success, a copy of the on-boarded application package is returned in the response message content. \n\nThe \"Content-Type\" HTTP header shall be set according to the type of the file, i.e. to \"application/zip\" for an application package." content: - application/zip: {} + application/json: + schema: + type: object + properties: {} '400': $ref: '#/components/responses/400' '401': @@ -809,66 +455,41 @@ paths: $ref: '#/components/responses/404' '406': $ref: '#/components/responses/406' + '416': + $ref: '#/components/responses/416' '429': $ref: '#/components/responses/429' - deprecated: false - put: - tags: - - app-pkgm - summary: 'Uploads the content of application package.' - description: Uploads the content of application package. - operationId: appPkgPUT parameters: - - name: appPkgId + - name: appDId in: path - description: Identifier of an on-boarded individual application package required: true - style: simple + description: The unique identifier of the appDId. schema: type: string - responses: - '202': - description: The application package has been accepted for uploading, but the processing has not been completed. - headers: {} - content: {} - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' - deprecated: false - parameters: [] - /onboarded_app_packages/{appDId}/package_content: - get: + put: + summary: Upload an application package by providing the content of application package. + description: This PUT method uploads the content of application package. + operationId: OnboardedapppackagesPackagecontentPUTAppdid tags: - app-pkgm - summary: 'Fetch the onboarded application package content identified by appPkgId or appDId.' - description: Fetch the onboarded application package content identified by appPkgId or appDId. - operationId: appDIdGET - parameters: - - name: appDId - in: path - description: Identifier of an application descriptor - required: true - style: simple - schema: - type: string + requestBody: + description: 'The message content shall contain a ZIP file that represents the application package. + + The "Content-Type" HTTP header shall be set to "application/zip".' + content: + application/json: {} + required: false responses: - '200': - description: The payload body shall contain a copy of the file representing the AppD or a ZIP file that contains the file or multiple files representing the AppD. - headers: {} - content: {} - '206': - description: On success, if the MEO or MEAO supports range requests, a single consecutive byte range from the content of the application package file shall be returned. - headers: {} - content: {} + '202': + description: 'The application package has been accepted for uploading, but the processing has not been completed. It is expected to take some time for processing. + + + The response message content shall be empty.' + content: + application/json: + schema: + type: object + properties: {} '400': $ref: '#/components/responses/400' '401': @@ -881,301 +502,40 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - deprecated: false - put: - tags: - - app-pkgm - summary: 'Fetch the onboarded application package content identified by appPkgId or appDId.' - description: Uploads the content of application package. - operationId: appDIdPUT parameters: - name: appDId in: path - description: Identifier of an application descriptor required: true - style: simple + description: The unique identifier of the appDId. schema: type: string - responses: - '202': - description: The application package has been accepted for uploading, but the processing has not been completed. - headers: {} - content: {} - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' - deprecated: false - parameters: [] -############################################################################### -# Notification endpoint AppPkgNotification # -############################################################################### - /user_defined_notification: - post: - tags: - - app-pkgm-notifications - summary: 'Registers a notification endpoint to notify application package operations' - description: Registers a notification endpoint to notify application package operations - operationId: app_pkg_notificationPOST - parameters: [] - requestBody: - description: Notification endpoint to be created - content: - application/json: - schema: - $ref: '#/components/schemas/AppPkgNotification' - required: true - responses: - '204': - description: No Content - headers: {} - content: {} - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' - deprecated: false - parameters: [] - components: schemas: - AppD: - title: AppD - required: - - appDId - - appDVersion - - appDescription - - appName - - appProvider - - appSoftVersion - - mecVersion - - swImageDescriptor - - appExtCpd + Not_specified: + type: object + ProblemDetails: type: object properties: - appDId: - type: string - description: Identifier of this MEC application descriptor. This attribute shall be globally unique. See note 1. - appDNSRule: - type: array - items: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/DNSRuleDescriptor' - description: Describes DNS rules the MEC application requires. - logicalNode: - type: array - items: - $ref: '#/components/schemas/LogicalNodeRequirements' - description: The logical node requirements. See note 6 and note 7. - requestAdditionalCapabilities: - type: array - items: - $ref: '#/components/schemas/RequestedAdditionalCapabilityData' - description: Specifies requirements for additional capabilities. These can be for a range of purposes. One example is acceleration related capabilities. See note 6 and note 7. - mcioConstraintParams: - type: array - items: - $ref: '#/components/schemas/McioConstraintParams' - description: The parameter names for constraints expected to be assigned to MCIOs realizing this application. For the associated semantical context of the values, refer to the description under the table 7.1.6.2.2-1 of ETSI GS NFV IFA 011 [1]. See note 7. - appDVersion: - type: string - description: Identifies the version of the application descriptor. - appDescription: - type: string - description: Human readable description of the MEC application. - appExtCpd: - type: array - items: - $ref: '#/components/schemas/AppExternalCpd' - description: Describes external interface(s) exposed by this MEC application. See note 4. - appFeatureOptional: - type: array - items: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/FeatureDependency' - description: Describes features a MEC application may use if available. - appFeatureRequired: - type: array - items: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/FeatureDependency' - description: Describes features a MEC application requires to run. - appInfoName: - type: string - description: Human readable name for the MEC application. - appLatency: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/LatencyDescriptor' - appName: - type: string - description: Name to identify the MEC application. - appProvider: - type: string - description: Provider of the application and of the AppD. - appServiceOptional: - type: array - items: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/ServiceDependency' - description: Describes services a MEC application may use if available. - appServiceProduced: - type: array - items: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/ServiceDescriptor' - description: Describes services a MEC application is able to produce to the platform or other MEC applications. Only relevant for service-producing apps. - appServiceRequired: - type: array - items: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/ServiceDependency' - description: Describes services a MEC application requires to run. - appSoftVersion: - type: string - description: Identifies the version of software of the MEC application. - mciopId: - type: string - description: Identifies the MCIOP in the application package, used in containerized workload management, when the application is realized by a set of OS containers. See note 7. - mcioIdentificationData: - type: string - description: Name and type of the Managed Container Infrastructure Object (MCIO) that realizes this application. It allows the VNFM to identify the MCIO e.g. when querying the Container Infrastructure Service Management (CISM). See note 7. - items: - $ref: '#/components/schemas/McioIdentificationData' - appTrafficRule: - type: array - items: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/TrafficRuleDescriptor' - description: Describes traffic rules the MEC application requires. - changeAppInstanceStateOpConfig: + type: type: string - $ref: '#/components/schemas/changeAppInstanceStateOpConfig' - mecVersion: - type: array - items: - type: string - description: Identifies version(s) of MEC system compatible with the MEC application described in this version of the AppD. The value shall be formatted as comma-separated list of strings. Each entry shall have the format .. where , and are decimal numbers representing the version of the present document. Whitespace between list entries shall be trimmed before validation. - virtualStorageDescriptor: - type: array - items: - $ref: '#/components/schemas/VirtualStorageDescriptor' - description: Defines descriptors of virtual storage resources to be used by the MEC application. - userContextTransferCapability: + format: uri + description: A URI reference according to IETF RFC 3986 that identifies the problem type + title: type: string - $ref: '#/components/schemas/UserContextTransferCapability' - appNetworkPolicy: + description: A short, human-readable summary of the problem type + status: + type: integer + format: uint32 + description: The HTTP status code for this occurrence of the problem + detail: type: string - $ref: '#/components/schemas/AppNetworkPolicy' - swImageDescriptor: - type: array - items: - $ref: '#/components/schemas/SwImageDescriptor' - description: Describes the descriptors of the software image to be used by the virtualisation container used to realize this MEC application. See note 5. - terminateAppInstanceOpConfig: + description: A human-readable explanation specific to this occurrence of the problem + instance: type: string - $ref: '#/components/schemas/TerminateAppInstanceOpConfig' - transportDependencies: - type: object - items: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/TransportDependency' - description: Transports, if any, that this application requires to be provided by the platform. These transports will be used by the application to deliver services provided by this application. Only relevant for service-producing apps. See note 2. - virtualComputeDescriptor: - description: Describes CPU and memory requirements, as well as optional additional requirements, such as disk and acceleration related capabilities, of the single VM used to realize this MEC application. See note 5. - type: object - items: - $ref: '#/components/schemas/VirtualComputeDescriptor' - 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 5 and note 7. - description: | - NOTE 1: The appDId shall be used as the unique identifier of the application package that contains this AppD. - NOTE 2: This attribute indicates groups of transport bindings which a service-producing MEC application requires to - be supported by the platform in order to be able to produce its services. At least one of the indicated groups - needs to be supported to fulfil the requirements. - NOTE 3: The support of application descriptor containing descriptions of multiple virtualisation containers and/or - application software images is out of scope of the present document. - NOTE 4: External interfaces are used to connect to e.g. other MEC applications, MEC services, UEs and also MEC - platform and OSS. - NOTE 5: Only one of virtualComputeDescriptor or osContainerDescriptor shall be present. If virtualComputeDescriptor - presents, only a single swImageDescriptor shall be provided. - NOTE 6: If the AppD includes virtualComputeDesc, then logicalNode and requestedAdditionalCapabilites shall not be - present. - NOTE 7: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. - - changeAppInstanceStateOpConfig: - type: object - description: > - This information element defines attributes that affect the invocation of the OperateVnf operation. - required: - - minGracefulStopTimeout - properties: - minGracefulStopTimeout: - type: number - description: Minimum timeout value for graceful stop of a VNF instance. - maxRecommendedGracefulStopTimeout: - type: number - description: > - Maximum recommended timeout value that can be needed to gracefully stop a VNF - instance of a particular type under certain conditions, such as maximum load - condition. This is provided by VNF provider as information for the operator facilitating - the selection of optimal timeout value. This value is not used as constraint. - parameter: - type: array - items: - type: string - description: > - Array of KVP requirements for VNF-specific parameters to be passed when invoking the - OperateVnf operation. See note. - - AppNetworkPolicy: - type: object - properties: - steeredNetwork: - type: object - properties: - cellularNetwork: - type: boolean - description: If present and the application prefers to use a cellular network, set to true. Otherwise, set to false. - wi-fiNetwork: - type: boolean - description: If present and the application prefers to use a Wi-Fi network, set to true. Otherwise, set to false. - fixedAccessNetwork: - type: boolean - description: If present and the application prefers to use a fixed access network, set to true. Otherwise, set to false. - description: Option for the application to specify a type of network to carry its traffic. - required: - - steeredNetwork - description: Network policy in the application instantiation and operation. - - UserContextTransferCapability: - type: object - properties: - statefulApplication: - type: boolean - description: If the application is stateful, this attribute shall be set to true. Otherwise, set to false. - userContextTransferSupport: - type: boolean - description: This attribute shall be present if the application is stateful and absent otherwise. If the application supports user context transfer, set to true. Otherwise, set to false. - required: - - statefulApplication - description: Information about user context transfer capability of the application. - + format: uri + description: A URI reference that identifies the specific occurrence of the problem VirtualStorageDescriptor: type: object - description: Defines descriptors of virtual storage resources to be used by the MEC application. - required: - - id - - typeOfStorage properties: id: type: string @@ -1202,200 +562,194 @@ components: perVnfcInstance: type: boolean description: Indicates whether the virtual storage resource should be instantiated per VNFC instance. - - NfviMaintenanceInfo: + AppPkgSWImageInfo: + description: "NOTE 1: The data type of application software image information data model is related to virtualisation method and\n needs for further study. \n" + AppPkgArtifactInfo: + description: "NOTE 2: The data type of additional information of application package artifacts is not specified in the present\n document.\n" + McioIdentificationData: type: object + required: + - name + - type properties: - impactNotificationLeadTime: + name: + type: string + description: The name of the mcio. See note 1. + type: + type: string + description: The type of the mcio. See note 2. + description: "NOTE 1: When the container infrastructure service is a Kubernetes\xAE instance it is the value of the 'metadata.name' \n field in Kubernetes\xAE manifest. \nNOTE 2: When the container infrastructure service is a Kubernetes\xAE instance it is the value of the 'kind' field in \n Kubernetes\xAE manifest. \n" + OsContainerDescriptor: + title: OsContainerDescriptor + type: object + required: + - osContainerDescId + - name + - description + - swImageDesc + properties: + osContainerDescId: + type: string + description: Unique identifier of this OsContainerDesc in the VNFD. + name: + type: string + description: Human readable name of this OS container. + description: + type: string + description: Human readable description of this OS container. + requestedCpuResources: + type: integer + description: Number of CPU resources requested for the container (e.g. in milli-CPU-s). + requestedMemoryResources: type: number - description: The minimum notification lead time requested for upcoming impact of the virtualised resource or their group. - isImpactMitigationRequested: - type: boolean - description: Indicates if it is requested to provide virtualised resource(s) of the same characteristics as the impacted ones to compensate for the impact. - supportedMigrationType: + description: Amount of memory resources requested for the container (e.g. in MB). + requestedEphemeralStorageResources: + type: number + description: Size of ephemeral storage resources requested for the container (e.g. in GB). + extendedResourceRequests: type: array items: - type: string - enum: - - NO_MIGRATION - - OFFLINE_MIGRATION - - LIVE_MIGRATION - description: Specifies the allowed migration types in order of preference in case of an impact. - maxUndetectableInterruptionTime: + $ref: '#/components/schemas/KeyValuePairs' + description: An array of key-value pairs of extended resources required by the container see note. + additionalProperties: + type: string + description: See note. + cpuResourceLimit: + type: integer + description: Number of CPU resources the container can maximally use (e.g. in milli-CPU). + memoryResourceLimit: type: number - description: Specifies the maximum interruption time that can go undetected at the VNF level during live migration. - minRecoveryTimeBetweenImpacts: + description: Amount of memory resources the container can maximally use (e.g. in MB). + ephemeralStorageResourceLimit: type: number - description: Specifies the time required by the group to recover from an impact, indicating the minimum time between consecutive impacts of the group. - maxNumberOfImpactedInstances: - type: array - items: - $ref: '#/components/schemas/MaxNumberOfImpactedInstances' - description: Specifies the maximum number of instances that can be impacted simultaneously within the group of virtualised resources for different group sizes. - minNumberOfPreservedInstances: + description: Size of ephemeral storage resources the container can maximally use (e.g. in GB). + hugePageResources: + type: object + description: Specifies HugePages resources requested for the container, which the container can maximally use. + additionalProperties: + type: string + cpuPinningRequirements: + $ref: '#/components/schemas/VirtualCpuPinningData' + description: Requirements for CPU pinning configuration for this OS container. + swImageDesc: + $ref: '#/components/schemas/SwImageDesc' + description: Describes the software image realizing this OS container. + bootData: + type: string + description: Contains a string or a URL to a file contained in the VNF package used to customize a container resource at boot time. The bootData may contain variable parts that are replaced by deployment specific values before being sent. + monitoringParameters: type: array items: - $ref: '#/components/schemas/MinNumberOfPreservedInstances' - description: Specifies the minimum number of instances which need to be preserved simultaneously within the group of virtualised resources for different group sizes. - MaxNumberOfImpactedInstances: - type: object - 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. - MinNumberOfPreservedInstances: - type: object - properties: - groupSize: - type: integer - description: Determines the size of the group for which the minNumberOfPreservedInstances is specified. - minNumberOfPreservedInstances: - type: integer - description: The minimum number of instances which need to be preserved simultaneously within the group of the specified size. - - ObjectStorageData: - type: object - properties: - maxSizeOfStorage: - type: number - description: Maximum size of virtualized storage resource in GB. - FileStorageData: + $ref: '#/components/schemas/MonitoringParameter' + description: Specifies the virtualized resource related performance metrics on the OsContainerDesc level to be tracked by the VNFM. + description: "NOTE: Extended resources are to describe any type of resource provided by the container infrastructure. One \n example implementation of extended resources is \"Extended Resources\" in case the container infrastructure \n service is a Kubernetes\xAE instance. \n" + VirtualCpuPinningData: type: object properties: - sizeOfStorage: - type: number - description: Size of virtualized storage resource in GB. - fileSystemProtocol: + virtualCpuPinningPolicy: type: string - description: The shared file system protocol (e.g. NFS, CIFS). - intVirtualLinkDesc: - $ref: '#/components/schemas/VnfVirtualLinkDesc' - description: Reference of the internal VLD which this file storage connects to. - VirtualLinkDescFlavour: + description: Indicates the policy for CPU pinning. + enum: + - STATIC + - DYNAMIC + virtualCpuPinningRule: + type: array + items: + type: string + description: List of rules that should be considered during the allocation of the virtual CPUs to logical CPUs in case of "STATIC" virtualCpuPinningPolicy. + AppInstanceSubscriptionType: + type: string + enum: + - AppInstanceStateChangeSubscription + - AppLcmOpOccStateChangeSubscription + - AppIdentifierCreationSubscription + - AppIdentifierDeletionSubscription + description: String representing the type of a subscription. + ServicePortData: type: object + required: + - name + - protocol + - port + - portConfigurable properties: - flavourId: + name: type: string - description: Identifies a flavour within a VnfVirtualLinkDesc. - qos: - $ref: '#/components/schemas/QoS' - description: QoS of the VL. - required: - - flavourId - - QoS: + description: The name of the port exposed by the VirtualCp. + protocol: + type: string + enum: + - TCP + - UDP + - SCTP + description: The L4 protocol for this port exposed by the VirtualCp. + port: + type: integer + description: The L4 port number exposed by the VirtualCp. + portConfigurable: + type: boolean + description: Specifies whether the port attribute value is allowed to be configurable. + AdditionalServiceData: type: object - properties: - latency: - type: number - description: Specifies the maximum latency in ms. - packetDelayVariation: - type: number - description: Specifies the maximum jitter in ms. - packetLossRatio: - type: number - description: Specifies the maximum packet loss ratio. required: - - latency - - packetDelayVariation - - ConnectivityType: - type: object + - portData properties: - layerProtocol: + portData: type: array - description: Specifies the protocols that the VL uses. items: - type: string - enum: - - Ethernet - - MPLS - - ODU2 - - IPV4 - - IPV6 - - Pseudo-Wire - - Etc + $ref: '#/components/schemas/ServicePortData' minItems: 1 - flowPattern: + serviceData: type: string - description: Specifies the flow pattern of the connectivity (Line, Tree, Mesh, etc.). - required: - - layerProtocol - - VnfVirtualLinkDesc: + description: Service matching information exposed by the VirtualCp. See note. + description: "This information element describes the additional service data of the VirtualCp used to expose\nproperties of the VirtualCp to NFV-MANO.\n\nIf the VirtualCp is exposed by a VNF component realized by one or a set of OS containers,\nthe properties are mirrored from the declarative descriptor of the corresponding MCIO where available. \n\nNOTE: This attribute shall only be present if additional information is needed to identify the\nservice termination within the VNF, such as for example a url path information in an HTTP request\nrequired to allow a single VirtualCp IP address to be used for several HTTP based services that\nuse the same portnumber. \n" + MonitoringParameter: type: object + required: + - monitoringParameterId + - performanceMetric properties: - virtualLinkDescId: + monitoringParameterId: type: string - description: Unique identifier of this internal VLD in VNFD. - virtualLinkDescFlavour: - type: array - items: - $ref: '#/components/schemas/VirtualLinkDescFlavour' - description: Describes a specific flavour of the VL with specific bitrate requirements. - connectivityType: - $ref: '#/components/schemas/ConnectivityType' - description: See clause 7.1.7.3. - testAccess: - type: array - items: - type: string - description: Specifies test access facilities expected on the VL. - description: + description: Unique identifier of the monitoring parameter. + name: type: string - description: Provides human-readable information on the purpose of the VL. - monitoringParameter: - type: array - items: - $ref: '#/components/schemas/MonitoringParameter' - description: Specifies the virtualised resource related performance metrics on VLD level to be tracked by the VNFM. - nfviMaintenanceInfo: - $ref: '#/components/schemas/NfviMaintenanceInfo' - description: Provides information on the rules to be observed when an instance based on this VnfVirtualLinkDesc is impacted during NFVI operation and maintenance. - externallyManaged: + description: Human readable name of the monitoring parameter. + performanceMetric: type: string - enum: - - REQUIRED - - ALLOWED - default: ALLOWED - description: Specifies the intent of the VNF designer with respect to the internal VL instances created from this descriptor being externally managed. - - TerminateAppInstanceOpConfig: + description: Specifies the virtualised resource performance metric. + collectionPeriod: + type: string + description: An attribute that describes the periodicity at which to collect the performance information. + ChangeAppInstanceStateOpConfig: type: object - description: > - This information element defines attributes that affect the invocation of the TerminateVnf operation. + description: 'This information element defines attributes that affect the invocation of the OperateVnf operation. + + ' required: - - minGracefulTerminationTimeout + - minGracefulStopTimeout properties: - minGracefulTerminationTimeout: + minGracefulStopTimeout: type: number description: Minimum timeout value for graceful stop of a VNF instance. - maxRecommendedGracefulTerminationTimeout : + maxRecommendedGracefulStopTimeout: type: number - description: > - Maximum recommended timeout value that can be needed to gracefully terminate a - VNF instance of a particular type under certain conditions, such as maximum load - condition. This is provided by VNF provider as information for the operator facilitating - the selection of optimal timeout value. This value is not used as constraint. + description: "Maximum recommended timeout value that can be needed to gracefully stop a VNF instance of a particular type under certain conditions, such as maximum load condition. This is provided by VNF provider as information for the operator facilitating the selection of optimal timeout value. This value is not used as constraint. \n" parameter: type: array - items: + items: type: string - description: > - Array of KVP requirements for VNF-specific parameters to be passed when invoking the - TerminateVnf operation. See note. + description: 'Array of KVP requirements for VNF-specific parameters to be passed when invoking the OperateVnf operation. See note. + ' SwImageDescriptor: type: object required: - - id - - name - - version - - containerFormat - - swImage + - id + - name + - version + - containerFormat + - swImage properties: id: type: string @@ -1406,10 +760,10 @@ components: version: type: string items: - $ref: "#/components/schemas/Version" + $ref: '#/components/schemas/Version' description: The version of this software image. checksum: - $ref: "#/components/schemas/ChecksumData" + $ref: '#/components/schemas/ChecksumData' description: The checksum of the software image file. See note 3. containerFormat: type: string @@ -1428,177 +782,48 @@ components: description: The size of this software image file. See note 3. swImage: type: object - items: - $ref: "#/components/schemas/SwImageDesc" + items: + $ref: '#/components/schemas/SwImageDesc' description: A reference to the actual software image. operatingSystem: type: string description: Specifies the operating system used in the software image. - supportedVirtualisationEnvironment: - type: array - items: - type: string - description: Specifies the virtualisation environments (e.g. hypervisor) compatible with this software image. - description: | - NOTE 1: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise. - NOTE 2: The attribute may be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise. - NOTE 3: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and may be present otherwise. - - Version: - type: object - required: - - srcVnfdId - - dstVnfdId - - srcFlavourId - properties: - srcVnfdId: - type: string - description: Identifier of the source VNFD and the source VNF package. See note 1. - dstVnfdId: - type: string - description: Identifier of the destination VNFD and the destination VNF package. See note 1. - srcFlavourId: - type: string - description: Identifier of the deployment flavour in the source VNF package for which this modification applies. See note 2. - description: | - NOTE 1: Either the srcVnfdId or the dstVnfdId shall be equal to the vnfdId of the VNFD containing this version selector. - NOTE 2: It is up to protocol design stage to decide whether there is further optimization potential to apply one modification for multiple srcFlavourIds. - - McioConstraintParams: - title: McioConstraintParams - enum: - - localAffinityCisNode - - nodeAdditionalCapabilitySsd - - nodeAdditionalCapabilityDpdk - - nodeAdditionalCapabilitySriov - - nodeAdditionalCapabilityGpu - - nodeAdditionalCapabilityFpga - - nodeAdditionalCapabilityCpuPin - - nodeCapabilityLogicalNuma - - nodePool - type: string - description: | - The parameter names for constraints expected to be assigned to MCIOs realizing this application.The value specifies the standardized - semantical context of the MCIO constraints and the parameter names for the MCIO constraints in the MCIO declarative descriptor.The mcioConstraintParams - attribute shall have one of the following values, expressing the associated semantical context.. For the associated semantical context of the values, - refer to the description under the table 7.1.6.2.2-1 of ETSI GS NFV IFA 011 [1]. - - McioIdentificationData: - type: object - required: - - name - - type - properties: - name: - type: string - description: The name of the mcio. See note 1. - type: - type: string - description: The type of the mcio. See note 2. - description: | - NOTE 1: When the container infrastructure service is a Kubernetes® instance it is the value of the 'metadata.name' - field in Kubernetes® manifest. - NOTE 2: When the container infrastructure service is a Kubernetes® instance it is the value of the 'kind' field in - Kubernetes® manifest. - - OsContainerDescriptor: - title: OsContainerDescriptor - type: object - required: - - osContainerDescId - - name - - description - - swImageDesc - properties: - osContainerDescId: - type: string - description: Unique identifier of this OsContainerDesc in the VNFD. - name: - type: string - description: Human readable name of this OS container. - description: - type: string - description: Human readable description of this OS container. - requestedCpuResources: - type: integer - description: Number of CPU resources requested for the container (e.g. in milli-CPU-s). - requestedMemoryResources: - type: number - description: Amount of memory resources requested for the container (e.g. in MB). - requestedEphemeralStorageResources: - type: number - description: Size of ephemeral storage resources requested for the container (e.g. in GB). - extendedResourceRequests: - type: array - items: - $ref: '#/components/schemas/KeyValuePairs' - description: An array of key-value pairs of extended resources required by the container see note. - additionalProperties: - type: string - description: See note. - cpuResourceLimit: - type: integer - description: Number of CPU resources the container can maximally use (e.g. in milli-CPU). - memoryResourceLimit: - type: number - description: Amount of memory resources the container can maximally use (e.g. in MB). - ephemeralStorageResourceLimit: - type: number - description: Size of ephemeral storage resources the container can maximally use (e.g. in GB). - hugePageResources: - type: object - description: Specifies HugePages resources requested for the container, which the container can maximally use. - additionalProperties: - type: string - cpuPinningRequirements: - $ref: '#/components/schemas/VirtualCpuPinningData' - description: Requirements for CPU pinning configuration for this OS container. - swImageDesc: - $ref: '#/components/schemas/SwImageDesc' - description: Describes the software image realizing this OS container. - bootData: - type: string - description: Contains a string or a URL to a file contained in the VNF package used to customize a container resource at boot time. The bootData may contain variable parts that are replaced by deployment specific values before being sent. - monitoringParameters: + supportedVirtualisationEnvironment: type: array items: - $ref: '#/components/schemas/MonitoringParameter' - description: Specifies the virtualized resource related performance metrics on the OsContainerDesc level to be tracked by the VNFM. - description: | - NOTE: Extended resources are to describe any type of resource provided by the container infrastructure. One - example implementation of extended resources is "Extended Resources" in case the container infrastructure - service is a Kubernetes® instance. - - MonitoringParameter: + type: string + description: Specifies the virtualisation environments (e.g. hypervisor) compatible with this software image. + description: "NOTE 1: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise. \nNOTE 2: The attribute may be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise. \nNOTE 3: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and may be present otherwise. \n" + TerminateAppInstanceOpConfig: type: object + description: 'This information element defines attributes that affect the invocation of the TerminateVnf operation. + + ' required: - - monitoringParameterId - - performanceMetric + - minGracefulTerminationTimeout properties: - monitoringParameterId: - type: string - description: Unique identifier of the monitoring parameter. - name: - type: string - description: Human readable name of the monitoring parameter. - performanceMetric: - type: string - description: Specifies the virtualised resource performance metric. - collectionPeriod: - type: string - description: An attribute that describes the periodicity at which to collect the performance information. - + minGracefulTerminationTimeout: + type: number + description: Minimum timeout value for graceful stop of a VNF instance. + maxRecommendedGracefulTerminationTimeout: + type: number + description: "Maximum recommended timeout value that can be needed to gracefully terminate a VNF instance of a particular type under certain conditions, such as maximum load condition. This is provided by VNF provider as information for the operator facilitating the selection of optimal timeout value. This value is not used as constraint. \n" + parameter: + type: array + items: + type: string + description: "Array of KVP requirements for VNF-specific parameters to be passed when invoking the TerminateVnf operation. See note. \n" VirtualComputeDescriptor: title: VirtualComputeDescriptor type: object required: - - virtualComputeDescId - - virtualMemory - - virtualCpu + - virtualComputeDescId + - virtualMemory + - virtualCpu properties: virtualComputeDescId: type: string - description: Unique identifier of this VirtualComputeDesc in the VNFD. + description: Unique identifier of this VirtualComputeDesc in the VNFD. logicalNode: type: array items: @@ -1621,32 +846,274 @@ components: type: array items: $ref: '#/components/schemas/BlockStorageData' + VirtualNetworkInterfaceRequirements: + type: object + properties: + name: + type: string + description: Provides a human readable name for the requirement. + description: + type: string + description: Provides a human readable description of the requirement. + standardizedNetworkInterfaceRequirements: + type: string + description: The requirements on standardized network interface capabilities, e.g. SR-IOV or secondary container cluster network interface deployment requirements.See note + networkInterfaceRequirements: + type: string + description: The additional network interface requirements beyond those specified in the standardizedNetworkInterfaceRequirements attribute.An element from an array of key-value pairs that articulate the network interface deployment requirements.See note. + nicIoRequirements: + items: + $ref: '#/components/schemas/LogicalNodeRequirements' + description: This references (couples) the CPD with any logical node I/O requirements (for network devices) that may have been created. Linking these attributes is necessary so that I/O requirements that need to be articulated at the logical node level can be associated with the network interface requirements associated with the CPD.See note + description: 'NOTE: At least one of the attributes "standardizedNetworkInterfaceRequirements", "networkInterfaceRequirements", "nicIoRequirements" shall be present - VirtualCpuData: + ' + AppPkgSubscriptionType: + title: AppPkgSubscriptionType + enum: + - AppPackageOnBoardingSubscription + - AppPackageChangeSubscription + - AppPackageDeletionSubscription + type: string + description: type of a subscription + KeyValuePairs: + type: object + additionalProperties: + type: object + ObjectStorageData: + type: object + properties: + maxSizeOfStorage: + type: number + description: Maximum size of virtualized storage resource in GB. + FileStorageData: type: object + properties: + sizeOfStorage: + type: number + description: Size of virtualized storage resource in GB. + fileSystemProtocol: + type: string + description: The shared file system protocol (e.g. NFS, CIFS). + intVirtualLinkDesc: + $ref: '#/components/schemas/VnfVirtualLinkDesc' + description: Reference of the internal VLD which this file storage connects to. + VnfVirtualLinkDesc: + type: object + properties: + virtualLinkDescId: + type: string + description: Unique identifier of this internal VLD in VNFD. + virtualLinkDescFlavour: + type: array + items: + $ref: '#/components/schemas/VirtualLinkDescFlavour' + description: Describes a specific flavour of the VL with specific bitrate requirements. + connectivityType: + $ref: '#/components/schemas/ConnectivityType' + description: See clause 7.1.7.3. + testAccess: + type: array + items: + type: string + description: Specifies test access facilities expected on the VL. + description: + type: string + description: Provides human-readable information on the purpose of the VL. + monitoringParameter: + type: array + items: + $ref: '#/components/schemas/MonitoringParameter' + description: Specifies the virtualised resource related performance metrics on VLD level to be tracked by the VNFM. + nfviMaintenanceInfo: + $ref: '#/components/schemas/NfviMaintenanceInfo' + description: Provides information on the rules to be observed when an instance based on this VnfVirtualLinkDesc is impacted during NFVI operation and maintenance. + externallyManaged: + type: string + enum: + - REQUIRED + - ALLOWED + default: ALLOWED + description: Specifies the intent of the VNF designer with respect to the internal VL instances created from this descriptor being externally managed. + ConnectivityType: + type: object + properties: + layerProtocol: + type: array + items: + type: string + description: Specifies the protocols that the VL uses. + enum: + - Ethernet + - MPLS + - ODU2 + - IPV4 + - IPV6 + - Pseudo-Wire + - Etc. + minItems: 1 + flowPattern: + type: string + description: Specifies the flow pattern of the connectivity (Line, Tree, Mesh, etc.). required: - - numVirtualCpu + - layerProtocol + QoS: + type: object properties: - cpuArchitecture: + latency: + type: number + description: Specifies the maximum latency in ms. + packetDelayVariation: + type: number + description: Specifies the maximum jitter in ms. + packetLossRatio: + type: number + description: Specifies the maximum packet loss ratio. + required: + - latency + - packetDelayVariation + VirtualLinkDescFlavour: + type: object + properties: + flavourId: type: string - description: CPU architecture type. Examples are x86, ARM. - numVirtualCpu: - type: integer - description: Number of virtual CPUs. - virtualCpuClock: + description: Identifies a flavour within a VnfVirtualLinkDesc. + qos: + $ref: '#/components/schemas/QoS' + description: QoS of the VL. + required: + - flavourId + NfviMaintenanceInfo: + type: object + properties: + impactNotificationLeadTime: type: number - description: Minimum virtual CPU clock rate (e.g. in MHz). - virtualCpuOversubscriptionPolicy: + description: The minimum notification lead time requested for upcoming impact of the virtualised resource or their group. + isImpactMitigationRequested: + type: boolean + description: Indicates if it is requested to provide virtualised resource(s) of the same characteristics as the impacted ones to compensate for the impact. + supportedMigrationType: + type: array + items: + type: string + enum: + - NO_MIGRATION + - OFFLINE_MIGRATION + - LIVE_MIGRATION + description: Specifies the allowed migration types in order of preference in case of an impact. + maxUndetectableInterruptionTime: + type: number + description: Specifies the maximum interruption time that can go undetected at the VNF level during live migration. + minRecoveryTimeBetweenImpacts: + type: number + description: Specifies the time required by the group to recover from an impact, indicating the minimum time between consecutive impacts of the group. + maxNumberOfImpactedInstances: + type: array + items: + $ref: '#/components/schemas/MaxNumberOfImpactedInstances' + description: Specifies the maximum number of instances that can be impacted simultaneously within the group of virtualised resources for different group sizes. + minNumberOfPreservedInstances: + type: array + items: + $ref: '#/components/schemas/MinNumberOfPreservedInstances' + description: Specifies the minimum number of instances which need to be preserved simultaneously within the group of virtualised resources for different group sizes. + MaxNumberOfImpactedInstances: + type: object + 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. + MinNumberOfPreservedInstances: + type: object + properties: + groupSize: + type: integer + description: Determines the size of the group for which the minNumberOfPreservedInstances is specified. + minNumberOfPreservedInstances: + type: integer + description: The minimum number of instances which need to be preserved simultaneously within the group of the specified size. + CategoryRef: + x-etsi-ref: 8.1.5.2 + type: object + properties: + href: + description: Reference of the catalogue. type: string - description: The CPU core oversubscription policy, e.g. the relation of virtual CPU cores to physical CPU cores/threads. - vduCpuRequirements: + id: + description: Unique identifier of the category. + type: string + name: + description: Name of the category. + type: string + version: + description: Name of the category. + type: string + required: + - href + - id + - name + - version + SerializerType: + x-etsi-ref: 8.1.6.3 + type: string + enum: + - JSON + - XML + - PROTOBUF3 + x-etsi-mec-extensible: true + x-etsi-mec-enumeration-table: + - value: JSON + description: Javascript object notation [9] + - value: XML + description: eXtensible Mark-up Language version 1.1 [10] + - value: PROTOBUF3 + description: Protocol buffers version 3 [i.3] + TransportTypes: + x-etsi-ref: 8.1.6.4 + type: string + enum: + - REST_HTTP + - MB_TOPIC_BASED + - MB_ROUTING + - MB_PUBSUB + - RPC + - RPC_STREAMING + - WEBSOCKET + description: The enumeration TransportType represents types of transports. + x-etsi-mec-extensible: true + x-etsi-mec-enumeration-table: + - value: REST_HTTP + description: RESTful API using HTTP (as defined in IETF RFC 9110 [11]). + - value: MB_TOPIC_BASED + description: Topic-based message bus which routes messages to receivers based on subscriptions, if a pattern passed on subscription matches the topic of the message. EXAMPLE MQTT (see [i.4]). + - value: MB_ROUTING + description: Routing-based message bus which routes messages to receivers based on subscriptions, if a key passed on subscription is equal to the key of the message. + - value: MB_PUBSUB + description: Publish-subscribe based message bus which distributes messages to all subscribers. + - value: RPC + description: Remote procedure call. EXAMPLE GRPC (see [i.5]). + - value: RPC_STREAMING + description: Remote procedure call supporting streams of requests and responses. EXAMPLE GRPC (see [i.5]). + - value: WEBSOCKET + description: Websockets as defined in IETF RFC 6455 [12]. + LogicalNodeRequirements: + type: object + required: + - id + properties: + id: + type: string + format: uuid + description: Identifies this set of logical node requirements + logicalNodeRequirementDetail: type: array + description: "The logical node-level compute, memory and I/O requirements. An array of key-value pairs that articulate the deployment requirements. This could include the number of CPU cores on this logical node, a memory configuration specific to a logical node (e.g. such as available in the Linux kernel via the libnuma library) or a requirement related to the association of an I/O device with the logical node. \n" items: - $ref: '#/components/schemas/KeyValuePairs' - description: Array of key-value pair requirements on the Compute (CPU) for the VDU. - virtualCpuPinning: - $ref: '#/components/schemas/VirtualCpuPinningData' - + type: string + format: not-specified BlockStorageData: type: object required: @@ -1666,17 +1133,34 @@ components: swImageDesc: $ref: '#/components/schemas/SwImageDesc' description: References the software image to be loaded on the VirtualStorage resource created based on this VirtualStorageDesc. Shall be absent when used for virtual disks. See note. - description: | - NOTE: This attribute shall not be present in a VirtualStorageDesc used in a VDU realized by one or a set of OS containers + description: 'NOTE: This attribute shall not be present in a VirtualStorageDesc used in a VDU realized by one or a set of OS containers + ' + Version: + type: object + required: + - srcVnfdId + - dstVnfdId + - srcFlavourId + properties: + srcVnfdId: + type: string + description: Identifier of the source VNFD and the source VNF package. See note 1. + dstVnfdId: + type: string + description: Identifier of the destination VNFD and the destination VNF package. See note 1. + srcFlavourId: + type: string + description: Identifier of the deployment flavour in the source VNF package for which this modification applies. See note 2. + description: "NOTE 1: Either the srcVnfdId or the dstVnfdId shall be equal to the vnfdId of the VNFD containing this version selector. \nNOTE 2: It is up to protocol design stage to decide whether there is further optimization potential to apply one modification for multiple srcFlavourIds.\n" SwImageDesc: type: object required: - - id - - name - - version - - containerFormat - - swImage + - id + - name + - version + - containerFormat + - swImage properties: id: type: string @@ -1716,16 +1200,12 @@ components: items: type: string description: Specifies the virtualisation environments (e.g. hypervisor) compatible with this software image. - description: | - NOTE 1: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise. - NOTE 2: The attribute may be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise. - NOTE 3: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and may be present otherwise. - + description: "NOTE 1: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise. \nNOTE 2: The attribute may be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise. \nNOTE 3: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and may be present otherwise. \n" ChecksumData: type: object required: - - algorithm - - hash + - algorithm + - hash properties: algorithm: type: string @@ -1733,24 +1213,31 @@ components: hash: type: string description: Contains the result of applying the algorithm indicated by the algorithm attribute to the data to which this ChecksumData refers. - description: | - NOTE: The algorithm attribute value shall be one of the Hash Function Textual Names present in [2]. - - VirtualCpuPinningData: + description: "NOTE: The algorithm attribute value shall be one of the Hash Function Textual Names present in [2]. \n" + VirtualCpuData: type: object + required: + - numVirtualCpu properties: - virtualCpuPinningPolicy: + cpuArchitecture: type: string - description: Indicates the policy for CPU pinning. - enum: - - STATIC - - DYNAMIC - virtualCpuPinningRule: + description: CPU architecture type. Examples are x86, ARM. + numVirtualCpu: + type: integer + description: Number of virtual CPUs. + virtualCpuClock: + type: number + description: Minimum virtual CPU clock rate (e.g. in MHz). + virtualCpuOversubscriptionPolicy: + type: string + description: The CPU core oversubscription policy, e.g. the relation of virtual CPU cores to physical CPU cores/threads. + vduCpuRequirements: type: array items: - type: string - description: List of rules that should be considered during the allocation of the virtual CPUs to logical CPUs in case of "STATIC" virtualCpuPinningPolicy. - + $ref: '#/components/schemas/KeyValuePairs' + description: Array of key-value pair requirements on the Compute (CPU) for the VDU. + virtualCpuPinning: + $ref: '#/components/schemas/VirtualCpuPinningData' VirtualMemoryData: type: object required: @@ -1761,10 +1248,13 @@ components: description: Amount of virtual memory in MB. virtualMemOversubscriptionPolicy: type: string - description: | - The memory core oversubscription policy in terms of virtual memory to physical memory + description: 'The memory core oversubscription policy in terms of virtual memory to physical memory + on the platform. The cardinality can be 0 during the allocation request, if no particular + value is requested. + + ' vduMemRequirements: type: array items: @@ -1776,7 +1266,6 @@ components: hugePagesRequirements: type: string description: Specifies requirements on the huge pages resources for the virtual memory. - RequestedAdditionalCapabilityData: type: object required: @@ -1798,644 +1287,1060 @@ components: description: Specifies the preferred version of the requested additional capability targetPerformanceParameters: type: array - description: Specifies specific attributes, dependent on the requested additional capability type. items: $ref: '#/components/schemas/KeyValuePairs' + OAuth2Info: + description: Parameters related to use of OAuth 2.0. Shall be present in case OAuth 2.0 (see IETF RFC 6749 [13]) is supported to secure the provision of the service over the transport. + type: object + properties: + grantTypes: + description: "List of supported OAuth 2.0 grant types. Each entry shall be one of the following permitted values: \u2022 OAUTH2_AUTHORIZATION_CODE (Authorization code grant type) \u2022 OAUTH2_IMPLICIT_GRANT (Implicit grant type) \u2022 OAUTH2_RESOURCE_OWNER (Resource owner password credentials grant type) \u2022 OAUTH2_CLIENT_CREDENTIALS (Client credentials grant type) Only the value \"OAUTH2_CLIENT_CREDENTIALS\" is supported in the present document." + type: array + minItems: 0 + items: + type: string + enum: + - SEE_DESCRIPTION + tokenEndpoint: + description: The token endpoint. Shall be present unless the grant type is OAUTH2_IMPLICIT_GRANT. + type: string + format: uri + required: + - grantTypes + SecurityInfo: + x-etsi-ref: 8.1.5.4 + type: object + properties: + oAuth2Info: + $ref: '#/components/schemas/OAuth2Info' + (extensions): + description: Extensions for alternative transport mechanisms. These extensions depend on the actual transport, and are out of scope of the present document. For instance, such extensions may be used to signal the necessary parameters for the client to use TLS-based authorization defined for alternative transports (see ETSI GS MEC 009 [5] for more information). + AppD: + x-etsi-ref: 6.2.1.2 + type: object + properties: + appDId: + description: "Identifier of this MEC application descriptor. This attribute shall be globally unique. See note\_1." + type: string + appName: + description: Name to identify the MEC application. + type: string + appProvider: + description: Provider of the application and of the AppD. + type: string + appSoftVersion: + description: Identifies the version of software of the MEC application. + type: string + appDVersion: + description: Identifies the version of the application descriptor. + type: string + mecVersion: + description: 'Identifies version(s) of MEC system compatible with the MEC application described in this version of the AppD. - KeyValuePairs: - description: | - This data type represents a list of key-value pairs. The order of the pairs in the list is not - significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with - the provisions defined in clause 4 of IETF RFC 8259. + The value shall be formatted as comma-separated list of strings. Each entry shall have the format .. where , and are decimal numbers representing the version of the present document. + + Whitespace between list entries shall be trimmed before validation.' + type: string + appInfoName: + description: Human readable name for the MEC application. + type: string + appDescription: + description: Human readable description of the MEC application. + type: string + virtualComputeDescriptor: + description: Describes CPU and memory requirements, as well as optional additional requirements, such as disk and acceleration related capabilities, of the single VM used to realize this MEC application. See note 5. + $ref: '#/components/schemas/VirtualComputeDescriptor' + 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 notes 5 and 7.' + type: array + minItems: 0 + items: + $ref: '#/components/schemas/OsContainerDescriptor' + swImageDescriptor: + description: 'Describes the descriptors of the software image to be used by the virtualisation container used to realize this MEC application. + + See note 5.' + type: array + minItems: 1 + items: + $ref: '#/components/schemas/SwImageDescriptor' + virtualStorageDescriptor: + description: Defines descriptors of virtual storage resources to be used by the MEC application. + type: array + minItems: 0 + items: + $ref: '#/components/schemas/VirtualStorageDescriptor' + appExtCpd: + description: Describes external interface(s) exposed by this MEC application. See note 4. + type: array + minItems: 1 + items: + $ref: '#/components/schemas/AppExternalCpd' + appServiceRequired: + description: Describes services a MEC application requires to run. + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ServiceDependency' + appServiceOptional: + description: Describes services a MEC application may use if available. + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ServiceDependency' + appServiceProduced: + description: Describes services a MEC application is able to produce to the platform or other MEC applications. Only relevant for service-producing apps. + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ServiceDescriptor' + appFeatureRequired: + description: Describes features a MEC application requires to run. + type: array + minItems: 0 + items: + $ref: '#/components/schemas/FeatureDependency' + appFeatureOptional: + description: Describes features a MEC application may use if available. + type: array + minItems: 0 + items: + $ref: '#/components/schemas/FeatureDependency' + transportDependencies: + description: 'Transports, if any, that this application requires to be provided by the platform. These transports will be used by the application to deliver services provided by this application. Only relevant for service-producing apps. + + See note 2.' + type: array + minItems: 0 + items: + $ref: '#/components/schemas/TransportDependency' + appTrafficRule: + description: Describes traffic rules the MEC application requires. + type: array + minItems: 0 + items: + $ref: '#/components/schemas/TrafficRuleDescriptor' + appDNSRule: + description: Describes DNS rules the MEC application requires. + type: array + minItems: 0 + items: + $ref: '#/components/schemas/DNSRuleDescriptor' + appLatency: + description: Describes the maximum latency tolerated by the MEC application. + $ref: '#/components/schemas/LatencyDescriptor' + terminateAppInstanceOpConfig: + description: Configuration parameters for the Terminate application instance operation. + $ref: '#/components/schemas/TerminateAppInstanceOpConfig' + changeAppInstanceStateOpConfig: + description: Configuration parameters for the change application instance state operation. + $ref: '#/components/schemas/ChangeAppInstanceStateOpConfig' + userContextTransferCapability: + description: If the application supports the user context transfer capability, this attribute shall be included. + $ref: '#/components/schemas/UserContextTransferCapability' + appNetworkPolicy: + description: If present, it represents the application network policy of carrying the application traffic. + $ref: '#/components/schemas/AppNetworkPolicy' + mciopId: + description: Identifies the MCIOP in the application package, used in containerized workload management, when the application is realized by a set of OS containers. See note 7. + type: string + mcioIdentificationData: + description: Name and type of the Managed Container Infrastructure Object (MCIO) that realizes this application. It allows the VNFM to identify the MCIO e.g. when querying the Container Infrastructure Service Management (CISM). See note 7. It shall be present when the application is realized by one or a set of OS containers and shall be absent otherwise. + $ref: '#/components/schemas/McioIdentificationData' + logicalNode: + description: 'The logical node requirements. + + See notes 6 and 7.' + type: array + minItems: 0 + items: + $ref: '#/components/schemas/LogicalNodeRequirements' + requestAdditionalCapabilities: + description: "Specifies requirements for additional capabilities. These can be for a range of purposes. One example is acceleration related capabilities. \nSee notes 6 and 7." + type: array + minItems: 0 + items: + $ref: '#/components/schemas/RequestedAdditionalCapabilityData' + mcioConstraintParams: + description: "The parameter names for constraints expected to be assigned to MCIOs realizing this application.\nThe value specifies the standardized semantical context of the MCIO constraints and the parameter names for the MCIO constraints in the MCIO declarative descriptor.\nThe mcioConstraintParams attribute shall have one of the following values, expressing the associated semantical context.\nVALUES:\nlocalAffinityCisNode\nnodeAdditionalCapabilitySsd\nnodeAdditionalCapabilityDpdk\nnodeAdditionalCapabilitySriov\nnodeAdditionalCapabilityGpu\nnodeAdditionalCapabilityFpga\nnodeAdditionalCapabilityCpuPin\nnodeCapabilityLogicalNuma\nnodePool\nFor the associated semantical context of the values, refer to the description under the table\_7.1.6.2.2-1 of ETSI GS NFV IFA 011 [1].\nSee note 7." + type: array + minItems: 0 + items: + type: string + required: + - appDId + - appName + - appProvider + - appSoftVersion + - appDVersion + - mecVersion + - appDescription + - swImageDescriptor + - appExtCpd + description: "|-\n NOTE 1:\tThe appDId shall be used as the unique identifier of the application package that contains this AppD.\nNOTE 2:\tThis attribute indicates groups of transport bindings which a service-producing MEC application requires to be supported by the platform in order to be able to produce its services. At least one of the indicated groups needs to be supported to fulfil the requirements.\nNOTE 3:\tThe support of application descriptor containing descriptions of multiple virtualisation containers and/or application software images is out of scope of the present document.\nNOTE 4:\tExternal interfaces are used to connect to e.g. other MEC applications, MEC services, UEs and also MEC platform and OSS.\nNOTE 5:\tOnly one of virtualComputeDescriptor or osContainerDescriptor shall be present. If virtualComputeDescriptor presents, only a single swImageDescriptor shall be provided. \nNOTE 6:\tIf the AppD includes virtualComputeDesc, then logicalNode and requestedAdditionalCapabilites shall not be present.\nNOTE 7:\tThis attribute reflects the ETSI NFV interpretation of the cloud native workloads." + AppExternalCpd: + x-etsi-ref: 6.2.1.6 + type: object + properties: + virtualNetworkInterfaceRequirements: + description: Specifies requirements on a virtual network interface realizing the CPs instantiated from this CPD. See note 1. + type: array + minItems: 0 + items: + $ref: '#/components/schemas/VirtualNetworkInterfaceRequirements' + additionalServiceData: + description: Additional service identification data of the external CP. + type: array + minItems: 0 + items: + $ref: '#/components/schemas/AdditionalServiceData' + inherited_attributes: + description: All attributes inherited from Cpd. See note 2. + type: object + required: + - inherited_attributes + description: "|-\n NOTE 1:\tAn AppD conformant to the present document shall not specify \"virtualNetworkInterfaceRequirements\" in AppExternalCpd corresponding to primary container cluster network interfaces.\nNOTE 2:\tFor CPs exposed by MEC Applications realized only by one or set of OS containers and used by the OS containers to connect to the primary container cluster external network, the ability to configure virtualised resources based on cpRole and trunkMode attributes might not be supported by all container technologies." + ServiceDescriptor: + x-etsi-ref: 6.2.1.7 + type: object + properties: + serName: + description: The name of the service, for example, RNIS, LocationService, etc. + type: string + serCategory: + description: A Category reference of the service, defined in ETSI GS MEC 011 [17]. + $ref: '#/components/schemas/CategoryRef' + version: + description: The version of the service. + type: string + transportsSupported: + type: array + items: + $ref: '#/components/schemas/TransportsSupported' + required: + - serName + - version + FeatureDependency: + x-etsi-ref: 6.2.1.8 + type: object + properties: + featureName: + description: The name of the feature, for example, UserApps, UEIdentity, etc. + type: string + version: + description: The version of the feature. + type: string + required: + - featureName + - version + TrafficRuleDescriptor: + x-etsi-ref: 6.2.1.9 + type: object + properties: + trafficRuleId: + description: Identifies the traffic rule. + type: string + filterType: + type: string + enum: + - SEE_DESCRIPTION + description: 'Definition of filter type: per FLOW or PACKET + + If it is per FLOW, the filter matches upstream (e.g. UE->EPC) packets and downstream (e.g. EPC->UE) packets are handled by the same context.' + priority: + description: "Priority of this traffic rule within the range 0 to 255. If traffic rule conflicts, the one with higher priority take precedence. See note\_1." + type: integer + trafficFilter: + description: The filter used to identify specific flow/packets that need to be handled by the MEC host. + type: array + minItems: 1 + items: + $ref: '#/components/schemas/TrafficFilter' + action: + type: string + enum: + - SEE_DESCRIPTION + description: 'Identifies the action of the MEC host data plane, when a packet matches the trafficFilter, the example actions include: + + DROP, + + FORWARD_DECAPSULATED, + + FORWARD_ENCAPSULATED, + + PASSTHROUGH, + + DUPLICATE_DECAPSULATED, + + DUPLICATE_ENCAPSULATED ' + dstInterface: + description: Describes the destination interface information. If the action is FORWARD_DECAPSULATED, FORWARD_ENCAPSULATED or PASSTHROUGH, one value shall be provided. If the action is DUPLICATE_DECAPSULATED or DUPLICATE_ENCAPSULATED, two values shall be provided. See note 2. If the action is DROP, no value shall be provided. + $ref: '#/components/schemas/InterfaceDescriptor' + required: + - trafficRuleId + - filterType + - priority + - trafficFilter + - action + description: "|-\n NOTE 1:\tValue indicates the priority in descending order, i.e. with 0 as the highest priority and 255 as the lowest priority.\nNOTE 2:\tSome applications (like inline/tap) require two interfaces. The first interface in the case of inline/tap is on the client (e.g. UE) side and the second on the core network (e.g. EPC) side." + TrafficFilter: + x-etsi-ref: 6.2.1.10 + type: object + properties: + srcAddress: + description: 'An IP address or a range of IP addresses. + + For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses. + + For IPv6, the IP address could be an IP prefix, or a range of IP prefixes.' + type: array + minItems: 0 + items: + type: string + dstAddress: + description: 'An IP address or a range of IP addresses. + + For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses. + + For IPv6, the IP address could be an IP prefix, or a range of IP prefixes.' + type: array + minItems: 0 + items: + type: string + srcPort: + description: A port or a range of ports. + type: array + minItems: 0 + items: + type: string + dstPort: + description: A port or a range of ports. + type: array + minItems: 0 + items: + type: string + protocol: + description: Specify the protocol of the traffic filter. + type: array + minItems: 0 + items: + type: string + tag: + description: Used for tag based traffic rule. + type: array + minItems: 0 + items: + type: string + uri: + description: An URI label, in application layer, i.e. in HTTP message, is used to filter the traffic. + type: array + minItems: 0 + items: + type: string + packetLabel: + description: A customized packet label in network layer, as defined by the owner of the MEC platform, is used to filter the traffic. + type: array + minItems: 0 + items: + type: string + srcTunnelAddress: + description: Used for GTP tunnel based traffic rule. + type: array + minItems: 0 + items: + type: string + tgtTunnelAddress: + description: Used for GTP tunnel based traffic rule. + type: array + minItems: 0 + items: + type: string + srcTunnelPort: + description: Used for GTP tunnel based traffic rule. + type: array + minItems: 0 + items: + type: string + dstTunnelPort: + description: Used for GTP tunnel based traffic rule. + type: array + minItems: 0 + items: + type: string + qCI: + description: Used to match all packets that have the same QCI. + type: integer + dSCP: + description: Used to match all IPv4 packets that have the same DSCP. + type: integer + tC: + description: Used to match all IPv6 packets that have the same TC. + type: integer + InterfaceDescriptor: + x-etsi-ref: 6.2.1.11 + type: object + properties: + interfaceType: + type: string + enum: + - SEE_DESCRIPTION + description: 'Type of interface: TUNNEL, MAC, IP, etc.' + tunnelInfo: + description: Included only if the destination address type is tunnel. + $ref: '#/components/schemas/TunnelInfo' + srcMACAddress: + description: If the interface type is MAC, the source address identifies the MAC address of the interface. + type: string + dstMACAddress: + description: If the interface type is MAC, the destination address identifies the MAC address of the destination. Only used for dstInterface. + type: string + dstIPAddress: + description: If the interface type is IP, the destination address identifies the IP address of the destination. Only used for dstInterface. + type: string + required: + - interfaceType + TunnelInfo: + x-etsi-ref: 6.2.1.12 type: object properties: - key: + tunnelType: + type: string + enum: + - SEE_DESCRIPTION + description: 'Type of tunnel: GTP-U, GRE, etc.' + tunnelDstAddress: + description: Destination address of the tunnel. type: string - value: + tunnelSrcAddress: + description: Source address of the tunnel. type: string - - LogicalNodeRequirements: - type: object + tunnelSpecificData: + description: Parameters specific to the tunnel. + type: object required: - - id + - tunnelType + - tunnelDstAddress + - tunnelSrcAddress + DNSRuleDescriptor: + x-etsi-ref: 6.2.1.13 + type: object properties: - id: + dnsRuleId: + description: Identifies the DNS Rule type: string - format: uuid - description: Identifies this set of logical node requirements - logicalNodeRequirementDetail: - type: array - description: > - The logical node-level compute, memory and I/O requirements. An array of key-value pairs - that articulate the deployment requirements. This could include the number of CPU cores on - this logical node, a memory configuration specific to a logical node (e.g. such as available - in the Linux kernel via the libnuma library) or a requirement related to the association of - an I/O device with the logical node. - items: - type: string - format: not-specified - - AppExternalCpd: - title: AppExternalCpd + domainName: + description: FQDN of the DNS rule + type: string + ipAddressType: + type: string + enum: + - IP_V4 + description: 'Specifies the IP address type, value: IP_V6, IP_V4' + ipAddress: + description: IP address given by the DNS rule + type: string + ttl: + description: Time-to-live value + type: integer + required: + - dnsRuleId + - domainName + - ipAddressType + - ipAddress + LatencyDescriptor: + x-etsi-ref: 6.2.1.14 + type: object + properties: + maxLatency: + description: The value of the maximum latency in nano seconds tolerated by the MEC application. See note. + type: integer + format: uint32 + required: + - maxLatency + description: "|-\n NOTE:\tThe latency is considered to be the one way end-to-end latency between the client application (e.g. in a device) and the service (i.e. the MEC application instance)." + ServiceDependency: + x-etsi-ref: 6.2.1.17 type: object properties: - inheritedAttributes: + serName: + description: The name of the service, for example, RNIS, LocationService, AMS, etc. type: string - description: All attributes inherited from Cpd. See note 2. - virtualNetworkInterfaceRequirements: + serCategory: + description: A Category reference of the service. + $ref: '#/components/schemas/CategoryRef' + version: + description: The version of the service. + type: string + serTransportDependencies: + description: Indicates transport and serialization format dependencies of consuming the service. Defaults to REST + JSON if absent. See note. type: array + minItems: 0 items: - $ref: '#/components/schemas/VirtualNetworkInterfaceRequirements' - description: Specifies requirements on a virtual network interface realizing the CPs instantiated from this CPD. See note 1. - additionalServiceData: - type: array - items: - $ref: '#/components/schemas/AdditionalServiceData' - description: Additional service identification data of the external CP. For the definition of AdditionalServiceData, refer to clause 7.1.18.3 of ETSI GS NFV IFA 011 [1]. - description: | - The AppExternalCpd data type supports the specification of MEC application requirements related to external - connection point. - - NOTE 1: An AppD conformant to the present document shall not specify "virtualNetworkInterfaceRequirements" - in AppExternalCpd corresponding to primary container cluster network interfaces. - - NOTE 2: For CPs exposed by MEC Applications realized only by one or set of OS containers and used by - the OS containers to connect to the primary container cluster external network, the ability to configure - virtualised resources based on cpRole and trunkMode attributes might not be supported by all container technologies. + $ref: '#/components/schemas/TransportDependency' + requestedPermissions: + description: 'Requested permissions regarding the access of the application to the service. See clause 7.2 of ETSI GS MEC 009 [4]. - AdditionalServiceData: - type: object + The format of this attribute is left for the data model design stage.' + type: array + minItems: 0 + items: + $ref: '#/components/schemas/Not_specified' required: - - portData + - serName + - version + description: "|-\n NOTE:\tThis attribute indicates groups of transport bindings that a service-consuming MEC application supports for the consumption of the MEC service defined by this ServiceDependency structure. If at least one of the indicated groups is supported by the service it may be consumed by the application." + TransportDependency: + x-etsi-ref: 6.2.1.18 + type: object properties: - portData: + transport: + description: Information about the transport in this transport binding. + $ref: '#/components/schemas/TransportDescriptor' + serializers: + description: Information about the serializers in this transport binding, as defined in the SerializerType type in ETSI GS MEC 011 [17]. Support for at least one of the entries is required in conjunction with the transport. type: array + minItems: 1 items: - $ref: '#/components/schemas/ServicePortData' + $ref: '#/components/schemas/SerializerType' + labels: + description: Set of labels that allow to define groups of transport bindings. The mechanism of the grouping is defined below this table. + type: array minItems: 1 - serviceData: - type: string - description: Service matching information exposed by the VirtualCp. See note. - description: | - This information element describes the additional service data of the VirtualCp used to expose - properties of the VirtualCp to NFV-MANO. - - If the VirtualCp is exposed by a VNF component realized by one or a set of OS containers, - the properties are mirrored from the declarative descriptor of the corresponding MCIO where available. - - NOTE: This attribute shall only be present if additional information is needed to identify the - service termination within the VNF, such as for example a url path information in an HTTP request - required to allow a single VirtualCp IP address to be used for several HTTP based services that - use the same portnumber. - - ServicePortData: - type: object + items: + type: string required: - - name - - protocol - - port - - portConfigurable + - transport + - serializers + - labels + TransportDescriptor: + x-etsi-ref: 6.2.1.19 + type: object properties: name: + description: The name of this transport. type: string - description: The name of the port exposed by the VirtualCp. + description: + description: Human-readable description of this transport. + type: string + type: + description: Type of the transport, as defined in the TransportTypes type in ETSI GS MEC 011 [17]. + $ref: '#/components/schemas/TransportTypes' protocol: + description: The name of the protocol used. Shall be set to "HTTP" for a REST API. type: string - enum: - - TCP - - UDP - - SCTP - description: The L4 protocol for this port exposed by the VirtualCp. - port: - type: integer - description: The L4 port number exposed by the VirtualCp. - portConfigurable: + version: + description: The version of the protocol used. + type: string + security: + description: Information about the security used by the transport in ETSI GS MEC 011 [17]. + $ref: '#/components/schemas/SecurityInfo' + implSpecificInfo: + description: Additional implementation specific details of the transport. + type: object + required: + - name + - type + - protocol + - version + - security + UserContextTransferCapability: + x-etsi-ref: 6.2.1.20 + type: object + properties: + statefulApplication: + description: 'If the application is stateful, this attribute shall be set to true. + + Otherwise, this attribute shall be set to false. ' type: boolean - description: Specifies whether the port attribute value is allowed to be configurable. + userContextTransferSupport: + description: 'This attribute shall be present if the application is stateful and shall be absent otherwise. - VirtualNetworkInterfaceRequirements: + + If the application supports the user context transfer, this attribute shall be set to true. + + Otherwise this attribute shall be set to false.' + type: boolean + required: + - statefulApplication + AppNetworkPolicy: + x-etsi-ref: 6.2.1.21 type: object properties: - name: + steeredNetwork: + $ref: '#/components/schemas/SteeredNetwork' + required: + - steeredNetwork + description: "|-\n NOTE:\tThe network types may depend on the availability of deployed access networks of MEC system." + CreateAppPkg: + x-etsi-ref: 6.2.3.2 + type: object + properties: + appPkgName: + description: Name of the application package to be onboarded. type: string - description: Provides a human readable name for the requirement. - description: + appPkgVersion: + description: 'Version of the application package to be onboarded. + + The appPkgName with appPkgVersion can be used to uniquely identify the application package.' type: string - description: Provides a human readable description of the requirement. - standardizedNetworkInterfaceRequirements: + appProvider: + description: The provider's name of the application package to be onboarded. type: string - description: The requirements on standardized network interface capabilities, e.g. SR-IOV or secondary container cluster network interface deployment requirements.See note - networkInterfaceRequirements: + checksum: + description: Checksum of the onboarded application package. + $ref: '#/components/schemas/Checksum' + userDefinedData: + description: User defined data for the application package. + type: object + appPkgPath: + description: Address information of the application package. See note. type: string - description: The additional network interface requirements beyond those specified in the standardizedNetworkInterfaceRequirements attribute.An element from an array of key-value pairs that articulate the network interface deployment requirements.See note. - nicIoRequirements: - items: - $ref: '#/components/schemas/LogicalNodeRequirements' - description: This references (couples) the CPD with any logical node I/O requirements (for network devices) that may have been created. Linking these attributes is necessary so that I/O requirements that need to be articulated at the logical node level can be associated with the network - interface requirements associated with the CPD.See note - description: | - NOTE: At least one of the attributes "standardizedNetworkInterfaceRequirements", "networkInterfaceRequirements", "nicIoRequirements" shall be present - - AppPkgInfo: - title: AppPkgInfo + format: uri required: - - id - - appDId - - appName - - appSoftwareVersion - - appDVersion + - appPkgName + - appPkgVersion - checksum - - softwareImages - - onboardingState - - operationalState - - usageState - - mecInfo - - _links + - appPkgPath + description: "|-\n NOTE:\tIt is for further study how to convey appPkgPath, and align with ETSI GS NFV-SOL 005 [i.7]." + AppPkgInfo: + x-etsi-ref: 6.2.3.3 type: object properties: id: + description: Identifier of the application package resource. This identifier is allocated by the MEO. type: string - description: Identifier of the onboarded application package. appDId: + description: 'The application descriptor identifier. It is managed by the application provider to identify the application package and the application descriptor in a globally unique way. + + It is copied from the AppD of the onboarded application package.' type: string - description: Identifier of this MEC application descriptor. This attribute shall be globally unique. appProvider: + description: The provider's name of the onboarded application package. type: string - description: Provider of the application and of the AppD. appName: + description: Name of the onboarded application. type: string - description: Name to identify the MEC application. appSoftwareVersion: - type: string description: Software version of the application. This is updated when there is any change to the software in the onboarded application package. + type: string appDVersion: + description: Version of the application descriptor. type: string - description: Identifies the version of the application descriptor. checksum: + description: Checksum of the onboarded application package. $ref: '#/components/schemas/Checksum' signingCertificate: - type: string description: The singleton signing certificate if it is included as a file in the AppD archive. + type: string softwareImages: - description: Information of application software image in application package. Type is TBD. See note 1. + description: Information of application software image in application package. See note 1. type: array + minItems: 1 items: - type: string - format: not-specified + $ref: '#/components/schemas/AppPkgSWImageInfo' additionalArtifacts: - description: | - Additional information of application package artifacts that are not application - software images. Type is TBD. See note 2. + description: Additional information of application package artifacts that are not application software images. See note 2. type: array + minItems: 0 items: - type: string - format: not-specified + $ref: '#/components/schemas/AppPkgArtifactInfo' onboardingState: - $ref: '#/components/schemas/OnboardingState' + type: string + enum: + - SEE_DESCRIPTION + description: 'Onboarding state of application package: + + CREATED: The application package resource has been created. + + UPLOADING: The associated application package content is being uploaded. + + PROCESSING: The associated application package content is being processed, e.g. validation. + + ONBOARDED: The associated application package content is successfully onboarded.' operationalState: - $ref: '#/components/schemas/AppPkg.OperationalState' + type: string + enum: + - SEE_DESCRIPTION + description: 'Operational state of the onboarded application package: + + ENABLED: the application package can be used for instantiation of new application instances. + + DISABLED: the application package cannot be used for further application instantiation requests.' usageState: - $ref: '#/components/schemas/UsageState' + type: string + enum: + - SEE_DESCRIPTION + description: 'Usage state of the onboarded instance of the application package: + + IN_USE: application instances instantiated from this package exist. + + NOT_IN_USE: No application instance instantiated from this package exist.' mecInfo: - type: array description: The MEC version that compatible with this application. This information is copied from the AppD. + type: array + minItems: 1 items: type: string - onBoardingFailureDetails: - description: Failure details of current onboarding procedure - $ref: '#/components/schemas/ProblemDetails' userDefinedData: - $ref: '#/components/schemas/KeyValuePairs' - description: > - "'This data type represents a list of key-value pairs. The order of the pairs - in the list is not significant. In JSON, a set of key-value pairs is represented as an object. - It shall comply with the provisions defined in clause 4 of IETF RFC 8259'" + description: User defined data for the application package. + type: object + onboardingFailureDetails: + description: Failure details of current onboarding procedure. See ETSI GS MEC 009 [4]. + $ref: '#/components/schemas/ProblemDetails' _links: - $ref: '#/components/schemas/AppPkgInfo.links' - description: | - The data type AppPkgInfo represents the parameters for an application package resource - NOTE 1: The data type of application software image information data model is related to virtualisation method and - needs for further study. - NOTE 2: The data type of additional information of application package artifacts is not specified in the present - document. - NOTE 3: This attribute applies only for the MEAO - - AppPkgInfoModifications: - title: AppPkgInfoModifications - required: - - OperationalState - type: object - properties: - OperationalState: - $ref: '#/components/schemas/OperationalState2' - description: "'The data type represents the operational state for an application package resource'" - - AppPkg.OperationalState: - title: AppPkg.OperationalState - enum: - - ENABLED - - DISABLED - type: string - description: | - Operational state of the onboarded application package: - ENABLED: the application package can be used for instantiation of new application instances. - DISABLED: the application package cannot be used for further application instantiation requests. - examples: - - ENABLED - - OnboardingState: - title: OnboardingState - enum: - - CREATED - - UPLOADING - - PROCESSING - - ONBOARDED - type: string - description: Onboarding state of application package - examples: - - CREATED - UsageState: - title: UsageState - enum: - - IN_USE - - NOT_IN_USE - type: string - description: Usage state of the onboarded instance of the application package - examples: - - IN_USE - AppPkgInfo.links: - title: AppPkgInfo.links - required: - - self - - appD - - appPkgContent - type: object - properties: - self: - $ref: '#/components/schemas/LinkType' - appD: - $ref: '#/components/schemas/LinkType' - appPkgContent: - $ref: '#/components/schemas/LinkType' - vnfPkgInfo: - $ref: '#/components/schemas/LinkType' - description: Links to resources related to this resource. - - AppPkgNotification: - title: AppPkgNotification + $ref: '#/components/schemas/_links' required: - id - - notificationType - - subscriptionId - - timeStamp - - appPkgId - appDId + - appName + - appSoftwareVersion + - appDVersion + - checksum + - softwareImages + - onboardingState - operationalState + - usageState + - mecInfo - _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: - $ref: '#/components/schemas/AppPkg.NotificationType' - subscriptionId: - type: string - description: Identifier of the subscription related to this notification. - timeStamp: - $ref: '#/components/schemas/TimeStamp' - appPkgId: - type: string - description: Identifier of the onboarded application package. - appDId: - type: string - description: Identifier of this MEC application descriptor. This attribute shall be globally unique. - operationalState: - $ref: '#/components/schemas/OperationalState' - _links: - $ref: '#/components/schemas/AppPkgNotification.links' - description: "'This data type represents an application package management notification for informing the subscribers about onboarding application package resources. The notification is triggered when a new application package is onboarded'" - - AppPkg.NotificationType: - title: AppPkg.NotificationType - enum: - - AppPackageOnBoarded - - AppPacakgeEnabled - - AppPacakgeDisabled - - AppPackageDeleted - type: string - description: Discriminator for the different notification types - examples: - - AppPackageOnBoarded - AppPkgNotification.links: - title: AppPkgNotification.links - required: - - subscription - type: object - properties: - subscription: - $ref: '#/components/schemas/LinkType' - description: Links to resources related to this resource. - + description: "|-\n NOTE 1:\tThe data type of application software image information data model is related to virtualisation method and needs for further study.\nNOTE 2:\tThe data type of additional information of application package artifacts is not specified in the present document.\nNOTE 3:\tThis attribute applies only for the MEAO." AppPkgSubscriptionInfo: - title: AppPkgSubscriptionInfo - required: - - id - - subscriptionType - - callbackUri - - _links - type: object - properties: - id: - type: string - description: Identifier of the subscription to application package notification. - subscriptionType: - description: Type of subscription. - $ref: '#/components/schemas/AppPkgSubscriptionType' - callbackUri: - type: string - description: The URI of the endpoint for the notification to be sent to. - _links: - $ref: '#/components/schemas/AppPkgSubscriptionInfo.links' - description: "'The data type represents a subscription to notification of application package management for the onboarding, or operational state change of application package'" - - AppPkgSubscriptionType: - title: AppPkgSubscriptionType - enum: - - AppPackageOnBoardingSubscription - - AppPackageChangeSubscription - - AppPackageDeletionSubscription - type: string - description: type of a subscription. - examples: - - AppPackageOnBoardingSubscription - - AppPkgSubscriptionInfo.links: - title: AppPkgSubscriptionInfo.links - required: - - self + x-etsi-ref: 6.2.3.4 type: object properties: - self: - $ref: '#/components/schemas/LinkType' - description: Links to resources related to this resource. - - AppPkgSubscriptionLinkList: - title: AppPkgSubscriptionLinkList + id: + description: Identifier of the subscription to application package notification. + type: string + subscriptionType: + description: Type of subscription. + $ref: '#/components/schemas/AppPkgSubscriptionType' + callbackUri: + description: The URI of the endpoint for the subscription related notification to be sent to. + type: string + format: uri + _links: + $ref: '#/components/schemas/_links1' required: + - id + - subscriptionType + - callbackUri - _links + AppPkgSubscriptionLinkList: + x-etsi-ref: 6.2.3.5 type: object properties: _links: - $ref: '#/components/schemas/AppPkgSubscriptionLinkList.links' - description: "'The data type represents a subscription link list of notification on application package management'" - - AppPkgSubscriptionLinkList.links: - title: AppPkgSubscriptionLinkList.links + $ref: '#/components/schemas/_links2' required: - - self + - _links + AppPkgNotification: + x-etsi-ref: 6.2.3.6 type: object properties: - self: - $ref: '#/components/schemas/LinkType' - subscriptions: - type: array - items: - $ref: '#/components/schemas/Subscriptions.AppPkgSubscription' - description: '' - description: Links to resources related to this resource. + id: + 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. + type: string + notificationType: + description: 'Discriminator for the different notification types: - Subscriptions.AppPkgSubscription: - title: Subscriptions.AppPkgSubscription - required: - - href - - subscriptionType - type: object - properties: - href: + "AppPackageOnBoarded": notification of the new onboarded application package. + + "AppPackageEnabled": notification of the operational state change of onboarded application package. + + "AppPackageDisabled": notification of the onboarded application package disabled. + + "AppPackageDeleted": notification of the application package deleted.' type: string - description: The URI referring to the subscription. - subscriptionType: - $ref: '#/components/schemas/AppPkgSubscriptionType' - description: "'The data type represents the input parameters of \"subscription operation\" to notification of application package management for the onboarding, or operational state change of application package.'" + subscriptionId: + description: Identifier of the subscription to this notification. + type: string + timeStamp: + description: Date and time of the notification generation. + $ref: '#/components/schemas/TimeStamp' + appPkgId: + description: Identifier of the onboarded application package. + type: string + appDId: + description: The application descriptor identifier identifies the application package and the application descriptor in a globally unique way. + type: string + operationalState: + type: string + enum: + - SEE_DESCRIPTION + description: 'Operational state of the application package: - AppPkgSubscription: - title: AppPkgSubscription + ENABLED: the application package can be used for instantiation of new application instances. + + DISABLED: the application package cannot be used for further application instantiation requests.' + _links: + $ref: '#/components/schemas/_links3' required: - - callbackUri - - subscriptionType + - id + - notificationType + - subscriptionId + - timeStamp + - appPkgId + - appDId + - operationalState + - _links + AppPkgSubscription: + x-etsi-ref: 6.2.3.7 type: object properties: callbackUri: + description: The URI of the endpoint for the subscription related notification to be sent to. type: string - description: The URI of the endpoint for the notification to be sent to. + format: uri subscriptionType: + description: Type of the subscription. $ref: '#/components/schemas/AppPkgSubscriptionType' appPkgFilter: + description: The attribute-based filter is to filter application packages on which the query applies. type: array + minItems: 0 items: $ref: '#/components/schemas/AppPkgFilter' - description: The attribute-based filter is to filter application packages on which the query applies - description: "'The data type represents the input parameters of \"subscription operation\" to notification of application package management for the onboarding, or operational state change of application package.'" - + required: + - callbackUri + - subscriptionType + AppPkgInfoModifications: + x-etsi-ref: 6.2.3.8 + type: object + properties: + operationalState: + type: string + enum: + - SEE_DESCRIPTION + description: "New value of the \"operationalState\" attribute of the \"OnboardedAppPkgInfo\" structure.\n\nPermitted values \nDISABLED: to disable the individual application package.\nENABLED: to enable the individual application package." + required: + - operationalState AppPkgFilter: - title: AppPkgFilter + x-etsi-ref: 6.2.3.10 type: object properties: appPkgInfoId: + description: Match the application package identifier which is allocated by the MEO. See note. type: string - description: Match the application package identifier which is allocated by the MEO. The attributes "appPkgInfoId ", and "appDId" are alternatives to reference particular application package in a filter. see note. appDId: + description: Match the application descriptor identifier which is allocated by the application provider. See note. type: string - description: Match the application descriptor identifier which is allocated by the application provider. The attributes "appPkgInfoId ", and "appDId" are alternatives to reference particular application package in a filter. See note. appProvider: - type: string description: Match the provider's name of the onboarded application. - appName: type: string + appName: description: Match the name of the onboarded application. - appSoftwareVersion: type: string + appSoftwareVersion: description: Match the software version of the application package. - appDVersion: type: string + appDVersion: description: Match the version of the application descriptor. + type: string operationalState: - $ref: '#/components/schemas/OperationalState3' + type: string + enum: + - SEE_DESCRIPTION + description: 'Match particular operational state of the application package: + + ENABLED: the application package can be used for instantiation of new application instances. + + DISABLED: the application package cannot be used for further application instantiation requests. + + + May be present if the "subscriptionType" attribute contains the value "AppPackageChangeSubscription", and shall be absent otherwise.' usageState: type: string - description: Match particular usage state of the application package. May be present if the "subscriptionType" attribute contains the value "AppPackageChangeSubscription", and shall be absent otherwise. enum: - - N_USE - - NOT_IN_USE - description: | - NOTE: The attributes "appPkgInfoId ", and "appDId" are alternatives to reference particular application package in a filter. They should not be used both in the same filter instance, but one alternative should be chosen. + - SEE_DESCRIPTION + description: 'Match particular usage state of the application package: - Checksum: - title: Checksum + IN_USE: application instances instantiated from this package exist. + + NOT_IN_USE: No application instance instantiated from this package exist. + + + May be present if the "subscriptionType" attribute contains the value "AppPackageChangeSubscription", and shall be absent otherwise.' + description: "|-\n NOTE:\tThe attributes \"appPkgInfoId \", and \"appDId\" are alternatives to reference particular application package in a filter. They should not be used both in the same filter instance, but one alternative should be chosen." + LinkType: + x-etsi-ref: 6.2.5.2 + type: object + properties: + href: + description: URI referring to a resource. + type: string + format: uri required: - - algorithm - - hash + - href + TimeStamp: + x-etsi-ref: 6.2.5.4 + type: object + properties: + seconds: + description: "The seconds part of the Time. Time is defined as Unix-time since January\_1, 1970, 00:00:00 UTC." + type: integer + format: uint32 + nanoSeconds: + description: The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. + type: integer + format: uint32 + required: + - seconds + - nanoSeconds + Checksum: + x-etsi-ref: 6.2.5.6 type: object properties: algorithm: + description: Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004 [18]. For example, SHA-256, SHA-512. type: string - description: Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512. hash: + description: The hexadecimal value of the checksum. type: string - description: "'String 1 The hexadecimal value of the checksum'" - - CreateAppPkg: - title: CreateAppPkg required: - - appPkgName - - appPkgPath - - appPkgVersion - - checksum + - algorithm + - hash + TransportsSupported: + description: Indicates transports and serialization formats supported made available to the service-consuming application. Defaults to REST + JSON if absent. type: object properties: - appPkgName: - type: string - description: Name of the application package to be onboarded. - appPkgPath: - type: string - format: uri - description: Address information of the application package. See note. - appPkgVersion: - type: string - description: Version of the application package to be onboarded.The appPkgName with appPkgVersion can be used to uniquely identify the application package. - appProvider: - type: string - description: The provider's name of the application package to be onboarded. - checksum: - $ref: '#/components/schemas/Checksum' - userDefinedData: - $ref: '#/components/schemas/KeyValuePairs' - description: "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'" - description: | - NOTE: It is for further study how to convey appPkgPath, and align with ETSI GS NFV-SOL 005 [i.7]. + transport: + description: Information about the transport in this binding. + $ref: '#/components/schemas/TransportDescriptor' + serializers: + description: "Information about the serializers in this binding, as defined in the SerializerType type in ETSI GS\_MEC\_011\_[17]." + type: array + minItems: 1 + items: + $ref: '#/components/schemas/SerializerType' + required: + - transport + - serializers + SteeredNetwork: + description: 'This attribute provides an option for the application to specify a type of network to carry the application traffic. - LinkType: - title: LinkType + See note.' + type: object + properties: + cellularNetwork: + description: If present, and the application prefers to a cellular network to carry its traffic, this attribute shall be set to true. Otherwise, it shall be set to false. + type: boolean + wi-fiNetwork: + description: "If present, and the application prefers to a WiFi\xAEnetwork to carry its traffic, this attribute shall be set to true. Otherwise, it shall be set to false." + type: boolean + fixedAccessNetwork: + description: If present, and the application prefers to a fixed access network to carry its traffic, this attribute shall be set to true. Otherwise, it shall be set to false. + type: boolean + _links: + description: Links to resources related to this resource. + type: object + properties: + self: + description: Self referring URI. + $ref: '#/components/schemas/LinkType' + appD: + description: Link to the appD resource. + $ref: '#/components/schemas/LinkType' + appPkgContent: + description: Link to the "Onboarded application package content" resource. + $ref: '#/components/schemas/LinkType' + vnfPkgInfo: + description: Link to the corresponding VNF package resource at NFVO. See note 3. + $ref: '#/components/schemas/LinkType' required: - - href + - self + - appD + - appPkgContent + _links1: + description: Links to resources related to this resource. + type: object + properties: + self: + description: URI of this resource. + $ref: '#/components/schemas/LinkType' + required: + - self + Subscriptions: + description: A link list to the subscriptions to an application package. type: object properties: href: + description: The URI referring to the subscription. type: string - description: URI referring to a resource - - ProblemDetails: - title: ProblemDetails + format: uri + subscriptionType: + description: Type of the subscription. + $ref: '#/components/schemas/AppPkgSubscriptionType' + required: + - href + - subscriptionType + _links2: + description: Links to resources related to this resource. type: object properties: - detail: - type: string - description: A human-readable explanation specific to this occurrence of the problem - instance: - type: string - description: A URI reference that identifies the specific occurrence of the problem - status: - type: integer - description: The HTTP status code for this occurrence of the problem - format: int32 - title: - type: string - description: A short, human-readable summary of the problem type - type: - type: string - description: A URI reference according to IETF RFC 3986 that identifies the problem type - - TimeStamp: - title: TimeStamp + self: + description: URI of this resource. + $ref: '#/components/schemas/LinkType' + subscriptions: + type: array + items: + $ref: '#/components/schemas/Subscriptions' required: - - nanoSeconds - - seconds + - self + _links3: + description: Links to resources related to this notification. type: object properties: - nanoSeconds: - type: integer - description: The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. - format: int32 - seconds: - type: integer - description: The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. - format: int32 - - OperationalState: - title: OperationalState - description: | - Operational state of the application package: - - ENABLED: the application package can be used for instantiation of new application instances. - DISABLED: the application package cannot be used for further application instantiation requests. - type: string - enum: - - DISABLED - - ENABLED - examples: - - DISABLED - - OperationalState2: - title: OperationalState - description: | - New value of the "operationalState" attribute of the "OnboardedAppPkgInfo" structure. - - Permitted values - DISABLED: to disable the individual application package. - ENABLED: to enable the individual application package. - type: string - enum: - - DISABLED - - ENABLED - examples: - - ENABLED - - OperationalState3: - title: OperationalState - description: | - Match particular operational state of the application package. - - ENABLED: the application package can be used for instantiation of new application instances. - DISABLED: the application package cannot be used for further application instantiation requests. - - May be present if the "subscriptionType" attribute contains the value "AppPackageChangeSubscription", - and shall be absent otherwise. - type: string - enum: - - ENABLED - - DISABLED - examples: - - DISABLED - + subscription: + description: A link to the related subscription. + $ref: '#/components/schemas/LinkType' + required: + - subscription responses: + '200': + description: OK + '204': + description: No Content + '206': + description: Partial Content '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + description: 'Bad Request: used to indicate that incorrect parameters were passed to the request.' content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '401': - description: 'Unauthorized : used when the client did not submit credentials.' + description: 'Unauthorized: used when the client did not submit credentials.' content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' + description: 'Forbidden: operation is not allowed given the current status of the resource.' content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + description: 'Not Found: used when a client provided a URI that cannot be mapped to a valid resource URI.' content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + description: 'Not Acceptable: used to indicate that the server cannot provide the any of the content formats supported by the client.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '409': + description: 'Conflict: The operation cannot be executed currently, due to a conflict with the state of the resource. .' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '416': + description: 'Range Not Satisfiable: The byte range passed in the "Range" header did not match any available byte range. .' content: application/problem+json: schema: @@ -2446,6 +2351,121 @@ components: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' + parameters: + Query.Filter: + description: "Attribute-based filtering parameters according to ETSI GS MEC 009 [4].\nThe API producer shall support receiving filtering parameters as part of the URI query string.\nAll attribute names that appear in the AppPkgInfo and in data types referenced from it shall be supported in attribute-based filtering parameters. See clause 6.19 in ETSI GS\_MEC 009 [4] for details." + name: filter + in: query + required: false + x-exportParamName: Query.Filter + schema: + type: string + Query.All_fields: + description: "Include all complex attributes in the response. See clause 6.18 in ETSI GS\_MEC\_009\_[4] for details. The API producer shall support this parameter." + name: all_fields + in: query + required: false + x-exportParamName: Query.All_fields + schema: + type: string + Query.Fields: + description: 'Complex attributes of AppPkgInfo to be included into the response. + + See clause 6.18 in ETSI GS MEC 009 [4] for details. The API producer should support this parameter.' + name: fields + in: query + required: false + x-exportParamName: Query.Fields + schema: + type: string + Query.Exclude_fields: + description: 'Complex attributes of AppPkgInfo to be excluded from the response. + + See clause 6.18 in ETSI GS MEC 009 [4] for details. The API producer should support this parameter.' + name: exclude_fields + in: query + required: false + x-exportParamName: Query.Exclude_fields + schema: + type: string + Query.Exclude_default: + description: 'Indicates to exclude the following complex attributes of AppPkgInfo from the response. + + + The following attributes shall be excluded from the AppPkgInfo structure in the response message content if this parameter is provided, or none of the parameters "all_fields", "fields", "exclude_fields", "exclude_default" are provided: + + checksum; + + softwareImages; + + additionalArtifacts.' + name: exclude_default + in: query + required: false + x-exportParamName: Query.Exclude_default + schema: + type: string + Query.Filter1: + description: 'Attribute-based filtering parameters according to ETSI GS MEC 009 [4]. + + The API producer shall support receiving filtering parameters as part of the URI query string. + + All attribute names that appear in the AppD and in data types referenced from it shall be supported in attribute-based filtering parameters. See clause 6.19 in ETSI GS MEC 009 [4] for detail.' + name: filter1 + in: query + required: false + x-exportParamName: Query.Filter1 + schema: + type: string + Query.All_fields1: + description: "Include all complex attributes in the response. See clause 6.18 in ETSI GS\_MEC 009 [4] for details. The API producer shall support this parameter." + name: all_fields1 + in: query + required: false + x-exportParamName: Query.All_fields1 + schema: + type: string + Query.Fields1: + description: 'Complex attributes of AppD to be included into the response. + + See clause 6.18 in ETSI GS MEC 009 [4] for details. The API producer should support this parameter.' + name: fields1 + in: query + required: false + x-exportParamName: Query.Fields1 + schema: + type: string + Query.Exclude_fields1: + description: 'Complex attributes of AppD to be excluded from the response. + + See clause 6.18 in ETSI GS MEC 009 [4] for details. The API producer should support this parameter.' + name: exclude_fields1 + in: query + required: false + x-exportParamName: Query.Exclude_fields1 + schema: + type: string + Query.Exclude_default1: + description: 'Indicates to exclude the following complex attributes of AppD from the response. + + + The following attributes shall be excluded from the AppPkgInfo structure in the response message content if this parameter is provided, or none of the parameters "all_fields", "fields", "exclude_fields", "exclude_default" are provided: + + virtualComputeDescriptor; + + swImageDescriptor; + + virtualStorageDescriptor; + + appExtCpd; + + terminateAppInstanceOpConfig; + + changeAppInstanceStateOpConfig.' + name: exclude_default1 + in: query + required: false + x-exportParamName: Query.Exclude_default1 + schema: + type: string -security: -- {} diff --git a/doc/config-mec010-2_AppPkgMgmt.yaml b/doc/config-mec010-2_AppPkgMgmt.yaml index 6752683ee22597c5f367e41aa402a1249f313fca..4623fc3e5c1e538b23880269bc763f5e521c787b 100644 --- a/doc/config-mec010-2_AppPkgMgmt.yaml +++ b/doc/config-mec010-2_AppPkgMgmt.yaml @@ -513,15 +513,15 @@ manual_types: type: array items: type: string - description: Specifies the protocols that the VL uses. - enum: - - Ethernet - - MPLS - - ODU2 - - IPV4 - - IPV6 - - Pseudo-Wire - - Etc. + description: Specifies the protocols that the VL uses. + enum: + - Ethernet + - MPLS + - ODU2 + - IPV4 + - IPV6 + - Pseudo-Wire + - Etc. minItems: 1 flowPattern: type: string @@ -570,11 +570,11 @@ manual_types: type: array items: type: string - enum: - - NO_MIGRATION - - OFFLINE_MIGRATION - - LIVE_MIGRATION - description: Specifies the allowed migration types in order of preference in case of an impact. + enum: + - NO_MIGRATION + - OFFLINE_MIGRATION + - LIVE_MIGRATION + description: Specifies the allowed migration types in order of preference in case of an impact. maxUndetectableInterruptionTime: type: number description: Specifies the maximum interruption time that can go undetected at the VNF level during live migration.