From e4fd4aa0c4b33741a671f5e1724c1c6f23ccec14 Mon Sep 17 00:00:00 2001 From: Umair Zafar Date: Thu, 4 May 2023 12:24:43 +0500 Subject: [PATCH 01/50] change AppGrant API according to MEC010-2 3.0.1v --- MEC010-2_AppGrant.yaml | 359 ++++++++++++++++++++++------------------- 1 file changed, 192 insertions(+), 167 deletions(-) diff --git a/MEC010-2_AppGrant.yaml b/MEC010-2_AppGrant.yaml index cf7b320..f7b527f 100644 --- a/MEC010-2_AppGrant.yaml +++ b/MEC010-2_AppGrant.yaml @@ -1,8 +1,8 @@ openapi: 3.1.0 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: '2.2.1' + 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: "2.2.1" license: name: BSD-3-Clause url: https://forge.etsi.org/legal-matters @@ -12,11 +12,11 @@ info: email: cti_support@etsi.org externalDocs: description: "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.2.1" - url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.02.01_60/gs_MEC01002v020201p.pdf' + url: "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.02.01_60/gs_MEC01002v020201p.pdf" jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema servers: -- url: https://localhost/granting/v1 - variables: {} + - url: https://localhost/granting/v1 + variables: {} tags: - name: granting description: Grant operations @@ -24,143 +24,142 @@ paths: /grants: post: tags: - - granting - summary: 'requests a grant for a particular application lifecycle operation' + - granting + summary: "requests a grant for a particular application lifecycle operation" description: requests a grant for a particular application lifecycle operation operationId: grantPOST parameters: [] requestBody: - content: application/json: schema: - $ref: '#/components/schemas/GrantRequest' + $ref: "#/components/schemas/GrantRequest" required: true responses: - '201': + "201": description: grant was created successfully (synchronous mode) headers: {} content: application/json: schema: - $ref: '#/components/schemas/Grant' - '202': + $ref: "#/components/schemas/Grant" + "202": description: the request was accepted for processing headers: {} content: {} - '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + "400": + description: "Bad Request : used to indicate that incorrect parameters were passed to the request." headers: {} content: application/json: schema: - $ref: '#/components/schemas/ProblemDetails' - '401': - description: 'Unauthorized : used when the client did not submit credentials.' + $ref: "#/components/schemas/ProblemDetails" + "401": + description: "Unauthorized : used when the client did not submit credentials." headers: {} content: application/json: schema: - $ref: '#/components/schemas/ProblemDetails' - '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' + $ref: "#/components/schemas/ProblemDetails" + "403": + description: "Forbidden : operation is not allowed given the current status of the resource." headers: {} content: application/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.' + $ref: "#/components/schemas/ProblemDetails" + "404": + description: "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI." headers: {} content: application/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.' + $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." headers: {} content: application/json: schema: - $ref: '#/components/schemas/ProblemDetails' - '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' + $ref: "#/components/schemas/ProblemDetails" + "429": + description: "Too Many Requests : used when a rate limiter has triggered." headers: {} content: application/json: schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: "#/components/schemas/ProblemDetails" deprecated: false parameters: [] /grants/{grantId}: get: tags: - - granting - summary: 'read the grant' + - 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 + - name: grantId + in: path + description: Identifier of the individual grant. + required: true + style: simple + schema: + type: string responses: - '200': + "200": description: A representation of the "individual grant" resource headers: {} content: application/json: schema: - $ref: '#/components/schemas/Grant' - '202': + $ref: "#/components/schemas/Grant" + "202": description: returned when the process of creating the grant is ongoing, no grant is available yet headers: {} content: {} - '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + "400": + description: "Bad Request : used to indicate that incorrect parameters were passed to the request." headers: {} content: application/json: schema: - $ref: '#/components/schemas/ProblemDetails' - '401': - description: 'Unauthorized : used when the client did not submit credentials.' + $ref: "#/components/schemas/ProblemDetails" + "401": + description: "Unauthorized : used when the client did not submit credentials." headers: {} content: application/json: schema: - $ref: '#/components/schemas/ProblemDetails' - '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' + $ref: "#/components/schemas/ProblemDetails" + "403": + description: "Forbidden : operation is not allowed given the current status of the resource." headers: {} content: application/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.' + $ref: "#/components/schemas/ProblemDetails" + "404": + description: "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI." headers: {} content: application/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.' + $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." headers: {} content: application/json: schema: - $ref: '#/components/schemas/ProblemDetails' - '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' + $ref: "#/components/schemas/ProblemDetails" + "429": + description: "Too Many Requests : used when a rate limiter has triggered." headers: {} content: application/json: schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: "#/components/schemas/ProblemDetails" deprecated: false parameters: [] components: @@ -175,7 +174,7 @@ components: cpProtocolData: type: array items: - $ref: '#/components/schemas/CpProtocolData' + $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: type: string @@ -183,14 +182,14 @@ components: AppExtCpData: title: AppExtCpData required: - - cpConfig - - cpdId + - cpConfig + - cpdId type: object properties: cpConfig: type: array items: - $ref: '#/components/schemas/AppExtCpConfig' + $ref: "#/components/schemas/AppExtCpConfig" description: List of instance data that need to be configured on the CP instances created from the respective CPD. cpdId: type: string @@ -198,53 +197,54 @@ components: ResourceDefinition.Type: title: ResourceDefinition.Type enum: - - COMPUTE - - VL - - STORAGE - - LINKPORT + - COMPUTE + - STORAGE + - LINKPORT + - OSCONTAINER, see note. type: string description: Type of the resource definition referenced. examples: - - COMPUTE + - COMPUTE + NOTE: This permitted value reflects the ETSI NFV interpretation of the cloud native workloads. CpProtocolData: title: CpProtocolData required: - - layerProtocol + - layerProtocol type: object properties: ipOverEthernet: - $ref: '#/components/schemas/IpOverEthernetAddressData' + $ref: "#/components/schemas/IpOverEthernetAddressData" layerProtocol: - $ref: '#/components/schemas/IpOverEthernetAddressData' + $ref: "#/components/schemas/IpOverEthernetAddressData" ExtLinkPortData: title: ExtLinkPortData required: - - id - - resourceHandle + - id + - resourceHandle type: object properties: id: type: string description: Identifier of this link port as provided by the entity that has created the link port. resourceHandle: - $ref: '#/components/schemas/ResourceHandle' + $ref: "#/components/schemas/ResourceHandle" ExtVirtualLinkData: title: ExtVirtualLinkData required: - - extCps - - id - - resourceId + - extCps + - id + - resourceId type: object properties: extCps: type: array items: - $ref: '#/components/schemas/AppExtCpData' + $ref: "#/components/schemas/AppExtCpData" description: External CPs of the application instance to be connected to this external VL. extLinkPorts: type: array items: - $ref: '#/components/schemas/ExtLinkPortData' + $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. id: type: string @@ -258,10 +258,10 @@ components: Grant: title: Grant required: - - id - - appInstanceId - - appLcmOpOccId - - _links + - id + - appInstanceId + - appLcmOpOccId + - _links type: object properties: id: @@ -277,49 +277,49 @@ components: 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. items: - $ref: '#/components/schemas/VimConnectionInfo' + $ref: "#/components/schemas/VimConnectionInfo" zones: type: array items: - $ref: '#/components/schemas/ZoneInfo' - description: '' + $ref: "#/components/schemas/ZoneInfo" + description: "" zoneGroups: type: array items: - $ref: '#/components/schemas/ZoneGroupInfo' - description: '' + $ref: "#/components/schemas/ZoneGroupInfo" + description: "" addResources: type: array items: - $ref: '#/components/schemas/GrantInfo' - description: '' + $ref: "#/components/schemas/GrantInfo" + description: "" tempResources: type: array items: - $ref: '#/components/schemas/GrantInfo' - description: '' + $ref: "#/components/schemas/GrantInfo" + description: "" removeResources: type: array items: - $ref: '#/components/schemas/GrantInfo' - description: '' + $ref: "#/components/schemas/GrantInfo" + description: "" updateResources: type: array items: - $ref: '#/components/schemas/GrantInfo' - description: '' + $ref: "#/components/schemas/GrantInfo" + description: "" vimAssets: - $ref: '#/components/schemas/VimAssets' + $ref: "#/components/schemas/VimAssets" extVirtualLinks: type: array items: - $ref: '#/components/schemas/ExtVirtualLinkData' - description: '' + $ref: "#/components/schemas/ExtVirtualLinkData" + description: "" additionalParams: type: object 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'" _links: - $ref: '#/components/schemas/Grant.links' + $ref: "#/components/schemas/Grant.links" description: "'This type represents a grant. Refer to clause 9.5.2.3 of ETSI GS NFV-SOL 003 '" VimAssets: title: VimAssets @@ -328,25 +328,25 @@ components: softwareImages: type: array items: - $ref: '#/components/schemas/VimSoftwareImage' - description: '' + $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 required: - - appLcmOpOcc - - appInstance + - appLcmOpOcc + - appInstance type: object properties: appLcmOpOcc: - $ref: '#/components/schemas/LinkType' + $ref: "#/components/schemas/LinkType" appInstance: - $ref: '#/components/schemas/LinkType' + $ref: "#/components/schemas/LinkType" description: Links to resources related to this resource. GrantInfo: title: GrantInfo required: - - resourceDefinitionId + - resourceDefinitionId type: object properties: resourceDefinitionId: @@ -361,14 +361,22 @@ components: zoneId: 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: + 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: + type: object + 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. + NOTE: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. + GrantRequest: title: GrantRequest required: - - appInstanceId - - appLcmOpOccId - - appDId - - operation - - _links + - appInstanceId + - appLcmOpOccId + - appDId + - operation + - _links type: object properties: appInstanceId: @@ -381,54 +389,54 @@ components: type: string description: Identifier of this MEC application descriptor. This attribute shall be globally unique. operation: - $ref: '#/components/schemas/GrantRequest.Operation' + $ref: "#/components/schemas/GrantRequest.Operation" addResources: type: array items: - $ref: '#/components/schemas/ResourceDefinition' - description: '' + $ref: "#/components/schemas/ResourceDefinition" + description: "" tempResources: type: array items: - $ref: '#/components/schemas/ResourceDefinition' - description: '' + $ref: "#/components/schemas/ResourceDefinition" + description: "" removeResources: type: array items: - $ref: '#/components/schemas/ResourceDefinition' - description: '' + $ref: "#/components/schemas/ResourceDefinition" + description: "" updateResources: type: array items: - $ref: '#/components/schemas/ResourceDefinition' - description: '' + $ref: "#/components/schemas/ResourceDefinition" + description: "" additionalParams: type: object 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'" _links: - $ref: '#/components/schemas/GrantRequest.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'" GrantRequest.Operation: title: GrantRequest.Operation enum: - - INSTANTIATE - - OPERATE - - TERMINATE + - INSTANTIATE + - OPERATE + - TERMINATE type: string description: "'The lifecycle management operation for which granting is requested'" examples: - - INSTANTIATE + - INSTANTIATE GrantRequest.links: title: GrantRequest.links required: - - appLcmOpOcc - - appInstance + - appLcmOpOcc + - appInstance type: object properties: appLcmOpOcc: - $ref: '#/components/schemas/LinkType' + $ref: "#/components/schemas/LinkType" appInstance: - $ref: '#/components/schemas/LinkType' + $ref: "#/components/schemas/LinkType" description: Links to resources related to this resource. IpOverEthernetAddressData: title: IpOverEthernetAddressData @@ -440,17 +448,17 @@ components: ipAddresses: type: array items: - $ref: '#/components/schemas/IpAddress' + $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. description: "'This type represents network address data for IP over Ethernet. Refer to clause 4.4.1.10c of ETSI GS NFV SOL 003'" IpAddress: title: IpAddress required: - - type + - type type: object properties: type: - $ref: '#/components/schemas/IpAddress.Type' + $ref: "#/components/schemas/IpAddress.Type" fixedAddresses: type: array items: @@ -461,7 +469,7 @@ components: description: Number of dynamic addresses to assign (from the subnet defined by subnetId if provided) contentEncoding: int32 addressRange: - $ref: '#/components/schemas/AddressRange' + $ref: "#/components/schemas/AddressRange" subnetId: type: string description: Subnet defined by the identifier of the subnet resource in the VIM. @@ -469,17 +477,17 @@ components: IpAddress.Type: title: IpAddress.Type enum: - - IPV4 - - IPV6 + - IPV4 + - IPV6 type: string description: The type of the IP addresses. examples: - - IPV4 + - IPV4 AddressRange: title: AddressRange required: - - minAddress - - maxAddress + - minAddress + - maxAddress type: object properties: minAddress: @@ -492,7 +500,7 @@ components: LinkType: title: LinkType required: - - href + - href type: object properties: href: @@ -521,35 +529,44 @@ components: ResourceDefinition: title: ResourceDefinition required: - - id - - type - - resourceTemplateId - - resource + - id + - type + - resourceTemplateId + - resource type: object properties: id: type: string description: Identifier of the related ResourceDefinition structure from the related GrantRequest structure. type: - $ref: '#/components/schemas/ResourceDefinition.Type' + $ref: "#/components/schemas/ResourceDefinition.Type" vduId: type: string description: Reference to the related VDU in the AppD applicable to this resource. resourceTemplateId: - type: string - description: Reference to a resource template, i.e. VirtualComputeDescriptor, AppExtCpd, VirtualStorageDescriptor in the AppD. + type: array + 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. resource: - $ref: '#/components/schemas/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 '" Resource: title: Resource required: - - vimConnectionInfo - - resourceId + - vimConnectionInfo + - resourceId type: object properties: vimConnectionInfo: - $ref: '#/components/schemas/VimConnectionInfo' + $ref: "#/components/schemas/VimConnectionInfo" resourceId: type: string description: Identifier of the resource in the scope of the VIM. @@ -557,23 +574,30 @@ components: ResourceHandle: title: ResourceHandle required: - - resourceId + - resourceId type: object properties: resourceId: type: string - description: Identifier of the resource in the scope of the VIM. + 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: type: string - description: Type of the resource in the scope of the VIM. See note. + description: Type of the resource in the scope of the VIM. See note 1. + 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 VimConnectionInfo: title: VimConnectionInfo required: - - id - - vimType + - id + - vimType type: object properties: accessInfo: @@ -597,8 +621,8 @@ components: VimSoftwareImage: title: VimSoftwareImage required: - - appDSoftwareImageId - - vimSoftwareImageId + - appDSoftwareImageId + - vimSoftwareImageId type: object properties: appDSoftwareImageId: @@ -609,11 +633,12 @@ components: 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). + description: Identifier of the software image in the resource management layer (i.e. VIM) See note. + 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". ZoneGroupInfo: title: ZoneGroupInfo required: - - zoneId + - zoneId type: object properties: zoneId: @@ -624,18 +649,18 @@ components: ZoneInfo: title: ZoneInfo required: - - id - - zoneId + - id + - zoneId type: object properties: id: 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: + vimConnectionId: type: string - description: '' + description: "" zoneId: type: string description: The identifier of the resource zone, as managed by the resource management layer (typically, the VIM). security: -- {} + - {} -- GitLab From 28504f3eb1a08e65af946e76707ce03901b50685 Mon Sep 17 00:00:00 2001 From: Umair Zafar Date: Thu, 4 May 2023 14:12:09 +0500 Subject: [PATCH 02/50] fix AppGrant.yaml --- MEC010-2_AppGrant.yaml | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/MEC010-2_AppGrant.yaml b/MEC010-2_AppGrant.yaml index f7b527f..769bb4e 100644 --- a/MEC010-2_AppGrant.yaml +++ b/MEC010-2_AppGrant.yaml @@ -202,10 +202,11 @@ components: - LINKPORT - OSCONTAINER, see note. type: string - description: Type of the resource definition referenced. + description: > + Type of the resource definition referenced. + NOTE: This permitted value reflects the ETSI NFV interpretation of the cloud native workloads. examples: - COMPUTE - NOTE: This permitted value reflects the ETSI NFV interpretation of the cloud native workloads. CpProtocolData: title: CpProtocolData required: @@ -363,11 +364,14 @@ components: 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: 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. + 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. + NOTE: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. mcioConstraints: type: object - 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. - NOTE: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. + 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'" + NOTE: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. GrantRequest: title: GrantRequest @@ -545,7 +549,7 @@ components: description: Reference to the related VDU in the AppD applicable to this resource. resourceTemplateId: type: array - description: | + description: > Reference to a resource template, in the AppD as follows: - If type="COMPUTE": VirtualComputeDescriptor, - If type="LINKPORT": AppExtCpd, @@ -585,9 +589,10 @@ components: 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: type: string - description: Type of the resource in the scope of the VIM. See note 1. - 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 + description: > + Type of the resource in the scope of the VIM. See note 1. + 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 @@ -633,8 +638,9 @@ components: 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. - 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". + description: > + Identifier of the software image in the resource management layer (i.e. VIM) See note. + 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". ZoneGroupInfo: title: ZoneGroupInfo required: -- GitLab From 4d2eb0b6198de1d297a42d2a448db252274443bd Mon Sep 17 00:00:00 2001 From: Umair Zafar Date: Mon, 8 May 2023 10:24:10 +0500 Subject: [PATCH 03/50] mention all responses under components tag --- MEC010-2_AppGrant.yaml | 264 +++++++++++++++++++++++++---------------- 1 file changed, 163 insertions(+), 101 deletions(-) diff --git a/MEC010-2_AppGrant.yaml b/MEC010-2_AppGrant.yaml index 769bb4e..f9683ca 100644 --- a/MEC010-2_AppGrant.yaml +++ b/MEC010-2_AppGrant.yaml @@ -1,8 +1,8 @@ openapi: 3.1.0 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: "2.2.1" + 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.0.1' license: name: BSD-3-Clause url: https://forge.etsi.org/legal-matters @@ -11,8 +11,8 @@ info: 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, v2.2.1" - url: "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.02.01_60/gs_MEC01002v020201p.pdf" + description: "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v3.0.1" + url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.00.01_60/gs_MEC01002v030001p.pdf' jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema servers: - url: https://localhost/granting/v1 @@ -47,48 +47,18 @@ paths: description: the request was accepted for processing headers: {} content: {} - "400": - description: "Bad Request : used to indicate that incorrect parameters were passed to the request." - headers: {} - content: - application/json: - schema: - $ref: "#/components/schemas/ProblemDetails" - "401": - description: "Unauthorized : used when the client did not submit credentials." - headers: {} - content: - application/json: - schema: - $ref: "#/components/schemas/ProblemDetails" - "403": - description: "Forbidden : operation is not allowed given the current status of the resource." - headers: {} - content: - application/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." - headers: {} - content: - application/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." - headers: {} - content: - application/json: - schema: - $ref: "#/components/schemas/ProblemDetails" - "429": - description: "Too Many Requests : used when a rate limiter has triggered." - headers: {} - content: - application/json: - schema: - $ref: "#/components/schemas/ProblemDetails" + '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: [] /grants/{grantId}: @@ -118,48 +88,18 @@ paths: description: returned when the process of creating the grant is ongoing, no grant is available yet headers: {} content: {} - "400": - description: "Bad Request : used to indicate that incorrect parameters were passed to the request." - headers: {} - content: - application/json: - schema: - $ref: "#/components/schemas/ProblemDetails" - "401": - description: "Unauthorized : used when the client did not submit credentials." - headers: {} - content: - application/json: - schema: - $ref: "#/components/schemas/ProblemDetails" - "403": - description: "Forbidden : operation is not allowed given the current status of the resource." - headers: {} - content: - application/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." - headers: {} - content: - application/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." - headers: {} - content: - application/json: - schema: - $ref: "#/components/schemas/ProblemDetails" - "429": - description: "Too Many Requests : used when a rate limiter has triggered." - headers: {} - content: - application/json: - schema: - $ref: "#/components/schemas/ProblemDetails" + '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: @@ -179,6 +119,7 @@ components: linkPortId: type: string description: Identifier of a pre-configured link port to which the external CP will be associated. See note. + AppExtCpData: title: AppExtCpData required: @@ -194,6 +135,7 @@ components: cpdId: type: string description: The identifier of the CPD in the AppD. + ResourceDefinition.Type: title: ResourceDefinition.Type enum: @@ -207,6 +149,7 @@ components: NOTE: This permitted value reflects the ETSI NFV interpretation of the cloud native workloads. examples: - COMPUTE + CpProtocolData: title: CpProtocolData required: @@ -214,9 +157,18 @@ components: type: object properties: ipOverEthernet: + 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: - $ref: "#/components/schemas/IpOverEthernetAddressData" + items: + $ref: "#/components/schemas/IpOverEthernetAddressData" + 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. + ExtLinkPortData: title: ExtLinkPortData required: @@ -229,6 +181,7 @@ components: 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: @@ -322,6 +275,7 @@ components: _links: $ref: "#/components/schemas/Grant.links" description: "'This type represents a grant. Refer to clause 9.5.2.3 of ETSI GS NFV-SOL 003 '" + VimAssets: title: VimAssets type: object @@ -332,6 +286,7 @@ components: $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 required: @@ -344,6 +299,7 @@ components: appInstance: $ref: "#/components/schemas/LinkType" description: Links to resources related to this resource. + GrantInfo: title: GrantInfo required: @@ -369,6 +325,8 @@ components: NOTE: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. mcioConstraints: 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'" NOTE: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. @@ -416,10 +374,13 @@ components: description: "" additionalParams: 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'" _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'" + GrantRequest.Operation: title: GrantRequest.Operation enum: @@ -430,6 +391,7 @@ components: description: "'The lifecycle management operation for which granting is requested'" examples: - INSTANTIATE + GrantRequest.links: title: GrantRequest.links required: @@ -442,19 +404,32 @@ components: appInstance: $ref: "#/components/schemas/LinkType" description: Links to resources related to this resource. + IpOverEthernetAddressData: title: IpOverEthernetAddressData type: object properties: macAddress: type: string - description: "'MAC address. If this attribute is not present, it shall be chosen by the VIM'" + description: | + "'MAC address. If this attribute is not present, it shall be chosen by the VIM. See note 1.'" + NOTE 1: At least one of "macAddress" or "ipAddresses" shall be present. ipAddresses: type: array 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. - description: "'This type represents network address data for IP over Ethernet. Refer to clause 4.4.1.10c of ETSI GS NFV SOL 003'" + 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. + NOTE 1: At least one of "macAddress" or "ipAddresses" shall be present + + KeyValuePair: + type: object + properties: + key: + type: string + value: + type: string + IpAddress: title: IpAddress required: @@ -478,6 +453,7 @@ components: 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: @@ -487,6 +463,7 @@ components: description: The type of the IP addresses. examples: - IPV4 + AddressRange: title: AddressRange required: @@ -501,6 +478,7 @@ components: 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 required: @@ -510,6 +488,7 @@ components: href: type: string description: URI referring to a resource + ProblemDetails: title: ProblemDetails type: object @@ -530,6 +509,7 @@ components: type: type: string description: A URI reference according to IETF RFC 3986 that identifies the problem type + ResourceDefinition: title: ResourceDefinition required: @@ -562,6 +542,7 @@ components: 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 '" + Resource: title: Resource required: @@ -575,6 +556,7 @@ components: type: string description: Identifier of the resource in the scope of the VIM. description: Resource information for an existing resource + ResourceHandle: title: ResourceHandle required: @@ -583,7 +565,14 @@ components: 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. + description: | + Identifier of the resource in the scope of the VIM or the CISM or the resource provider. See note 2. + 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 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. @@ -592,12 +581,7 @@ components: description: > Type of the resource in the scope of the VIM. See note 1. 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 + VimConnectionInfo: title: VimConnectionInfo required: @@ -607,15 +591,21 @@ components: 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'" vimId: type: string @@ -623,6 +613,7 @@ components: 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. + VimSoftwareImage: title: VimSoftwareImage required: @@ -641,6 +632,7 @@ components: description: > Identifier of the software image in the resource management layer (i.e. VIM) See note. 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". + ZoneGroupInfo: title: ZoneGroupInfo required: @@ -652,6 +644,7 @@ components: items: type: string description: References of identifiers of "ZoneInfo" structures, each of which provides information about a resource zone that belongs to this group. + ZoneInfo: title: ZoneInfo required: @@ -664,9 +657,78 @@ components: 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: type: string - description: "" + 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: type: string description: The identifier of the resource zone, as managed by the resource management layer (typically, the VIM). + + responses: + '200': + description: OK + '204': + description: No Content + '400': + 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.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + 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.' + 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.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '412': + description: 'Precondition failed : used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts when using PUT' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '414': + description: 'URI Too Long : used to indicate that the server is refusing to process the request because the request URI is longer than the server is willing or able to process.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '415': + description: 'Unsupported Media Type : used to indicate that the server or the client does not support the content type of the entity body.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '422': + description: 'Unprocessable Entity : used to indicate that the server understands the content type of the request entity and that the syntax of the request entity is correct but that the server is unable to process the contained instructions. This error condition can occur if an JSON request body is syntactically correct but semantically incorrect, for example if the target area for the request is considered too large. This error condition can also occur if the capabilities required by the request are not supported.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests: used when a rate limiter has triggered.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + security: - {} -- GitLab From eed08c1faab9a48202c8faf69bc9edf31fd299cf Mon Sep 17 00:00:00 2001 From: Umair Zafar Date: Mon, 8 May 2023 10:40:52 +0500 Subject: [PATCH 04/50] fix AppGrant issues --- MEC010-2_AppGrant.yaml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/MEC010-2_AppGrant.yaml b/MEC010-2_AppGrant.yaml index f9683ca..552f25d 100644 --- a/MEC010-2_AppGrant.yaml +++ b/MEC010-2_AppGrant.yaml @@ -157,10 +157,12 @@ components: type: object properties: ipOverEthernet: - 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. + 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: + type: string items: $ref: "#/components/schemas/IpOverEthernetAddressData" description: | -- GitLab From 1cfca3e93a28ab522effec8690b88f892c9b3182 Mon Sep 17 00:00:00 2001 From: Umair Zafar Date: Mon, 8 May 2023 12:14:25 +0500 Subject: [PATCH 05/50] change AppPkgMgmt API according to v3.0.1 --- MEC010-2_AppPkgMgmt.yaml | 1455 +++++++++++++++++--------------------- 1 file changed, 668 insertions(+), 787 deletions(-) diff --git a/MEC010-2_AppPkgMgmt.yaml b/MEC010-2_AppPkgMgmt.yaml index 597fa62..9c1ad41 100644 --- a/MEC010-2_AppPkgMgmt.yaml +++ b/MEC010-2_AppPkgMgmt.yaml @@ -9,12 +9,12 @@ info: name: ETSI Forge url: https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api email: cti_support@etsi.org - version: '2.2.1' + version: '3.0.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, v2.2.1' - url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.02.01_60/gs_MEC01002v020201p.pdf' + description: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v3.0.1' + url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.00.01_60/gs_MEC01002v030001p.pdf' tags: - name: app-pkgm description: App Package management @@ -50,47 +50,17 @@ paths: description: The response body shall contain a representation of the application package resource contentMediaType: application/json '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false get: tags: @@ -147,47 +117,17 @@ paths: description: '' contentMediaType: application/json '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] @@ -217,47 +157,17 @@ paths: description: The response body shall contain a representation of the application package resource contentMediaType: application/json '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false get: tags: @@ -314,47 +224,17 @@ paths: description: '' contentMediaType: application/json '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] @@ -382,47 +262,17 @@ paths: schema: $ref: '#/components/schemas/AppPkgInfo' '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false delete: tags: @@ -444,47 +294,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false patch: tags: @@ -516,54 +336,17 @@ paths: schema: $ref: '#/components/schemas/AppPkgInfoModifications' '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/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' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] @@ -591,47 +374,17 @@ paths: schema: $ref: '#/components/schemas/AppPkgInfo' '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false delete: tags: @@ -653,47 +406,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false patch: tags: @@ -725,54 +448,17 @@ paths: schema: $ref: '#/components/schemas/AppPkgInfoModifications' '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/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' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] @@ -800,47 +486,17 @@ paths: schema: $ref: '#/components/schemas/AppPkgSubscriptionInfo' '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' callbacks: notification: '{$request.body#/subscription.href}': @@ -854,7 +510,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AppPkgNotification' + $ref: '#/components/schemas/AppPkgNotification' responses: '204': description: "No content" @@ -876,47 +532,17 @@ paths: schema: $ref: '#/components/schemas/AppPkgSubscriptionLinkList' '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /subscriptions/{subscriptionId}: @@ -943,47 +569,17 @@ paths: schema: $ref: '#/components/schemas/AppPkgSubscriptionInfo' '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false delete: tags: @@ -1004,34 +600,18 @@ paths: description: No Content headers: {} content: {} + '400': + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /app_packages/{appPkgId}/appd: @@ -1094,47 +674,17 @@ paths: $ref: '#/components/schemas/AppD' application/zip: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /onboarded_app_packages/{appDId}/appd: @@ -1197,47 +747,17 @@ paths: $ref: '#/components/schemas/AppD' application/zip: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /app_packages/{appPkgId}/package_content: @@ -1267,51 +787,17 @@ paths: content: application/zip: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '416': - description: Range Not Satisfiable . - headers: {} - content: {} + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false put: tags: @@ -1338,54 +824,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/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' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /onboarded_app_packages/{appDId}/package_content: @@ -1413,51 +862,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '416': - description: Range Not Satisfiable . - headers: {} - content: {} + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false put: tags: @@ -1484,54 +899,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/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' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] ############################################################################### @@ -1557,38 +935,21 @@ paths: description: No Content headers: {} content: {} + '400': + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] - components: schemas: AppD: @@ -1603,6 +964,7 @@ components: - mecVersion - swImageDescriptor - virtualComputeDescriptor + - appExtCpd type: object properties: appDId: @@ -1613,6 +975,24 @@ components: 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. + 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. + 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. + 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. + mcioConstraintParams: + $ref: '#/components/schemas/McioConstraintParams' appDVersion: type: string description: Identifies the version of the application descriptor. @@ -1623,7 +1003,9 @@ components: type: array items: $ref: '#/components/schemas/AppExternalCpd' - description: Describes external interface(s) exposed by this MEC application. + description: | + Describes external interface(s) exposed by this MEC application. See note 4. + NOTE 4: External interfaces are used to connect to e.g. other MEC applications, MEC services, UEs and also MEC platform and OSS. appFeatureOptional: type: array items: @@ -1663,6 +1045,15 @@ components: 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. + NOTE 7: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. + mcioIdentificationData: + type: string + items: + $ref: '#/components/schemas/McioIdentificationData' appTrafficRule: type: array items: @@ -1678,7 +1069,9 @@ components: 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. swImageDescriptor: type: string - description: Describes the descriptors of the software image to be used by the virtualisation container used to realize this MEC application. + description: | + Describes the descriptors of the software image to be used by the virtualisation container used to realize this MEC application. See note 5. + NOTE 5: Only one of virtualComputeDescriptor or osContainerDescriptor shall be present. If virtualComputeDescriptor presents, only a single swImageDescriptor shall be provided. terminateAppInstanceOpConfig: type: string description: NFV @@ -1690,7 +1083,263 @@ components: virtualComputeDescriptor: description: Describes CPU and memory requirements, as well as optional additional requirements, such as disk and acceleration related capabilities, of the virtualisation container used to realize this MEC application. 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. + NOTE 5: Only one of virtualComputeDescriptor or osContainerDescriptor shall be present. If virtualComputeDescriptor presents, only a single swImageDescriptor shall be provided. + NOTE 7: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. + + 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]. See note 7. + NOTE 7: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. + + McioIdentificationData: + type: object + required: + - name + - type + properties: + name: + type: string + description: | + The name of the mcio. See note 1. + NOTE 1: When the container infrastructure service is a Kubernetes® instance it is the value of the 'metadata.name' field in Kubernetes® manifest. + type: + type: string + description: | + The type of the mcio. See note 2. + 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: + type: object + description: | + An array of key-value pairs of extended resources required by the container see note. + 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. + 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: + 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. + + MonitoringParameter: + type: object + required: + - monitoringParameterId + - performanceMetric + 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. + + VirtualComputeDescriptor: + title: VirtualComputeDescriptor + type: object + required: + - virtualComputeDescId + - virtualMemory + - virtualCpu + properties: + virtualComputeDescId: + type: string + description: Unique identifier of this VirtualComputeDesc in the VNFD. + logicalNode: + type: array + items: + $ref: '#/components/schemas/LogicalNodeRequirements' + requestAdditionalCapabilities: + type: array + items: + $ref: '#/components/schemas/RequestedAdditionalCapabilityData' + computeRequirements: + type: array + description: Not Specified. + virtualMemory: + $ref: '#/components/schemas/VirtualMemoryData' + virtualCpu: + $ref: '#/components/schemas/VirtualCpuData' + virtualDisk: + type: array + items: + $ref: '#/components/schemas/BlockStorageData' + + VirtualCpuData: + type: object + required: + - numVirtualCpu + 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: + 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: object + description: Array of key-value pair requirements on the Compute (CPU) for the VDU. + virtualCpuPinning: + $ref: '#/components/schemas/VirtualCpuPinningData' + + BlockStorageData: + type: object + required: + - sizeOfStorage + properties: + sizeOfStorage: + type: number + description: Size of virtualised storage resource in GB. + vduStorageRequirements: + type: array + items: + type: object + description: An array of key-value pairs that articulate the storage deployment requirements. + description: Array of key-value pair requirements on the storage for the VDU. + rdmaEnabled: + type: boolean + description: Indicate if the storage support RDMA. + 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. + SwImageDesc: + type: object + required: + - id + - name + - version + - containerFormat + - swImage + properties: + id: + type: string + description: The identifier of this software image. + name: + type: string + description: The name of this software image. + version: + type: string + description: The version of this software image. + checksum: + $ref: '#/components/schemas/ChecksumData' + description: The checksum of the software image file. + containerFormat: + type: string + 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. + 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. + 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. + size: + type: number + description: The size of this software image file. + swImage: + $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. virtualStorageDescriptor: type: array items: @@ -1700,21 +1349,203 @@ components: $ref: './definitions/MEC010p2_definitions.yaml#/definitions/UserContextTransferCapability' appNetworkPolicy: $ref: './definitions/MEC010p2_definitions.yaml#/definitions/AppNetworkPolicy' + + ChecksumData: + type: object + required: + - algorithm + - hash + properties: + algorithm: + type: string + description: Specifies the algorithm used to obtain the checksum value see note. + hash: + type: string + description: | + Contains the result of applying the algorithm indicated by the algorithm attribute to the data to which this ChecksumData refers. + NOTE: The algorithm attribute value shall be one of the Hash Function Textual Names present in [2]. + + VirtualCpuPinningData: + type: object + properties: + virtualCpuPinningPolicy: + type: string + 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. + + VirtualMemoryData: + type: object + required: + - virtualMemSize + properties: + virtualMemSize: + type: number + description: Amount of virtual memory in MB. + virtualMemOversubscriptionPolicy: + description: The memory core oversubscription policy in terms of virtual memory to physical memory on the platform. + vduMemRequirements: + type: array + items: + $ref: '#/components/schemas/KeyValuePair' + 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: + description: Specifies requirements on the huge pages resources for the virtual memory. + + RequestedAdditionalCapabilityData: + type: object + required: + - requestedAdditionalCapabilityName + - supportMandatory + - targetPerformanceParameters + properties: + requestedAdditionalCapabilityName: + 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: + type: string + description: Specifies the minimum version of the requested additional capability + preferredRequestedAdditionalCapabilityVersion: + type: string + description: Specifies the preferred version of the requested additional capability + targetPerformanceParameters: + type: array + items: + $ref: '#/components/schemas/KeyValuePair' + + KeyValuePair: + type: object + properties: + key: + type: string + value: + type: string + + 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. AppExternalCpd: title: AppExternalCpd - required: - - inherited_attributes type: object properties: inherited_attributes: type: object - description: All attributes inherited from Cpd. + description: | + All attributes inherited from Cpd. See note 2. + 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. virtualNetworkInterfaceRequirements: type: array items: - type: string - description: Specifies requirements on a virtual network interface realizing the CPs instantiated from this CPD. + $ref: '#/components/schemas/VirtualNetworkInterfaceRequirements' + description: | + Specifies requirements on a virtual network interface realizing the CPs instantiated from this CPD. See note 1. + NOTE 1: An AppD conformant to the present document shall not specify "virtualNetworkInterfaceRequirements" in AppExternalCpd corresponding to primary container cluster network interfaces. + 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]. + + AdditionalServiceData: + type: object + required: + - portData + properties: + portData: + type: array + items: + $ref: '#/components/schemas/ServicePortData' + minItems: 1 + serviceData: + type: object + description: | + Service matching information exposed by the VirtualCp. See note. + 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 + required: + - name + - protocol + - port + - portConfigurable + properties: + name: + type: string + 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. + + 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 + NOTE: At least one of the attributes "standardizedNetworkInterfaceRequirements", "networkInterfaceRequirements", + "nicIoRequirements" shall be present. + 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. + NOTE: At least one of the attributes "standardizedNetworkInterfaceRequirements", "networkInterfaceRequirements", + "nicIoRequirements" shall be present. + 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 + NOTE: At least one of the attributes "standardizedNetworkInterfaceRequirements", "networkInterfaceRequirements", + "nicIoRequirements" shall be present. + AppPkgInfo: title: AppPkgInfo required: @@ -1757,10 +1588,15 @@ components: description: The singleton signing certificate if it is included as a file in the AppD archive. softwareImages: type: object - description: Information of application software image in application package. Type is TBD + description: | + Information of application software image in application package. Type is TBD. See note 1. + NOTE 1: The data type of application software image information data model is related to virtualisation method and + needs for further study. additionalArtifacts: type: object - description: Additional information of application package artifacts that are not application software images. Type is TBD + description: | + Additional information of application package artifacts that are not application software images. Type is TBD. See note 2. + NOTE 2: The data type of additional information of application package artifacts is not specified in the present document. onboardingState: $ref: '#/components/schemas/OnboardingState' operationalState: @@ -1780,8 +1616,8 @@ components: 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'" _links: $ref: '#/components/schemas/AppPkgInfo.links' - description: "'The data type AppPkgInfo represents the parameters for an application package resource'" + AppPkgInfoModifications: title: AppPkgInfoModifications required: @@ -1854,7 +1690,8 @@ components: properties: id: type: string - description: "''" + 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: @@ -1893,6 +1730,7 @@ components: subscription: $ref: '#/components/schemas/LinkType' description: Links to resources related to this resource. + AppPkgSubscriptionInfo: title: AppPkgSubscriptionInfo required: @@ -1925,6 +1763,7 @@ components: description: type of a subscription. examples: - AppPackageOnBoardingSubscription + AppPkgSubscriptionInfo.links: title: AppPkgSubscriptionInfo.links required: @@ -1934,6 +1773,7 @@ components: self: $ref: '#/components/schemas/LinkType' description: Links to resources related to this resource. + AppPkgSubscriptionLinkList: title: AppPkgSubscriptionLinkList required: @@ -1943,6 +1783,7 @@ components: _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 required: @@ -1957,6 +1798,7 @@ components: $ref: '#/components/schemas/Subscriptions.AppPkgSubscription' description: '' description: Links to resources related to this resource. + Subscriptions.AppPkgSubscription: title: Subscriptions.AppPkgSubscription required: @@ -1970,6 +1812,7 @@ components: 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.'" + AppPkgSubscription: title: AppPkgSubscription required: @@ -1988,7 +1831,6 @@ components: $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.'" - AppPkgFilter: title: AppPkgFilter @@ -2038,6 +1880,7 @@ components: hash: type: string description: "'String 1 The hexadecimal value of the checksum'" + CreateAppPkg: title: CreateAppPkg required: @@ -2080,6 +1923,7 @@ components: href: type: string description: URI referring to a resource + ProblemDetails: title: ProblemDetails type: object @@ -2100,6 +1944,7 @@ components: type: type: string description: A URI reference according to IETF RFC 3986 that identifies the problem type + TimeStamp: title: TimeStamp required: @@ -2133,7 +1978,43 @@ components: examples: - DISABLED + responses: + '400': + 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.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + 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.' + 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.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests: used when a rate limiter has triggered.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' security: - {} - -- GitLab From 5642c3a2b2c50c09aab42b8ff0663ed171922266 Mon Sep 17 00:00:00 2001 From: Umair Zafar Date: Mon, 8 May 2023 12:22:50 +0500 Subject: [PATCH 06/50] change AppLcm API according to v3.0.1 --- MEC010-2_AppLcm.yaml | 1837 ++++++++++++++++++++++-------------------- 1 file changed, 983 insertions(+), 854 deletions(-) diff --git a/MEC010-2_AppLcm.yaml b/MEC010-2_AppLcm.yaml index 91a36d5..7c7e476 100644 --- a/MEC010-2_AppLcm.yaml +++ b/MEC010-2_AppLcm.yaml @@ -9,11 +9,11 @@ info: name: ETSI Forge url: https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api email: cti_support@etsi.org - version: '2.2.1' + version: '3.0.1' externalDocs: - description: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.2.1' - url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.02.01_60/gs_MEC01002v020201p.pdf' + description: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v3.0.1' + url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.00.01_60/gs_MEC01002v030001p.pdf' jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema tags: - name: app-lcm @@ -48,47 +48,17 @@ paths: schema: $ref: '#/components/schemas/AppInstanceInfo' '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false get: tags: @@ -145,47 +115,17 @@ paths: description: '' contentMediaType: application/json '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /app_instances/{appInstanceId}: @@ -212,47 +152,17 @@ paths: schema: $ref: '#/components/schemas/AppInstanceInfo' '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false delete: tags: @@ -274,54 +184,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/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' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /subscriptions: @@ -357,47 +230,17 @@ paths: - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionInfo' contentMediaType: application/json '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' callbacks: notification: '{$request.body#/callbackUri}': @@ -443,47 +286,17 @@ paths: schema: $ref: '#/components/schemas/AppInstanceSubscriptionLinkList' '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /subscriptions/{subscriptionId}: @@ -515,47 +328,17 @@ paths: - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionInfo' contentMediaType: application/json '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false delete: tags: @@ -576,34 +359,18 @@ paths: description: No Content headers: {} content: {} + '400': + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /user_defined_notification: @@ -631,41 +398,18 @@ paths: description: No Content headers: {} content: {} + '400': + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /app_instances/{appInstanceId}/instantiate: @@ -696,54 +440,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/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' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] @@ -777,54 +484,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/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' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /app_instances/{appInstanceId}/operate: @@ -855,54 +525,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/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' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /app_lcm_op_occs: @@ -961,47 +594,17 @@ paths: description: '' contentMediaType: application/json '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /app_lcm_op_occs/{appLcmOpOccId}: @@ -1028,47 +631,17 @@ paths: schema: $ref: '#/components/schemas/AppLcmOpOcc' '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /app_lcm_op_occs/{appLcmOpOccId}/cancel: @@ -1099,54 +672,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/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' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /app_lcm_op_occs/{appLcmOpOccId}/fail: @@ -1173,54 +709,17 @@ paths: schema: $ref: '#/components/schemas/AppLcmOpOcc' '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/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' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /app_lcm_op_occs/{appLcmOpOccId}/retry: @@ -1244,54 +743,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/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' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] @@ -1313,7 +775,7 @@ paths: schema: type: string requestBody: - description: The payload body in the request contains the information necessary to provide configuration information in AppD + description: The message content in the request contains the information necessary to provide configuration information in AppD content: application/json: schema: @@ -1324,54 +786,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/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.' - headers: {} - content: - application/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.' - headers: {} - content: - application/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' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $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': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] @@ -1380,12 +805,12 @@ components: AppLcmOpOcc: title: AppLcmOpOcc required: - - id - - operationState - - stateEnteredTime - - startTime - - lcmOperation - - _links + - id + - operationState + - stateEnteredTime + - startTime + - lcmOperation + - _links type: object properties: id: @@ -1455,9 +880,9 @@ components: OperationParams: oneOf: - - $ref: '#/components/schemas/InstantiateAppRequest' - - $ref: '#/components/schemas/OperateAppRequest' - - $ref: '#/components/schemas/TerminateAppRequest' + - $ref: '#/components/schemas/InstantiateAppRequest' + - $ref: '#/components/schemas/OperateAppRequest' + - $ref: '#/components/schemas/TerminateAppRequest' 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. @@ -1466,10 +891,6 @@ components: - GRACEFUL - FORCED - - - - AppInstIdCreationSubscriptionRequest: type: object required: @@ -1484,8 +905,6 @@ components: appInstanceSubscriptionFilter: $ref: '#/components/schemas/AppInstanceSubscriptionFilter' - - AppInstIdDeletionSubscriptionRequest: type: object required: @@ -1526,8 +945,6 @@ components: self: $ref: '#/components/schemas/LinkType' - - AppInstIdDeletionSubscriptionInfo: type: object required: @@ -1557,8 +974,8 @@ components: AppInstanceLcmOpOcc.links: title: AppInstanceLcmOpOcc.links required: - - self - - appInstance + - self + - appInstance type: object properties: self: @@ -1571,10 +988,10 @@ components: AppLcmOpOccSubscriptionInfo: title: AppLcmOpOccSubscriptionInfo required: - - id - - subscriptionType - - callbackUri - - _links + - id + - subscriptionType + - callbackUri + - _links type: object properties: id: @@ -1599,7 +1016,7 @@ components: AppLcmOpOccSubscriptionInfo.links: title: AppLcmOpOccSubscriptionInfo.links required: - - self + - self type: object properties: self: @@ -1608,10 +1025,10 @@ components: AppInstSubscriptionInfo: title: AppInstSubscriptionInfo required: - - id - - subscriptionType - - callbackUri - - _links + - id + - subscriptionType + - callbackUri + - _links type: object properties: id: @@ -1630,7 +1047,7 @@ components: - STARTED - STOPPED appInstanceSubscriptionFilter: - $ref: '#/components/schemas/AppInstanceSubscriptionFilter' + $ref: '#/components/schemas/AppInstanceSubscriptionFilter' callbackUri: type: string description: The URI of the endpoint for the subscription related notification to be sent to. @@ -1640,7 +1057,7 @@ components: AppInstSubscriptionInfo.links: title: AppInstSubscriptionInfo.links required: - - self + - self type: object properties: self: @@ -1649,8 +1066,8 @@ components: AppLcmOpOccSubscriptionRequest: title: AppLcmOpOccSubscriptionRequest required: - - callbackUri - - subscriptionType + - callbackUri + - subscriptionType type: object properties: appLcmOpOccSubscriptionFilter: @@ -1684,11 +1101,11 @@ components: OperationStates: title: OperationStates enum: - - STARTING - - PROCESSING - - COMPLETED - - FAILED - - FAILED_TEMP + - STARTING + - PROCESSING + - COMPLETED + - FAILED + - FAILED_TEMP type: string description: "'Type of the LCM operation state represented by this application instance LCM operation occurrence.'" examples: @@ -1696,13 +1113,13 @@ components: OperationTypes: title: OperationTypes enum: - - INSTANTIATE - - OPERATE - - TERMINATE + - INSTANTIATE + - OPERATE + - TERMINATE type: string description: "'Type of the LCM operation represented by this application instance LCM operation occurrence.'" examples: - - INSTANTIATE + - INSTANTIATE MepInformation: type: object @@ -1718,7 +1135,7 @@ components: CreateAppInstanceRequest: title: CreateAppInstanceRequest required: - - appDId + - appDId type: object properties: appDId: @@ -1736,8 +1153,8 @@ components: AppInstSubscriptionRequest: title: AppInstSubscriptionRequest required: - - subscriptionType - - callbackUri + - subscriptionType + - callbackUri type: object properties: subscriptionType: @@ -1756,7 +1173,7 @@ components: AppInstanceSubscriptionFilter: title: AppInstanceSubscriptionFilter required: - - appInstSelectorType + - appInstSelectorType type: object properties: appInstSelectorType: @@ -1775,7 +1192,7 @@ components: AppsFromProviders: title: AppsFromProviders required: - - appProvider + - appProvider type: object properties: appProvider: @@ -1787,7 +1204,7 @@ components: AppProducts: title: AppProducts required: - - appName + - appName type: object properties: appName: @@ -1799,7 +1216,7 @@ components: AppProducts.Versions: title: AppProducts.Versions required: - - appSoftVersion + - appSoftVersion type: object properties: appSoftVersion: @@ -1814,36 +1231,36 @@ components: AppInstSelectorType: title: AppInstSelectorType enum: - - VOID - - APP_IDENTITY - - APP_NAME - - APP_D_ID - - APP_FROM_PROVIDER + - VOID + - APP_IDENTITY + - APP_NAME + - APP_D_ID + - APP_FROM_PROVIDER type: string description: 0 = void examples: - - VOID + - VOID AppInstanceState: title: AppInstanceState enum: - - NOT_INSTANTIATED - - STARTED - - STOPPED + - 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 + - NOT_INSTANTIATED AppInstNotification: title: AppInstNotification required: - - _links - - appDId - - appInstanceId - - appPkgId - - id - - notificationType - - subscriptionId - - timeStamp + - _links + - appDId + - appInstanceId + - appPkgId + - id + - notificationType + - subscriptionId + - timeStamp type: object properties: _links: @@ -1880,19 +1297,59 @@ components: LocationInformation: type: object required: - - countryCode + - countryCode properties: countryCode: type: string civicAddress: - $ref: '#/components/schemas/LocationInformation.civicAddress' + $ref: '#/components/schemas/LocationInformation.civicAddress' geographicalPosition: type: string + + McioInfo: + type: object + required: + - mcioId + - mcioName + - mcioNamespace + - vduId + - cismId + - mcioType + - desiredInstances + - availableInstances + properties: + mcioId: + type: String + description: Identifier of this MCIO, created by the CISM. + mcioName: + type: string + description: Human readable name of this MCIO. + mcioNamespace: + type: string + description: Namespace of this MCIO + vduId: + type: string + description: Reference to the applicable Vdu information element in the VNFD. + cismId: + type: string + description: Identifier of the CISM managing this MCIO. + mcioType: + type: string + description: The type of MCIO. See note 1. + desiredInstances: + type: Integer + description: Number of desired MCIO instances. + availableInstances: + type: Integer + description: Number of available MCIO instances + additionalInfo: + type: array + description: Additional information which is specific to the MCIO, its type, and which is available from the CISM. See note 2 LocationInformation.civicAddress: type: object required: - - civicAddressElement + - civicAddressElement properties: civicAddressElement: type: array @@ -1902,15 +1359,15 @@ components: AppInstanceInfo: title: AppInstanceInfo required: - - id - - appDId - - appProvider - - appName - - appSoftVersion - - appDVersion - - appPkgId - - instantiationState - - _links + - id + - appDId + - appProvider + - appName + - appSoftVersion + - appDVersion + - appPkgId + - instantiationState + - _links type: object properties: id: @@ -1928,6 +1385,20 @@ components: 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 + NOTE 2: This field applies if the data structure is used by MEAO. + vnfInstanceId: + type: string + description: | + Identifier of the VNF instance created by VNFM that the MEC application has been instantiated as.See note 2. + NOTE 2: This field applies if the data structure is used by MEAO. + communicationInterface: + type: string + items: + $ref: '#/components/schemas/CommunicationInterface' appName: type: string description: Name to identify the MEC application. @@ -1951,50 +1422,56 @@ components: $ref: '#/components/schemas/InstantiatedAppState' _links: $ref: '#/components/schemas/AppInstanceInfo.links' - description: "'The data type of AppInstanceInfo represents the parameters of instantiated application instance resources.'" + description: The data type of AppInstanceInfo represents the parameters of instantiated application instance resources. + OperationState: title: OperationState enum: - - STARTING - - PROCESSING - - COMPLETED - - FAILED - - FAILED_TEMP + - STARTING + - PROCESSING + - COMPLETED + - FAILED + - FAILED_TEMP type: string description: Operation state examples: - - STARTING + - STARTING InstantiationState: title: InstantiationState enum: - - NOT_INSTANTIATED - - INSTANTIATED + - NOT_INSTANTIATED + - INSTANTIATED type: string description: Instantiation state of the application instance examples: - - NOT_INSTANTIATED + - NOT_INSTANTIATED InstantiatedAppState: title: InstantiatedAppState required: - - operationalState + - operationalState type: object properties: operationalState: $ref: '#/components/schemas/OperationalState' + appInstLocation: + $ref: '#/components/schemas/LocationInformation' + mcioInfo: + $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 + - STARTED + - STOPPED type: string description: Operational state is applicable in the instantiation state INSTANTIATED examples: - - STARTED + - STARTED AppInstanceInfo.links: title: AppInstanceInfo.links required: - - self + - self type: object properties: self: @@ -2009,25 +1486,25 @@ components: LcmOperation: title: LcmOperation enum: - - INSTATIATE - - OPERATE - - TERMINATE + - INSTATIATE + - OPERATE + - TERMINATE type: string description: Type of the actual LCM operation represented by this application instance LCM operation occurrence examples: - - INSTATIATE + - INSTATIATE AppLcmOpOccNotification: title: AppLcmOpOccNotification required: - - id - - notificationType - - operationType - - operationState - - subscriptionId - - timeStamp - - appLcmOpOccId - - appInstanceId - - _links + - id + - notificationType + - operationType + - operationState + - subscriptionId + - timeStamp + - appLcmOpOccId + - appInstanceId + - _links type: object properties: id: @@ -2066,18 +1543,15 @@ components: $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 + - id + - notificationType + - subscriptionId + - timeStamp + - appInstanceId + - _links type: object properties: id: @@ -2108,12 +1582,12 @@ components: AppInstanceIdentifierDeletionNotification: title: AppInstanceIdentifierDeletionNotification required: - - id - - notificationType - - subscriptionId - - timeStamp - - appInstanceId - - _links + - id + - notificationType + - subscriptionId + - timeStamp + - appInstanceId + - _links type: object properties: id: @@ -2130,13 +1604,12 @@ components: _links: $ref: '#/components/schemas/Notification._links' - AppLcmOpOccNotification.links: title: AppLcmOpOccNotification.links required: - - appInstance - - subscription - - appLcmOpOcc + - appInstance + - subscription + - appLcmOpOcc type: object properties: appInstance: @@ -2146,10 +1619,11 @@ components: appLcmOpOcc: $ref: '#/components/schemas/LinkType' description: Links to resources related to this resource. + InstantiateAppRequest: title: InstantiateAppRequest required: - - selectedMECHostInfo + - selectedMECHostInfo type: object properties: locationConstraints: @@ -2158,25 +1632,50 @@ components: type: array items: $ref: '#/components/schemas/MECHostInformation' - description: Describes the information of selected host for the application instance. See note 2. + description: | + Describes the information of selected host for the application instance. See note 2. + NOTE 2: This field applies to Mm3 reference point only. vimConnectionInfo: type: array items: $ref: '#/components/schemas/VimConnectionInfo' description: >- Information about VIM connections to be used for managing the resources for the application instance, or refer to external / externally-managed virtual links. - This attribute shall only be supported and may be present if application-related resource management in direct mode is applicable. See note 2. + NOTE 2: This field applies to Mm3 reference point only. virtualComputeDescriptor: type: string - description: Describes CPU and memory requirements, as well as optional additional requirements, such as disk and acceleration related capabilities, of the virtualisation container used to realize the application instance to be created. This attribute may be provided in the InstantiateAppRequest structure to override the same attribute in the AppD. + 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 + NOTE 1: This attribute may be provided in the InstantiateAppRequest structure to override the same attribute in the AppD. + NOTE 4: Only one of virtualComputeDescriptor or osContainerDescriptor shall be present. + osContainerDescriptor: + type: array + items: + $ref: '#/components/schemas/OsContainerDescriptor' + description: | + Describes CPU, memory requirements and limits, and software images of the OS Containers realizing this MEC application corresponding to OS Containers sharing the + same host and same network namespace.See note 1, note 4 and note 5. + NOTE 1: This attribute may be provided in the InstantiateAppRequest structure to override the same attribute in the AppD. + 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. virtualStorageDescriptor: type: array items: - type: string - description: Defines descriptors of virtual storage resources to be used by the application instance to be created. See note 1. + $ref: '#/components/schemas/VirtualStorageDescriptor' + description: | + Defines descriptors of virtual storage resources to be used by the application instance to be created. See note 1. + NOTE 1: This attribute may be provided in the InstantiateAppRequest structure to override the same attribute in the AppD. appTermCandsForCoord: - $ref: '#/components/schemas/AppTermCandsForCoord' + type: string + 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 + NOTE 3: This field applies to Mm1 reference point only AppTermCandsForCoord: type: object @@ -2186,9 +1685,257 @@ components: terminationOptions: type: array items: - $ref: '#/components/schemas/AppTermCandsForCoord.terminationOptions' + $ref: '#/components/schemas/AppTermCandsForCoord.terminationOptions' + + VirtualStorageDescriptor: + type: object + required: + - id + - typeOfStorage + properties: + id: + type: string + description: Unique identifier of this VirtualStorageDesc in the VNFD. + typeOfStorage: + type: string + description: Type of virtualised storage resource. + enum: + - BLOCK + - OBJECT + - FILE + blockStorageData: + $ref: '#/components/schemas/BlockStorageData' + description: Details of block storage. + objectStorageData: + $ref: '#/components/schemas/ObjectStorageData' + description: Details of object storage. + fileStorageData: + $ref: '#/components/schemas/FileStorageData' + description: Details of file storage. + nfviMaintenanceInfo: + $ref: '#/components/schemas/NfviMaintenanceInfo' + description: Information on the rules to be observed during NFVI operation and maintenance. + perVnfcInstance: + type: boolean + description: Indicates whether the virtual storage resource shall be instantiated per VNFC instance. + + NfviMaintenanceInfo: + type: object + required: + - impactNotificationLeadTime + properties: + impactNotificationLeadTime: + type: number + description: The minimum notification lead time requested for upcoming impact of the virtualised resource or their group. + isImpactMitigationRequested: + type: boolean + description: When set to True, it is requested that at the time of the notification of an upcoming change that is expected to have an impact on the VNF, virtualised resource(s) of the same characteristics as the impacted ones is/are provided to compensate for the impact. + supportedMigrationType: + type: array + description: Applicable to VirtualComputeDesc and VirtualStorageDesc. When present, specifies the allowed migration types in the order of preference in case of an impact starting with the most preferred type. + items: + type: string + enum: + - NO_MIGRATION + - OFFLINE_MIGRATION + - LIVE_MIGRATION + maxUndetectableInterruptionTime: + type: number + description: Applicable to VirtualComputeDesc and VirtualStorageDesc. When present, it specifies the maximum interruption time that can go undetected at the VNF level and therefore which will not trigger VNF-internal recovery during live migration. + minRecoveryTimeBetweenImpacts: + type: number + description: When present, it specifies the time required by the group to recover from an impact, thus, the minimum time requested between consecutive impacts of the group. + maxNumberOfImpactedInstances: + $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. + minNumberOfPreservedInstances: + $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. + + MaxNumberOfImpactedInstances: + type: object + required: + - maxNumberOfImpactedInstances + properties: + groupSize: + type: integer + description: | + Determines the size of the group for which the maxNumberOfImpactedInstances is specified. + 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. + maxNumberOfImpactedInstances: + type: integer + description: | + The maximum number of instances that can be impacted simultaneously within the group of the specified size. + 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 + items: + $ref: '#/components/schemas/ipAddresses' + description: Entry point information of the service as one or more pairs of IP address and port. + ipAddresses: + type: object + required: + - host + - port + properties: + host: + type: string + description: Host portion of the address. + port: + type: integer + description: Port portion of the address. + + MinNumberOfPreservedInstances: + type: object + required: + - minNumberOfPreservedInstances + properties: + groupSize: + type: integer + description: | + When present, determines the size of the group for which the minNumberOfPreservedInstances is specified. Otherwise, the size is not limited. + 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. + minNumberOfPreservedInstances: + type: integer + description: | + The minimum number of instances which need to be preserved simultaneously within the group of the specified size. + NOTE 1: Each groupSize value specified for a group of virtual resources shall be unique, and it shall be possible to form + an ascending ordered list of groupSizes. + NOTE 2: The number of instances in the group for which the minNumberOfPreservedInstances is specified may be equal + to groupSize or less. + + FileStorageData: + type: object + required: + - sizeOfStorage + - fileSystemProtocol + - intVirtualLinkDesc + properties: + sizeOfStorage: + type: number + description: Size of virtualised storage resource in GB. + fileSystemProtocol: + type: string + description: The shared file system protocol (e.g. NFS, CIFS). + intVirtualLinkDesc: + $ref: '#/components/schemas/VnfVirtualLinkDesc' + description: Reference of the internal VLD which this file storage connects to. + + VnfVirtualLinkDesc: + type: object + required: + - virtualLinkDescId + - virtualLinkDescFlavour + - connectivityType + properties: + virtualLinkDescId: + 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: + $ref: '#/components/schemas/ConnectivityType' + testAccess: + type: array + description: Specifies test access facilities expected on the VL. + items: + type: string + example: passive monitoring + description: + type: string + description: Provides human-readable information on the purpose of the VL. + example: control plane traffic + monitoringParameter: + type: array + description: Specifies the virtualised resource related performance metrics on VLD level to be tracked by the VNFM. + items: + $ref: '#/components/schemas/MonitoringParameter' + nfviMaintenanceInfo: + $ref: '#/components/schemas/NfviMaintenanceInfo' + externallyManaged: + 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 + + ConnectivityType: + type: object + required: + - layerProtocol + propertise: + layerProtocol: + type: array + description: | + Specifies the protocols that the VL uses See note 1 and note 2. + 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. + 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.). + + VirtualLinkDescFlavour: + type: object + required: + - flavourId + properties: + flavourId: + type: string + description: Identifies a flavour within a VnfVirtualLinkDesc. + qos: + $ref: '#/components/schemas/QoS' + description: QoS of the VL. + + QoS: + type: object + required: + - latency + - packetDelayVariation + - packetLossRatio + 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. + + ObjectStorageData: + type: object + properties: + maxSizeOfStorage: + type: number + description: Max size of virtualised storage resource in GB. - AppTermCandsForCoord.terminationOptions: type: object required: @@ -2201,12 +1948,321 @@ components: LinkType: title: LinkType required: - - href + - href type: object properties: href: type: string description: URI referring to a resource + + 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: + type: object + description: | + An array of key-value pairs of extended resources required by the container see note. + 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. + 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: + 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. + + MonitoringParameter: + type: object + required: + - monitoringParameterId + - performanceMetric + 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. + + VirtualComputeDescriptor: + title: VirtualComputeDescriptor + type: object + required: + - virtualComputeDescId + - virtualMemory + - virtualCpu + properties: + virtualComputeDescId: + type: string + description: Unique identifier of this VirtualComputeDesc in the VNFD. + logicalNode: + type: array + items: + $ref: '#/components/schemas/LogicalNodeRequirements' + requestAdditionalCapabilities: + type: array + items: + $ref: '#/components/schemas/RequestedAdditionalCapabilityData' + computeRequirements: + type: array + items: + $ref: Not specified + virtualMemory: + $ref: '#/components/schemas/VirtualMemoryData' + virtualCpu: + $ref: '#/components/schemas/VirtualCpuData' + virtualDisk: + type: array + items: + $ref: '#/components/schemas/BlockStorageData' + + BlockStorageData: + type: object + required: + - sizeOfStorage + properties: + sizeOfStorage: + type: number + description: Size of virtualised storage resource in GB. + vduStorageRequirements: + type: array + items: + type: object + description: An array of key-value pairs that articulate the storage deployment requirements. + description: Array of key-value pair requirements on the storage for the VDU. + rdmaEnabled: + type: boolean + description: Indicate if the storage support RDMA. + 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. + + SwImageDesc: + type: object + required: + - id + - name + - version + - containerFormat + - swImage + properties: + id: + type: string + description: The identifier of this software image. + name: + type: string + description: The name of this software image. + version: + type: string + description: The version of this software image. + checksum: + $ref: '#/components/schemas/ChecksumData' + description: The checksum of the software image file. + containerFormat: + type: string + 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. + 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. + 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. + size: + type: number + description: The size of this software image file. + swImage: + $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. + + ChecksumData: + type: object + required: + - algorithm + - hash + properties: + algorithm: + type: string + description: Specifies the algorithm used to obtain the checksum value see note. + hash: + type: string + description: | + Contains the result of applying the algorithm indicated by the algorithm attribute to the data to which this ChecksumData refers. + NOTE: The algorithm attribute value shall be one of the Hash Function Textual Names present in [2]. + + 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. + + RequestedAdditionalCapabilityData: + type: object + required: + - requestedAdditionalCapabilityName + - supportMandatory + - targetPerformanceParameters + properties: + requestedAdditionalCapabilityName: + 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: + type: string + description: Specifies the minimum version of the requested additional capability + preferredRequestedAdditionalCapabilityVersion: + type: string + description: Specifies the preferred version of the requested additional capability + targetPerformanceParameters: + type: array + items: + $ref: '#/components/schemas/KeyValuePair' + KeyValuePair: + type: object + properties: + key: + type: string + value: + type: string + + VirtualMemoryData: + type: object + required: + - virtualMemSize + properties: + virtualMemSize: + type: number + description: Amount of virtual memory in MB. + virtualMemOversubscriptionPolicy: + description: The memory core oversubscription policy in terms of virtual memory to physical memory on the platform. + vduMemRequirements: + type: array + items: + $ref: '#/components/schemas/KeyValuePair' + 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: + description: Specifies requirements on the huge pages resources for the virtual memory. + + VirtualCpuData: + type: object + required: + - numVirtualCpu + 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: + 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: object + description: Array of key-value pair requirements on the Compute (CPU) for the VDU. + virtualCpuPinning: + $ref: '#/components/schemas/VirtualCpuPinningData' + + VirtualCpuPinningData: + type: object + properties: + virtualCpuPinningPolicy: + type: string + 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. + LocationConstraints: title: LocationConstraints type: object @@ -2225,8 +2281,8 @@ components: CivicAddressElement: title: CivicAddressElement required: - - caType - - caValue + - caType + - caValue type: object properties: caType: @@ -2240,7 +2296,7 @@ components: MECHostInformation: title: MECHostInformation required: - - hostId + - hostId type: object properties: hostId: @@ -2252,35 +2308,36 @@ components: OperateAppRequest: title: OperateAppRequest required: - - changeStateTo + - changeStateTo 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. + 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 + note2. contentEncoding: int32 stopType: $ref: '#/components/schemas/StopType' StopType: title: StopType enum: - - FORCEFUL - - GRACEFUL + - FORCEFUL + - GRACEFUL type: string description: Signals forceful or graceful stop examples: - - FORCEFUL + - FORCEFUL ChangeStateTo: title: ChangeStateTo enum: - - STARTED - - STOPPED + - STARTED + - STOPPED type: string description: The desired operational state examples: - - STARTED + - STARTED ProblemDetails: title: ProblemDetails type: object @@ -2304,20 +2361,21 @@ components: TerminateAppRequest: title: TerminateAppRequest required: - - terminationType + - terminationType 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." + 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." contentEncoding: int32 terminationType: $ref: '#/components/schemas/TerminationType' TimeStamp: title: TimeStamp required: - - nanoSeconds - - seconds + - nanoSeconds + - seconds type: object properties: nanoSeconds: @@ -2331,8 +2389,8 @@ components: TerminationType: title: TerminationType enum: - - FORCEFUL - - GRACEFUL + - FORCEFUL + - GRACEFUL type: string description: "'Indicates whether forceful or graceful termination is requested.'" examples: @@ -2340,37 +2398,108 @@ components: VimConnectionInfo: title: VimConnectionInfo required: - - id - - vimType + - id + - vimType type: object properties: accessInfo: type: object - 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: "'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 - 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: "'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 - 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: "'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. + 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. + 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 required: - - subscription + - subscription type: object properties: subscription: $ref: '#/components/schemas/LinkType' description: Links to resources related to this notification. + responses: + '200': + description: OK + '204': + description: No Content + '400': + 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.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + 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.' + 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.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '412': + description: 'Precondition failed : used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts when using PUT' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '414': + description: 'URI Too Long : used to indicate that the server is refusing to process the request because the request URI is longer than the server is willing or able to process.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '415': + description: 'Unsupported Media Type : used to indicate that the server or the client does not support the content type of the entity body.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '422': + description: 'Unprocessable Entity : used to indicate that the server understands the content type of the request entity and that the syntax of the request entity is correct but that the server is unable to process the contained instructions. This error condition can occur if an JSON request body is syntactically correct but semantically incorrect, for example if the target area for the request is considered too large. This error condition can also occur if the capabilities required by the request are not supported.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests: used when a rate limiter has triggered.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + security: - {} -- GitLab From f4a17369fc6de21270fb0b7bc2332e07f9c8d6cc Mon Sep 17 00:00:00 2001 From: Umair Zafar Date: Mon, 8 May 2023 14:13:40 +0500 Subject: [PATCH 07/50] fix AppLcm issues --- MEC010-2_AppLcm.yaml | 131 +++++++++++++++++-------------------------- 1 file changed, 51 insertions(+), 80 deletions(-) diff --git a/MEC010-2_AppLcm.yaml b/MEC010-2_AppLcm.yaml index 7c7e476..a76210d 100644 --- a/MEC010-2_AppLcm.yaml +++ b/MEC010-2_AppLcm.yaml @@ -210,10 +210,10 @@ paths: application/json: schema: oneOf: - - $ref: '#/components/schemas/AppInstSubscriptionRequest' - - $ref: '#/components/schemas/AppLcmOpOccSubscriptionRequest' - - $ref: '#/components/schemas/AppInstIdCreationSubscriptionRequest' - - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionRequest' + - $ref: '#/components/schemas/AppInstSubscriptionRequest' + - $ref: '#/components/schemas/AppLcmOpOccSubscriptionRequest' + - $ref: '#/components/schemas/AppInstIdCreationSubscriptionRequest' + - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionRequest' contentMediaType: application/json required: true responses: @@ -224,10 +224,10 @@ paths: application/json: schema: oneOf: - - $ref: '#/components/schemas/AppInstSubscriptionInfo' - - $ref: '#/components/schemas/AppLcmOpOccSubscriptionInfo' - - $ref: '#/components/schemas/AppInstIdCreationSubscriptionInfo' - - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionInfo' + - $ref: '#/components/schemas/AppInstSubscriptionInfo' + - $ref: '#/components/schemas/AppLcmOpOccSubscriptionInfo' + - $ref: '#/components/schemas/AppInstIdCreationSubscriptionInfo' + - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionInfo' contentMediaType: application/json '400': $ref: '#/components/responses/400' @@ -255,8 +255,8 @@ paths: application/json: schema: oneOf: - - $ref: '#/components/schemas/AppInstNotification' - - $ref: '#/components/schemas/AppLcmOpOccNotification' + - $ref: '#/components/schemas/AppInstNotification' + - $ref: '#/components/schemas/AppLcmOpOccNotification' responses: '204': description: "No content" @@ -322,10 +322,10 @@ paths: application/json: schema: oneOf: - - $ref: '#/components/schemas/AppInstSubscriptionInfo' - - $ref: '#/components/schemas/AppLcmOpOccSubscriptionInfo' - - $ref: '#/components/schemas/AppInstIdCreationSubscriptionInfo' - - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionInfo' + - $ref: '#/components/schemas/AppInstSubscriptionInfo' + - $ref: '#/components/schemas/AppLcmOpOccSubscriptionInfo' + - $ref: '#/components/schemas/AppInstIdCreationSubscriptionInfo' + - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionInfo' contentMediaType: application/json '400': $ref: '#/components/responses/400' @@ -387,10 +387,10 @@ paths: application/json: schema: oneOf: - - $ref: '#/components/schemas/AppInstNotification' - - $ref: '#/components/schemas/AppLcmOpOccNotification' - - $ref: '#/components/schemas/AppInstanceIdentifierCreationNotification' - - $ref: '#/components/schemas/AppInstanceIdentifierDeletionNotification' + - $ref: '#/components/schemas/AppInstNotification' + - $ref: '#/components/schemas/AppLcmOpOccNotification' + - $ref: '#/components/schemas/AppInstanceIdentifierCreationNotification' + - $ref: '#/components/schemas/AppInstanceIdentifierDeletionNotification' contentMediaType: application/json required: true responses: @@ -1319,7 +1319,7 @@ components: - availableInstances properties: mcioId: - type: String + type: string description: Identifier of this MCIO, created by the CISM. mcioName: type: string @@ -1337,10 +1337,10 @@ components: type: string description: The type of MCIO. See note 1. desiredInstances: - type: Integer + type: integer description: Number of desired MCIO instances. availableInstances: - type: Integer + type: integer description: Number of available MCIO instances additionalInfo: type: array @@ -1396,9 +1396,9 @@ components: Identifier of the VNF instance created by VNFM that the MEC application has been instantiated as.See note 2. NOTE 2: This field applies if the data structure is used by MEAO. communicationInterface: - type: string - items: - $ref: '#/components/schemas/CommunicationInterface' + type: string + items: + $ref: '#/components/schemas/CommunicationInterface' appName: type: string description: Name to identify the MEC application. @@ -1875,30 +1875,30 @@ components: default: ALLOWED ConnectivityType: - type: object - required: - - layerProtocol - propertise: - layerProtocol: - type: array - description: | - Specifies the protocols that the VL uses See note 1 and note 2. - 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. - items: + type: object + required: + - layerProtocol + properties: + layerProtocol: + type: array + description: | + Specifies the protocols that the VL uses See note 1 and note 2. + 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. + items: + type: string + enum: + - Ethernet + - MPLS + - ODU2 + - IPV4 + - IPV6 + - Pseudo-Wire + - Etc + minItems: 1 + flowPattern: 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: Specifies the flow pattern of the connectivity (Line, Tree, Mesh, etc.). VirtualLinkDescFlavour: type: object @@ -2052,17 +2052,16 @@ components: type: string description: Unique identifier of this VirtualComputeDesc in the VNFD. logicalNode: - type: array - items: - $ref: '#/components/schemas/LogicalNodeRequirements' + type: array + items: + $ref: '#/components/schemas/LogicalNodeRequirements' requestAdditionalCapabilities: type: array items: $ref: '#/components/schemas/RequestedAdditionalCapabilityData' computeRequirements: type: array - items: - $ref: Not specified + description: Not specified. virtualMemory: $ref: '#/components/schemas/VirtualMemoryData' virtualCpu: @@ -2436,10 +2435,6 @@ components: description: Links to resources related to this notification. responses: - '200': - description: OK - '204': - description: No Content '400': description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' content: @@ -2470,30 +2465,6 @@ components: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' - '412': - description: 'Precondition failed : used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts when using PUT' - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '414': - description: 'URI Too Long : used to indicate that the server is refusing to process the request because the request URI is longer than the server is willing or able to process.' - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '415': - description: 'Unsupported Media Type : used to indicate that the server or the client does not support the content type of the entity body.' - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '422': - description: 'Unprocessable Entity : used to indicate that the server understands the content type of the request entity and that the syntax of the request entity is correct but that the server is unable to process the contained instructions. This error condition can occur if an JSON request body is syntactically correct but semantically incorrect, for example if the target area for the request is considered too large. This error condition can also occur if the capabilities required by the request are not supported.' - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' '429': description: 'Too Many Requests: used when a rate limiter has triggered.' content: -- GitLab From ece67e507ba1d1f50d0ae6dc74a5cb8ed6276248 Mon Sep 17 00:00:00 2001 From: Umair Zafar Date: Mon, 15 May 2023 15:06:20 +0500 Subject: [PATCH 08/50] add description and notes in AppGrant API --- MEC010-2_AppGrant.yaml | 113 ++++++++++++++++++++++++++++------------- 1 file changed, 79 insertions(+), 34 deletions(-) diff --git a/MEC010-2_AppGrant.yaml b/MEC010-2_AppGrant.yaml index 552f25d..a6fec75 100644 --- a/MEC010-2_AppGrant.yaml +++ b/MEC010-2_AppGrant.yaml @@ -119,6 +119,17 @@ components: linkPortId: 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 @@ -146,7 +157,6 @@ components: type: string description: > Type of the resource definition referenced. - NOTE: This permitted value reflects the ETSI NFV interpretation of the cloud native workloads. examples: - COMPUTE @@ -165,8 +175,9 @@ components: 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." + 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. @@ -211,6 +222,7 @@ components: vimConnectionId: type: string description: Identifier of the VIM connection to manage this resource. + Grant: title: Grant required: @@ -231,52 +243,66 @@ components: description: The identifier of the application lifecycle management operation occurrence associated to the Grant. vimConnections: 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. + 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. items: $ref: "#/components/schemas/VimConnectionInfo" zones: type: array items: $ref: "#/components/schemas/ZoneInfo" - description: "" + description: Identifies resource zones where the resources are approved to be allocated by the MEPM. zoneGroups: type: array items: $ref: "#/components/schemas/ZoneGroupInfo" - description: "" + 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. addResources: type: array items: $ref: "#/components/schemas/GrantInfo" - description: "" + description: List of resources that are approved to be added, with one entry per resource. tempResources: type: array items: $ref: "#/components/schemas/GrantInfo" - description: "" + description: List of resources that are approved to be temporarily instantiated during the runtime of the lifecycle operation, with + one entry per resource removeResources: type: array items: $ref: "#/components/schemas/GrantInfo" - description: "" + description: List of resources that are approved to be removed, with one entry per resource. updateResources: type: array items: $ref: "#/components/schemas/GrantInfo" - description: "" + description: List of resources that are approved to be modified, with one entry per resource 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. extVirtualLinks: type: array items: $ref: "#/components/schemas/ExtVirtualLinkData" - description: "" + description: Information about external VLs to connect the application instance to. See note 3. additionalParams: type: object 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'" _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 '" + 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 @@ -324,14 +350,14 @@ components: 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. - NOTE: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. mcioConstraints: - type: object + type: array 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'" - NOTE: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. + description: | + NOTE: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. GrantRequest: title: GrantRequest @@ -354,34 +380,42 @@ components: 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: "" + 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: "" + 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: "" + 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: "" + 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: - type: object + type: string 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: "EPM, 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'" + 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 @@ -415,14 +449,15 @@ components: type: string description: | "'MAC address. If this attribute is not present, it shall be chosen by the VIM. See note 1.'" - NOTE 1: At least one of "macAddress" or "ipAddresses" shall be present. ipAddresses: type: array 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. - NOTE 1: At least one of "macAddress" or "ipAddresses" shall be present + 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: type: object @@ -526,6 +561,7 @@ components: 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: type: string description: Reference to the related VDU in the AppD applicable to this resource. @@ -543,8 +579,9 @@ components: shall be "1" otherwise. 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 '" - + 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: @@ -569,12 +606,6 @@ components: type: string description: | Identifier of the resource in the scope of the VIM or the CISM or the resource provider. See note 2. - 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 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. @@ -582,7 +613,20 @@ components: type: string description: > Type of the resource in the scope of the VIM. See note 1. - 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. + 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. VimConnectionInfo: title: VimConnectionInfo @@ -633,7 +677,8 @@ components: type: string description: > Identifier of the software image in the resource management layer (i.e. VIM) See note. - 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". + 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". ZoneGroupInfo: title: ZoneGroupInfo -- GitLab From 0c818d785e7b7b8745919d635510216cdf3260c6 Mon Sep 17 00:00:00 2001 From: Umair Zafar Date: Mon, 15 May 2023 15:55:54 +0500 Subject: [PATCH 09/50] add description and notes in AppPkgMgmt API --- MEC010-2_AppPkgMgmt.yaml | 319 +++++++++++++++++++++++++-------------- 1 file changed, 206 insertions(+), 113 deletions(-) diff --git a/MEC010-2_AppPkgMgmt.yaml b/MEC010-2_AppPkgMgmt.yaml index 9c1ad41..36f1c53 100644 --- a/MEC010-2_AppPkgMgmt.yaml +++ b/MEC010-2_AppPkgMgmt.yaml @@ -114,7 +114,7 @@ paths: type: array items: $ref: '#/components/schemas/AppPkgInfo' - description: '' + 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' contentMediaType: application/json '400': $ref: '#/components/responses/400' @@ -221,7 +221,7 @@ paths: type: array items: $ref: '#/components/schemas/AppPkgInfo' - description: '' + 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. contentMediaType: application/json '400': $ref: '#/components/responses/400' @@ -260,7 +260,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AppPkgInfo' + items: + $ref: '#/components/schemas/AppPkgInfo' + description: Indicates the success of request. The response message content shall contain a representation of the resource '400': $ref: '#/components/responses/400' '401': @@ -334,7 +336,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AppPkgInfoModifications' + items: + $ref: '#/components/schemas/AppPkgInfoModifications' + description: Shall be returned when the operation has been completed successfully. '400': $ref: '#/components/responses/400' '401': @@ -372,7 +376,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AppPkgInfo' + 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': @@ -437,7 +443,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AppPkgInfoModifications' + items: + $ref: '#/components/schemas/AppPkgInfoModifications' + description: Shall be returned when the operation has been completed successfully. required: true responses: '200': @@ -485,6 +493,7 @@ paths: application/json: schema: $ref: '#/components/schemas/AppPkgSubscriptionInfo' + descriprion: Upon success, a response message contentrepresenting the created subscription shall bereturned. '400': $ref: '#/components/responses/400' '401': @@ -531,6 +540,7 @@ paths: application/json: schema: $ref: '#/components/schemas/AppPkgSubscriptionLinkList' + description: Upon success, a response message content containing a list of zero or more subscriptions shallbe returned. '400': $ref: '#/components/responses/400' '401': @@ -568,6 +578,7 @@ paths: application/json: schema: $ref: '#/components/schemas/AppPkgSubscriptionInfo' + descriprion: Upon success, a response message content containing a representation of the resource shall be returned. '400': $ref: '#/components/responses/400' '401': @@ -672,6 +683,9 @@ paths: text/plain: schema: $ref: '#/components/schemas/AppD' + descriprion: 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' @@ -745,6 +759,9 @@ paths: text/plain: schema: $ref: '#/components/schemas/AppD' + descriprion: 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' @@ -963,7 +980,6 @@ components: - appSoftVersion - mecVersion - swImageDescriptor - - virtualComputeDescriptor - appExtCpd type: object properties: @@ -979,20 +995,17 @@ components: type: array items: $ref: '#/components/schemas/LogicalNodeRequirements' - description: | - The logical node requirements. See note 6 and note 7. - 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. + 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. - 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. + 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: - $ref: '#/components/schemas/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. @@ -1003,9 +1016,7 @@ components: type: array items: $ref: '#/components/schemas/AppExternalCpd' - description: | - Describes external interface(s) exposed by this MEC application. See note 4. - NOTE 4: External interfaces are used to connect to e.g. other MEC applications, MEC services, UEs and also MEC platform and OSS. + description: Describes external interface(s) exposed by this MEC application. See note 4. appFeatureOptional: type: array items: @@ -1047,11 +1058,10 @@ components: 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. - NOTE 7: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. + 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: @@ -1068,20 +1078,20 @@ components: 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. swImageDescriptor: - type: string - description: | - Describes the descriptors of the software image to be used by the virtualisation container used to realize this MEC application. See note 5. - NOTE 5: Only one of virtualComputeDescriptor or osContainerDescriptor shall be present. If virtualComputeDescriptor presents, only a single swImageDescriptor shall be provided. + 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: type: string description: NFV transportDependencies: - type: array + 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 virtualisation container used to realize this MEC application. + 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' @@ -1089,30 +1099,116 @@ components: 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. - NOTE 5: Only one of virtualComputeDescriptor or osContainerDescriptor shall be present. If virtualComputeDescriptor presents, only a single swImageDescriptor shall be provided. - NOTE 7: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. + 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. + + SwImageDescriptor: + type: object + required: + - id + - name + - version + - containerFormat + - swImage + properties: + id: + type: string + description: The identifier of this software image. + name: + type: string + description: The name of this software image. + version: + type: string + items: + $ref: "#/components/schemas/Version" + 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 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. See note 1. + minRam: + type: number + description: The minimal RAM requirement for this software image. See note 2. + size: + type: number + description: The size of this software image file. See note 3. + swImage: + type: object + 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 + - 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]. See note 7. - NOTE 7: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. + refer to the description under the table 7.1.6.2.2-1 of ETSI GS NFV IFA 011 [1]. McioIdentificationData: type: object @@ -1122,14 +1218,15 @@ components: properties: name: type: string - description: | - The name of the mcio. See note 1. - NOTE 1: When the container infrastructure service is a Kubernetes® instance it is the value of the 'metadata.name' field in Kubernetes® manifest. + description: The name of the mcio. See note 1. type: type: string - description: | - The type of the mcio. See note 2. - NOTE 2: When the container infrastructure service is a Kubernetes® instance it is the value of the 'kind' field in Kubernetes® manifest. + 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 @@ -1162,11 +1259,9 @@ components: type: array items: type: object - description: | - An array of key-value pairs of extended resources required by the container see note. - 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. - additionalProperties: - type: string + 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 @@ -1196,6 +1291,10 @@ components: 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: object @@ -1292,6 +1391,8 @@ 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 SwImageDesc: type: object @@ -1313,22 +1414,22 @@ components: description: The version of this software image. checksum: $ref: '#/components/schemas/ChecksumData' - description: The checksum of the software image file. + description: The checksum of the software image file. See note 3 containerFormat: type: string 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. + 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. + 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. + 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. + description: The size of this software image file. See note 3 swImage: $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. @@ -1340,15 +1441,10 @@ components: items: type: string description: Specifies the virtualisation environments (e.g. hypervisor) compatible with this software image. - virtualStorageDescriptor: - type: array - items: - type: string - description: Defines descriptors of virtual storage resources to be used by the MEC application. - userContextTransferCapability: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/UserContextTransferCapability' - appNetworkPolicy: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/AppNetworkPolicy' + 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: type: object @@ -1361,9 +1457,9 @@ components: description: Specifies the algorithm used to obtain the checksum value see note. hash: type: string - description: | - Contains the result of applying the algorithm indicated by the algorithm attribute to the data to which this ChecksumData refers. - NOTE: The algorithm attribute value shall be one of the Hash Function Textual Names present in [2]. + 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: type: object @@ -1454,22 +1550,21 @@ components: properties: inherited_attributes: type: object - description: | - All attributes inherited from Cpd. See note 2. - 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. + description: All attributes inherited from Cpd. See note 2. virtualNetworkInterfaceRequirements: type: array items: $ref: '#/components/schemas/VirtualNetworkInterfaceRequirements' - description: | - Specifies requirements on a virtual network interface realizing the CPs instantiated from this CPD. See note 1. - NOTE 1: An AppD conformant to the present document shall not specify "virtualNetworkInterfaceRequirements" in AppExternalCpd corresponding to primary container cluster network interfaces. + 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: | + 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. AdditionalServiceData: type: object @@ -1483,11 +1578,11 @@ components: minItems: 1 serviceData: type: object - description: | - Service matching information exposed by the VirtualCp. See note. - 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. + description: Service matching information exposed by the VirtualCp. See note. + description: | + 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 @@ -1525,26 +1620,17 @@ components: 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 - NOTE: At least one of the attributes "standardizedNetworkInterfaceRequirements", "networkInterfaceRequirements", - "nicIoRequirements" shall be present. + 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. - NOTE: At least one of the attributes "standardizedNetworkInterfaceRequirements", "networkInterfaceRequirements", - "nicIoRequirements" shall be present. + 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 - NOTE: At least one of the attributes "standardizedNetworkInterfaceRequirements", "networkInterfaceRequirements", - "nicIoRequirements" shall be present. + 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 @@ -1587,16 +1673,11 @@ components: type: string description: The singleton signing certificate if it is included as a file in the AppD archive. softwareImages: - type: object - description: | - Information of application software image in application package. Type is TBD. See note 1. - NOTE 1: The data type of application software image information data model is related to virtualisation method and - needs for further study. + type: array + description: Information of application software image in application package. Type is TBD. See note 1. additionalArtifacts: - type: object - description: | - Additional information of application package artifacts that are not application software images. Type is TBD. See note 2. - NOTE 2: The data type of additional information of application package artifacts is not specified in the present document. + type: array + description: Additional information of application package artifacts that are not application software images. Type is TBD. See note 2. onboardingState: $ref: '#/components/schemas/OnboardingState' operationalState: @@ -1616,7 +1697,13 @@ components: 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'" _links: $ref: '#/components/schemas/AppPkgInfo.links' - description: "'The data type AppPkgInfo represents the parameters for an application package resource'" + 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 @@ -1675,6 +1762,7 @@ components: vnfPkgInfo: $ref: '#/components/schemas/LinkType' description: Links to resources related to this resource. + AppPkgNotification: title: AppPkgNotification required: @@ -1710,6 +1798,7 @@ components: _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: @@ -1838,10 +1927,10 @@ components: properties: appPkgInfoId: 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. + 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: 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. + 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. @@ -1866,6 +1955,8 @@ components: 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. Checksum: title: Checksum @@ -1896,10 +1987,10 @@ components: 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. + 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. @@ -1908,7 +1999,9 @@ components: 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]. + KeyValuePairs: type: object additionalProperties: -- GitLab From e296382699c3ecdaeed2e5ad657f1573b4bf01ee Mon Sep 17 00:00:00 2001 From: Umair Zafar Date: Mon, 15 May 2023 15:58:54 +0500 Subject: [PATCH 10/50] add description and notes in AppLcm API --- MEC010-2_AppLcm.yaml | 395 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 312 insertions(+), 83 deletions(-) diff --git a/MEC010-2_AppLcm.yaml b/MEC010-2_AppLcm.yaml index a76210d..d6490eb 100644 --- a/MEC010-2_AppLcm.yaml +++ b/MEC010-2_AppLcm.yaml @@ -33,7 +33,7 @@ paths: operationId: appInstancePOST parameters: [] requestBody: - description: '' + description: The POST method is used to create an application instance resource. content: application/json: schema: @@ -817,30 +817,48 @@ components: 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'" - + 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: @@ -853,6 +871,7 @@ components: description: URI referring to a resource subscriptions: type: array + description: A link list to the subscriptions. items: $ref: '#/components/schemas/AppInstanceSubscriptionLinkList._links.subscriptions' @@ -865,7 +884,10 @@ components: href: type: string format: uri + description: The URI referring to the subscription. subscriptionType: + type: object + description: Type of the subscription. $ref: '#/components/schemas/AppInstanceSubscriptionType' @@ -899,11 +921,17 @@ components: 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: + 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". AppInstIdDeletionSubscriptionRequest: type: object @@ -917,7 +945,10 @@ components: callbackUri: 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: @@ -930,19 +961,27 @@ components: properties: id: type: string + description: Identifier of the subscription to application instance operational state change notification. subscriptionType: type: string + description: Shall be set to "AppIdentifierCreationSubscription". callbackUri: 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: @@ -955,20 +994,25 @@ components: 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: 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: @@ -979,12 +1023,15 @@ components: type: object properties: self: + type: object + description: URI of this resource. $ref: '#/components/schemas/LinkType' appInstance: + type: object + description: Link to the application instance that the operation applies to. $ref: '#/components/schemas/LinkType' description: Links to resources related to this resource. - AppLcmOpOccSubscriptionInfo: title: AppLcmOpOccSubscriptionInfo required: @@ -1006,10 +1053,12 @@ components: callbackUri: type: string description: The URI of the endpoint for the notification to be sent to. - appLcmOpOccSubscriptionFilter: + appLcmOpOccSubscriptionFilter: + type: object $ref: '#/components/schemas/AppLcmOpOccSubscriptionFilter' description: Criteria used to select application LCM operation occurrences on which to send notifications related to this subscription. _links: + type: object $ref: '#/components/schemas/AppLcmOpOccSubscriptionInfo.links' description: "'This data type represents a subscription to notifications of application life cycle management operation occurrence'" @@ -1020,8 +1069,11 @@ components: 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: @@ -1042,18 +1094,23 @@ components: - 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: type: string description: The URI of the endpoint for the subscription related notification to be sent to. _links: + 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: @@ -1061,8 +1118,11 @@ components: type: object 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: @@ -1071,9 +1131,12 @@ components: 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". @@ -1083,14 +1146,22 @@ components: 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: + 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. $ref: '#/components/schemas/OperationStates' operationTypes: + type: array + description: Type of the LCM operation represented by this application instance LCM operation occurrence. $ref: '#/components/schemas/OperationTypes' + NotificationTypes: title: NotificationTypes const: AppLcmOperationOccurrenceNotification @@ -1098,6 +1169,7 @@ components: description: Match particular notification types. examples: - AppLcmOperationOccurrenceNotification + OperationStates: title: OperationStates enum: @@ -1110,6 +1182,7 @@ components: description: "'Type of the LCM operation state represented by this application instance LCM operation occurrence.'" examples: - STARTING + OperationTypes: title: OperationTypes enum: @@ -1132,6 +1205,7 @@ components: mepName: type: string description: Human-readable name of MEC platform + CreateAppInstanceRequest: title: CreateAppInstanceRequest required: @@ -1148,8 +1222,12 @@ components: type: string description: Human-readable name of the application instance to be created. appPlacementInfo: - description: Describes the information of selected MEC platform for the application instance to associate + 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: @@ -1167,9 +1245,13 @@ components: 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: @@ -1177,18 +1259,23 @@ components: type: object properties: appInstSelectorType: + type: object $ref: '#/components/schemas/AppInstSelectorType' appInstances: type: array items: type: string - description: '' + 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: '' description: "'This data type represents subscription filter criteria to match application instances. '" + AppsFromProviders: title: AppsFromProviders required: @@ -1199,8 +1286,12 @@ components: type: string description: Provider of the application and of the AppD. appProducts: - $ref: '#/components/schemas/AppProducts' + type: array + description: If present, match application instances that belong to application products with certain product names, from one particular provider. + items: + $ref: '#/components/schemas/AppProducts' description: "'Present only if appInstIdSelector = APP_FROM_PROVIDER. Match existing application instances, or those created in the future whilst the subscription is active, that belong to applications from certain providers.'" + AppProducts: title: AppProducts required: @@ -1211,8 +1302,11 @@ components: type: string description: Name to identify the MEC application. versions: - $ref: '#/components/schemas/AppProducts.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: @@ -1228,6 +1322,7 @@ components: 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: @@ -1240,6 +1335,7 @@ components: description: 0 = void examples: - VOID + AppInstanceState: title: AppInstanceState enum: @@ -1250,12 +1346,14 @@ components: 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 required: - _links - appDId - appInstanceId + - appInstanceState - appPkgId - id - notificationType @@ -1264,6 +1362,7 @@ components: type: object properties: _links: + type: object $ref: '#/components/schemas/Links' appDId: type: string @@ -1284,11 +1383,16 @@ components: 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' 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 @@ -1301,11 +1405,17 @@ components: properties: countryCode: type: string + description: The two-letter ISO 3166 country code in capital letters where an instance is deployed. civicAddress: + type: object + description: Provides the civic address of the site hosting the MEC application instance. $ref: '#/components/schemas/LocationInformation.civicAddress' geographicalPosition: type: string - + description: Geographical position (i.e. latitude and longitude) where an instance is deployed. The content of this attribute shall follow the provisions for the "Point" geometry object as defined in IETF RFC 7946 + description: | + NOTE: At least one of civicAddress or geographicalPosition shall be present. If both are present they shall specify the same location, bound by the precision of the provided coordinates. + McioInfo: type: object required: @@ -1343,8 +1453,12 @@ components: type: integer description: Number of available MCIO instances additionalInfo: - type: array + type: string description: Additional information which is specific to the MCIO, its type, and which is available from the CISM. See note 2 + description: | + NOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from the CISM. + EXAMPLE: In case of MCIOs managed by Kubernetes®, the type of MCIO corresponds to the "kind" property of the declarative descriptor. + NOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and desired state of the MCIO(s) LocationInformation.civicAddress: type: object @@ -1353,6 +1467,7 @@ components: properties: civicAddressElement: type: array + description: Provides elements comprising a single civic address as described in section 3.4, with accompanying example in section 5 of IETF RFC 4776. items: $ref: '#/components/schemas/CivicAddressElement' @@ -1389,14 +1504,13 @@ components: 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 - NOTE 2: This field applies if the data structure is used by MEAO. vnfInstanceId: type: string description: | - Identifier of the VNF instance created by VNFM that the MEC application has been instantiated as.See note 2. - NOTE 2: This field applies if the data structure is used by MEAO. + 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: @@ -1415,14 +1529,24 @@ components: type: array items: $ref: '#/components/schemas/VimConnectionInfo' - description: '' + 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. + 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 @@ -1436,6 +1560,7 @@ components: description: Operation state examples: - STARTING + InstantiationState: title: InstantiationState enum: @@ -1445,6 +1570,7 @@ components: description: Instantiation state of the application instance examples: - NOT_INSTANTIATED + InstantiatedAppState: title: InstantiatedAppState required: @@ -1454,8 +1580,12 @@ components: operationalState: $ref: '#/components/schemas/OperationalState' appInstLocation: + type: object + description: Location of the MEC application instance. See note 5 and note 6. $ref: '#/components/schemas/LocationInformation' mcioInfo: + type: array + description: Information on the MCIO(s) representing application instance realized by one or a set of OS containers. See note 7. $ref: '#/components/schemas/McioInfo' description: "'Information specific to an instantiated application. This attribute shall be present if the instantiationState attribute value is INSTANTIATED.'" @@ -1468,6 +1598,7 @@ components: description: Operational state is applicable in the instantiation state INSTANTIATED examples: - STARTED + AppInstanceInfo.links: title: AppInstanceInfo.links required: @@ -1475,14 +1606,27 @@ components: 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: @@ -1493,6 +1637,7 @@ components: description: Type of the actual LCM operation represented by this application instance LCM operation occurrence examples: - INSTATIATE + AppLcmOpOccNotification: title: AppLcmOpOccNotification required: @@ -1509,7 +1654,7 @@ components: properties: id: type: string - description: "''" + 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. @@ -1522,6 +1667,7 @@ components: - TERMINATE operationState: type: string + description: Operation state. enum: - STARTING - PROCESSING @@ -1532,6 +1678,8 @@ components: 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 @@ -1540,6 +1688,7 @@ components: 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'" @@ -1556,16 +1705,23 @@ components: properties: id: type: string + description: Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the "notificationId" attribute of all these notifications shall have the same value. notificationType: type: string description: Discriminator for the different notification types. Shall be set to "AppIdentifierCreationSubscription" for this notification type. subscriptionId: type: string + description: Identifier of the subscription related to this notification. timeStamp: + type: object + description: Date and time of the notification generation. $ref: '#/components/schemas/TimeStamp' appInstanceId: type: string + description: The created application instance Identifier. _links: + type: object + description: Links to resources related to this notification. $ref: '#/components/schemas/Notification._links' Notification._links: @@ -1575,8 +1731,12 @@ components: - 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: @@ -1592,16 +1752,23 @@ components: properties: id: type: string + description: Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the "notificationId" attribute of all these notifications shall have the same value. notificationType: type: string description: Discriminator for the different notification types. Shall be set to "AppIdentifierDeletionSubscription" for this notification type. subscriptionId: type: string + description: Identifier of the subscription related to this notification. timeStamp: + type: object + description: Date and time of the notification generation. $ref: '#/components/schemas/TimeStamp' appInstanceId: 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: @@ -1613,10 +1780,13 @@ components: 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. @@ -1627,6 +1797,8 @@ components: type: object properties: locationConstraints: + type: object + description: Defines the location constraints for the application instance to be created. See note 3. $ref: '#/components/schemas/LocationConstraints' selectedMECHostInfo: type: array @@ -1634,7 +1806,6 @@ components: $ref: '#/components/schemas/MECHostInformation' description: | Describes the information of selected host for the application instance. See note 2. - NOTE 2: This field applies to Mm3 reference point only. vimConnectionInfo: type: array items: @@ -1642,41 +1813,38 @@ components: 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. - NOTE 2: This field applies to Mm3 reference point only. virtualComputeDescriptor: - type: string + 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 - NOTE 1: This attribute may be provided in the InstantiateAppRequest structure to override the same attribute in the AppD. - NOTE 4: Only one of virtualComputeDescriptor or osContainerDescriptor shall be present. + instance to be created. See note 1 and note 4. osContainerDescriptor: type: array items: $ref: '#/components/schemas/OsContainerDescriptor' description: | Describes CPU, memory requirements and limits, and software images of the OS Containers realizing this MEC application corresponding to OS Containers sharing the - same host and same network namespace.See note 1, note 4 and note 5. - NOTE 1: This attribute may be provided in the InstantiateAppRequest structure to override the same attribute in the AppD. - 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. + 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. - NOTE 1: This attribute may be provided in the InstantiateAppRequest structure to override the same attribute in the AppD. appTermCandsForCoord: - type: string + type: object items: $ref: '#/components/schemas/AppTermCandsForCoord' - description: | - Provides sets of applications as termination candidate alternatives that the MEO/MEAO shall select from when utilizing the coordinate LCM operation exchange in pre-emption situations (see step 3 in clause 5.3.1). If this attribute is omitted, the MEO/MEAO shall make its own selection for the coordinate LCM operation exchange. See note 3 - NOTE 3: This field applies to Mm1 reference point only - + description: Provides sets of applications as termination candidate alternatives that the MEO/MEAO shall select from when utilizing the coordinate LCM operation exchange in pre-emption situations (see step 3 in clause 5.3.1). If this attribute is omitted, the MEO/MEAO shall make its own selection for the coordinate LCM operation exchange. See note 3. + description: | + NOTE 1: This attribute may be provided in the InstantiateAppRequest structure to override the same attribute in the AppD. + NOTE 2: This field applies to Mm3 reference point only. + NOTE 3: This field applies to Mm1 reference point only. + NOTE 4: Only one of virtualComputeDescriptor or osContainerDescriptor shall be present. + NOTE 5: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. + AppTermCandsForCoord: type: object required: @@ -1684,6 +1852,7 @@ components: properties: terminationOptions: type: array + description: Sets of application options for the MEO/MEAO to select from as candidates for termination. The MEO/MEAO shall select one or more of these alternate options to pass to the OSS when utilizing the LCM coordination exchange in pre-emption situations. For each option, the MEO/MEAO may select all, or a subset, of the candidate set's members. items: $ref: '#/components/schemas/AppTermCandsForCoord.terminationOptions' @@ -1704,15 +1873,19 @@ components: - 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: @@ -1732,7 +1905,7 @@ components: description: When set to True, it is requested that at the time of the notification of an upcoming change that is expected to have an impact on the VNF, virtualised resource(s) of the same characteristics as the impacted ones is/are provided to compensate for the impact. supportedMigrationType: type: array - description: Applicable to VirtualComputeDesc and VirtualStorageDesc. When present, specifies the allowed migration types in the order of preference in case of an impact starting with the most preferred type. + description: Applicable to VirtualComputeDesc and VirtualStorageDesc. When present, specifies the allowed migration types in the order of preference in case of an impact starting with the most preferred type. For LIVE_MIGRATION, see note 1. items: type: string enum: @@ -1741,16 +1914,25 @@ components: - 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. + description: Applicable to VirtualComputeDesc and VirtualStorageDesc. When present, it specifies the maximum interruption time that can go undetected at the VNF level and therefore which will not trigger VNF-internal recovery during live migration. (see note 1) minRecoveryTimeBetweenImpacts: type: number - description: When present, it specifies the time required by the group to recover from an impact, thus, the minimum time requested between consecutive impacts of the group. + description: When present, it specifies the time required by the group to recover from an impact, thus, the minimum time requested between consecutive impacts of the group. (see note 2.) maxNumberOfImpactedInstances: + type: object $ref: '#/components/schemas/MaxNumberOfImpactedInstances' - description: When present, specifies for different group sizes the maximum number of instances that can be impacted simultaneously within the group of virtualised resources without losing functionality. + 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. + description: When present, specifies for different group sizes the minimum number of instances which need to be preserved simultaneously within the group of virtualised resources. Zero cardinality indicates no constraint (see note 2). MinNumberOfPreservedInstances is defined in clause 7.1.8.22.See note 3. + description: | + NOTE 1: When the maximum undetectable interruption time is specified it constrains the live migration. If it cannot be + guaranteed on an NFVI that the interruption caused by the live migration will be less than the indicated + maximum undetectable interruption time, then life migration should be downgraded according to the order of preference. + NOTE 2: Impacts to instances of the group happening within the minimum recovery time are considered simultaneous + impacts. + NOTE 3: Either "maxNumberOfImpactedInstances" or "minNumberOfPreservedInstances" may be provided, but not both MaxNumberOfImpactedInstances: type: object @@ -1759,27 +1941,24 @@ components: properties: groupSize: type: integer - description: | - Determines the size of the group for which the maxNumberOfImpactedInstances is specified. - 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. + 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. - 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. + 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' - description: Entry point information of the service as one or more pairs of IP address and port. + ipAddresses: type: object required: @@ -1800,20 +1979,15 @@ components: properties: groupSize: type: integer - description: | - When present, determines the size of the group for which the minNumberOfPreservedInstances is specified. Otherwise, the size is not limited. - 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. + description: When present, determines the size of the group for which the minNumberOfPreservedInstances is specified. Otherwise, the size is not limited. minNumberOfPreservedInstances: type: integer - description: | - The minimum number of instances which need to be preserved simultaneously within the group of the specified size. - NOTE 1: Each groupSize value specified for a group of virtual resources shall be unique, and it shall be possible to form + 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. + NOTE 2: The number of instances in the group for which the minNumberOfPreservedInstances is specified may be equal + to groupSize or less. FileStorageData: type: object @@ -1829,6 +2003,7 @@ components: 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. @@ -1848,6 +2023,8 @@ components: items: $ref: '#/components/schemas/VirtualLinkDescFlavour' connectivityType: + type: object + description: See clause 7.1.7.3. $ref: '#/components/schemas/ConnectivityType' testAccess: type: array @@ -1865,6 +2042,8 @@ components: 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: type: string @@ -1883,8 +2062,6 @@ components: type: array description: | Specifies the protocols that the VL uses See note 1 and note 2. - 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. items: type: string enum: @@ -1899,6 +2076,9 @@ components: 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. VirtualLinkDescFlavour: type: object @@ -1909,6 +2089,7 @@ components: type: string description: Identifies a flavour within a VnfVirtualLinkDesc. qos: + type: object $ref: '#/components/schemas/QoS' description: QoS of the VL. @@ -1917,7 +2098,6 @@ components: required: - latency - packetDelayVariation - - packetLossRatio properties: latency: type: number @@ -1943,8 +2123,10 @@ components: properties: appInstIdTerminationCands: type: array + description: List of application instance identifiers, constituting a candidate set for termination. items: type: string + LinkType: title: LinkType required: @@ -1988,10 +2170,8 @@ components: type: object description: | An array of key-value pairs of extended resources required by the container see note. - 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. additionalProperties: type: string - description: See note. cpuResourceLimit: type: integer description: Number of CPU resources the container can maximally use (e.g. in milli-CPU). @@ -2007,9 +2187,11 @@ components: 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: @@ -2053,21 +2235,28 @@ components: description: Unique identifier of this VirtualComputeDesc in the VNFD. logicalNode: type: array + description: The logical node requirements. items: $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/RequestedAdditionalCapabilityData' computeRequirements: type: array - description: Not specified. + description: Specifies compute requirements. 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/BlockStorageData' @@ -2089,6 +2278,7 @@ components: 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. @@ -2112,23 +2302,24 @@ components: description: The version of this software image. checksum: $ref: '#/components/schemas/ChecksumData' - description: The checksum of the software image file. + description: The checksum of the software image file. See note 3. containerFormat: type: string 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. + 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. + 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. + 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. + 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: @@ -2139,7 +2330,11 @@ 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. + ChecksumData: type: object required: @@ -2148,17 +2343,19 @@ components: properties: algorithm: type: string - description: Specifies the algorithm used to obtain the checksum value see note. + description: Specifies the algorithm used to obtain the checksum value. See note. hash: type: string description: | Contains the result of applying the algorithm indicated by the algorithm attribute to the data to which this ChecksumData refers. - NOTE: The algorithm attribute value shall be one of the Hash Function Textual Names present in [2]. + description: | + NOTE: The algorithm attribute value shall be one of the Hash Function Textual Names present in [2]. LogicalNodeRequirements: type: object required: - id + - logicalNodeRequirementDetail properties: id: type: string @@ -2191,8 +2388,10 @@ 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/KeyValuePair' + KeyValuePair: type: object properties: @@ -2245,6 +2444,8 @@ components: type: object description: Array of key-value pair requirements on the Compute (CPU) for the VDU. virtualCpuPinning: + type: object + description: The virtual CPU pinning configuration for the virtualised compute resource. See clause 7.1.9.2.4. $ref: '#/components/schemas/VirtualCpuPinningData' VirtualCpuPinningData: @@ -2268,15 +2469,22 @@ components: properties: countryCode: type: string - description: The two-letter ISO 3166 country code in capital letters. + description: The two-letter ISO 3166 country code in capital letters. See note. civicAddressElement: type: array items: $ref: '#/components/schemas/CivicAddressElement' area: type: object - 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 - 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'" + 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 required: @@ -2292,6 +2500,7 @@ components: 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 required: @@ -2300,10 +2509,13 @@ components: properties: hostId: type: object - description: Deployment-specific information to identify a MEC host. 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. + 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 required: @@ -2314,20 +2526,29 @@ components: $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 - note2. + 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. contentEncoding: 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 - description: Signals forceful or graceful stop examples: - FORCEFUL + ChangeStateTo: title: ChangeStateTo enum: @@ -2337,6 +2558,7 @@ components: description: The desired operational state examples: - STARTED + ProblemDetails: title: ProblemDetails type: object @@ -2357,6 +2579,7 @@ components: type: type: string description: A URI reference according to IETF RFC 3986 that identifies the problem type + TerminateAppRequest: title: TerminateAppRequest required: @@ -2370,6 +2593,9 @@ components: contentEncoding: 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 required: @@ -2385,6 +2611,7 @@ components: type: integer description: The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. contentEncoding: int32 + TerminationType: title: TerminationType enum: @@ -2394,6 +2621,7 @@ components: description: "'Indicates whether forceful or graceful termination is requested.'" examples: - FORCEFUL + VimConnectionInfo: title: VimConnectionInfo required: @@ -2424,6 +2652,7 @@ components: 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 required: -- GitLab From c518dcfa57df1c31024a31f41fa026bd36c00c83 Mon Sep 17 00:00:00 2001 From: Umair Zafar Date: Mon, 15 May 2023 16:01:09 +0500 Subject: [PATCH 11/50] add description and notes in definitions file --- definitions/MEC010p2_definitions.yaml | 36 ++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/definitions/MEC010p2_definitions.yaml b/definitions/MEC010p2_definitions.yaml index 1c054af..cfcea17 100644 --- a/definitions/MEC010p2_definitions.yaml +++ b/definitions/MEC010p2_definitions.yaml @@ -40,6 +40,7 @@ $ref: '#/definitions/UserContextTransferCapability' appNetworkPolicy: $ref: '#/definitions/AppNetworkPolicy' + ServiceDependency: title: ServiceDependency required: @@ -68,6 +69,7 @@ version: type: string description: The version of the service. + TransportDependency: title: TransportDependency required: @@ -88,6 +90,7 @@ description: Information about the serializers in this transport binding, as defined in the SerializerTypes type in ETSI GS MEC 011 [i.4]. Support for at least one of the entries is required in conjunction with the transport. transport: $ref: '#/definitions/TransportDescriptor' + TransportDescriptor: title: TransportDescriptor required: @@ -118,6 +121,7 @@ implSpecificInfo: type: object description: Additional implementation specific details of the transport. + ServiceDescriptor: title: ServiceDescriptor description: "'The ServiceDescriptor data type describes a MEC service produced by a service-providing MEC application.'" @@ -140,6 +144,7 @@ type: array items: $ref: '#/definitions/TransportsSupported' + TransportsSupported: title: TransportsSupported type: object @@ -154,6 +159,7 @@ type: string description: "'Information about the serializers in this binding, as defined in the SerializerTypes type in ETSI GS MEC 011 '" description: "'Indicates transports and serialization formats supported made available to the service-consuming application. Defaults to REST + JSON if absent.'" + FeatureDependency: title: FeatureDependency required: @@ -167,6 +173,7 @@ version: type: string description: The version of the feature. + TrafficRuleDescriptor: title: TrafficRuleDescriptor required: @@ -184,12 +191,13 @@ type: array items: $ref: '#/definitions/InterfaceDescriptor' - description: '' + description: Describes the destination interface information, . Some applications (e.g. inline/tap) _DECAPSULATED, FORWARD_ENCAPSULATED or PASSTHROUGH, one value + shall be provided. If the action is onDUPLICATE_DECAPSULATED or DUPLICATE_ENCAPSULATED, two values shall be provided. See note 2. filterType: $ref: '#/definitions/FilterType' priority: type: integer - description: Priority of this traffic rule within the range 0 to 255. If traffic rule conflicts, the one with higher priority take precedence. Value indicates the priority in descending order, i.e. with 0 as the highest priority and 255 as the lowest 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. contentEncoding: int32 trafficFilter: minItems: 1 @@ -200,19 +208,24 @@ trafficRuleId: type: string description: Identifies the traffic rule. + description: | + NOTE 1: Value indicates the priority in descending order, i.e. with 0 as the highest priority and 255 as the lowest priority. + NOTE 2: Some 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 Action: title: Action enum: - DROP - FORWARD_DECAPSULATED - - FORWARD_AS_IS + - FORWARD, ENCAPSULATED - PASSTHROUGH - - DUPLICATED_DECAPSULATED - - DUPLICATE_AS_IS + - DUPLICATE_DECAPSULATED + - DUPLICATE, .ENCAPSULATED type: string description: "'Identifies the action of the MEC host data plane, when a packet matches the trafficFilter.'" examples: - DROP + TrafficFilter: title: TrafficFilter type: object @@ -287,6 +300,7 @@ type: array items: type: string + DNSRuleDescriptor: title: DNSRuleDescriptor required: @@ -311,6 +325,7 @@ type: integer description: Time-to-live value contentEncoding: int32 + IpAddressType: title: IpAddressType enum: @@ -320,6 +335,7 @@ description: Specifies the IP address type examples: - IP_V6 + LatencyDescriptor: title: LatencyDescriptor required: @@ -330,6 +346,7 @@ type: integer description: The value of the maximum latency in nano seconds tolerated by the MEC application. See note. contentEncoding: int32 + UserContextTransferCapability: title: UserContextTransferCapability required: @@ -340,6 +357,7 @@ type: boolean userContextTransferSupport: type: boolean + AppNetworkPolicy: title: AppNetworkPolicy required: @@ -348,6 +366,7 @@ properties: steeredNetwork: $ref: '#/definitions/AppNetworkPolicy.steeredNetwork' + AppNetworkPolicy.steeredNetwork: title: AppNetworkPolicy.steeredNetwork type: object @@ -358,6 +377,7 @@ type: boolean fixedAccessNetwork: type: boolean + InterfaceDescriptor: title: InterfaceDescriptor required: @@ -377,6 +397,7 @@ description: If the interface type is MAC, the source address identifies the MAC address of the interface. tunnelInfo: $ref: '#/definitions/TunnelInfo' + InterfaceType: title: InterfaceType enum: @@ -387,6 +408,7 @@ description: Type of interface. examples: - TUNNEL + TunnelInfo: title: TunnelInfo required: @@ -405,6 +427,7 @@ description: Source address of the tunnel. tunnelType: $ref: '#/definitions/TunnelType' + TunnelType: title: TunnelType enum: @@ -414,13 +437,14 @@ description: Type of tunnel. examples: - GTP-U + FilterType: title: FilterType enum: - FLOW - PACKET type: string - description: 'Definition of filter type: per FLOW or PACKET' + description: If it is per FLOW, the filter matches upstream (e.g. UE->EPC) packets and the downstream (e.g. EPC->UE) packets are handled by the same context. examples: - FLOW -- GitLab From 6ed1af64fb0d8e3873a291b9fb5d0d99ee8223c4 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Thu, 25 May 2023 15:18:27 +0500 Subject: [PATCH 12/50] fix minor issues in AppPkgMgmt API --- MEC010-2_AppPkgMgmt.yaml | 48 ++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/MEC010-2_AppPkgMgmt.yaml b/MEC010-2_AppPkgMgmt.yaml index 36f1c53..e6e2179 100644 --- a/MEC010-2_AppPkgMgmt.yaml +++ b/MEC010-2_AppPkgMgmt.yaml @@ -48,7 +48,6 @@ paths: schema: $ref: '#/components/schemas/AppPkgInfo' description: The response body shall contain a representation of the application package resource - contentMediaType: application/json '400': $ref: '#/components/responses/400' '401': @@ -115,7 +114,6 @@ paths: 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' - contentMediaType: application/json '400': $ref: '#/components/responses/400' '401': @@ -155,7 +153,6 @@ paths: schema: $ref: '#/components/schemas/AppPkgInfo' description: The response body shall contain a representation of the application package resource - contentMediaType: application/json '400': $ref: '#/components/responses/400' '401': @@ -222,7 +219,6 @@ paths: 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. - contentMediaType: application/json '400': $ref: '#/components/responses/400' '401': @@ -830,11 +826,6 @@ paths: style: simple schema: type: string - requestBody: - description: '' - content: - application/zip: {} - required: false responses: '202': description: The application package has been accepted for uploading, but the processing has not been completed. @@ -905,11 +896,6 @@ paths: style: simple schema: type: string - requestBody: - description: '' - content: - application/zip: {} - required: false responses: '202': description: The application package has been accepted for uploading, but the processing has not been completed. @@ -1335,8 +1321,11 @@ components: items: $ref: '#/components/schemas/RequestedAdditionalCapabilityData' computeRequirements: + description: Not specified. type: array - description: Not Specified. + items: + type: string + format: not-specified virtualMemory: $ref: '#/components/schemas/VirtualMemoryData' virtualCpu: @@ -1540,10 +1529,15 @@ components: 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. - + 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 type: object @@ -1673,11 +1667,17 @@ components: type: string description: The singleton signing certificate if it is included as a file in the AppD archive. softwareImages: - type: array description: Information of application software image in application package. Type is TBD. See note 1. - additionalArtifacts: type: array + items: + type: string + format: not-specified + additionalArtifacts: description: Additional information of application package artifacts that are not application software images. Type is TBD. See note 2. + type: array + items: + type: string + format: not-specified onboardingState: $ref: '#/components/schemas/OnboardingState' operationalState: @@ -2030,7 +2030,7 @@ components: status: type: integer description: The HTTP status code for this occurrence of the problem - contentEncoding: int32 + format: int32 title: type: string description: A short, human-readable summary of the problem type @@ -2048,11 +2048,11 @@ components: nanoSeconds: type: integer description: The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. - contentEncoding: int32 + 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. - contentEncoding: int32 + format: int32 OperationalState: title: OperationalState -- GitLab From c4982bb63f5bbb63c3af1ae36427db4dd0257811 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Thu, 25 May 2023 15:36:50 +0500 Subject: [PATCH 13/50] fix minor issues in AppLcm API --- MEC010-2_AppLcm.yaml | 47 +++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/MEC010-2_AppLcm.yaml b/MEC010-2_AppLcm.yaml index d6490eb..77cfb24 100644 --- a/MEC010-2_AppLcm.yaml +++ b/MEC010-2_AppLcm.yaml @@ -113,7 +113,6 @@ paths: items: $ref: '#/components/schemas/AppInstanceInfo' description: '' - contentMediaType: application/json '400': $ref: '#/components/responses/400' '401': @@ -214,7 +213,6 @@ paths: - $ref: '#/components/schemas/AppLcmOpOccSubscriptionRequest' - $ref: '#/components/schemas/AppInstIdCreationSubscriptionRequest' - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionRequest' - contentMediaType: application/json required: true responses: '201': @@ -228,7 +226,6 @@ paths: - $ref: '#/components/schemas/AppLcmOpOccSubscriptionInfo' - $ref: '#/components/schemas/AppInstIdCreationSubscriptionInfo' - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionInfo' - contentMediaType: application/json '400': $ref: '#/components/responses/400' '401': @@ -326,7 +323,6 @@ paths: - $ref: '#/components/schemas/AppLcmOpOccSubscriptionInfo' - $ref: '#/components/schemas/AppInstIdCreationSubscriptionInfo' - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionInfo' - contentMediaType: application/json '400': $ref: '#/components/responses/400' '401': @@ -391,7 +387,6 @@ paths: - $ref: '#/components/schemas/AppLcmOpOccNotification' - $ref: '#/components/schemas/AppInstanceIdentifierCreationNotification' - $ref: '#/components/schemas/AppInstanceIdentifierDeletionNotification' - contentMediaType: application/json required: true responses: '204': @@ -592,7 +587,6 @@ paths: items: $ref: '#/components/schemas/AppLcmOpOcc' description: '' - contentMediaType: application/json '400': $ref: '#/components/responses/400' '401': @@ -889,8 +883,7 @@ components: type: object description: Type of the subscription. $ref: '#/components/schemas/AppInstanceSubscriptionType' - - + AppInstanceSubscriptionType: type: string description: String representing the type of a subscription. @@ -1156,11 +1149,13 @@ components: operationStates: type: array description: Type of the LCM operation state represented by this application instance LCM operation occurrence. - $ref: '#/components/schemas/OperationStates' + items: + $ref: '#/components/schemas/OperationStates' operationTypes: type: array description: Type of the LCM operation represented by this application instance LCM operation occurrence. - $ref: '#/components/schemas/OperationTypes' + items: + $ref: '#/components/schemas/OperationTypes' NotificationTypes: title: NotificationTypes @@ -1586,7 +1581,8 @@ components: mcioInfo: type: array description: Information on the MCIO(s) representing application instance realized by one or a set of OS containers. See note 7. - $ref: '#/components/schemas/McioInfo' + 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: @@ -2244,8 +2240,11 @@ components: items: $ref: '#/components/schemas/RequestedAdditionalCapabilityData' computeRequirements: - type: array description: Specifies compute requirements. + type: array + items: + type: string + format: not-specified virtualMemory: type: object description: The virtual memory of the virtualised compute. See clause 7.1.9.3.2. @@ -2362,11 +2361,15 @@ components: 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: 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 RequestedAdditionalCapabilityData: type: object required: @@ -2495,7 +2498,7 @@ components: caType: type: integer description: "'Describe the content type of caValue. The value of caType shall comply with section 3.4 of IETF RFC 4776.'" - contentEncoding: int32 + 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.'" @@ -2527,7 +2530,7 @@ components: 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. - contentEncoding: int32 + format: int32 stopType: description: The stop type. See notes 1 and 3. $ref: '#/components/schemas/StopType' @@ -2572,7 +2575,7 @@ components: status: type: integer description: The HTTP status code for this occurrence of the problem - contentEncoding: int32 + format: int32 title: type: string description: A short, human-readable summary of the problem type @@ -2590,7 +2593,7 @@ components: 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." - contentEncoding: int32 + format: int32 terminationType: $ref: '#/components/schemas/TerminationType' description: | @@ -2606,11 +2609,11 @@ components: nanoSeconds: type: integer description: The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. - contentEncoding: int32 + 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. - contentEncoding: int32 + format: int32 TerminationType: title: TerminationType -- GitLab From abca2e51e563ce4a2de819fac7776b2eb92656a8 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Thu, 25 May 2023 15:40:22 +0500 Subject: [PATCH 14/50] fix minor issues in AppGrant API --- MEC010-2_AppGrant.yaml | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/MEC010-2_AppGrant.yaml b/MEC010-2_AppGrant.yaml index a6fec75..a97c53f 100644 --- a/MEC010-2_AppGrant.yaml +++ b/MEC010-2_AppGrant.yaml @@ -177,10 +177,10 @@ components: $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. + 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. ExtLinkPortData: title: ExtLinkPortData @@ -212,7 +212,9 @@ components: type: array 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. + 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. id: type: string description: The identifier of the external VL instance. The identifier is assigned by the MEC entity that manages this VL instance. @@ -483,7 +485,7 @@ components: numDynamicAddresses: type: integer description: Number of dynamic addresses to assign (from the subnet defined by subnetId if provided) - contentEncoding: int32 + format: int32 addressRange: $ref: "#/components/schemas/AddressRange" subnetId: @@ -539,7 +541,7 @@ components: status: type: integer description: The HTTP status code for this occurrence of the problem - contentEncoding: int32 + format: int32 title: type: string description: A short, human-readable summary of the problem type @@ -566,7 +568,6 @@ components: type: string description: Reference to the related VDU in the AppD applicable to this resource. resourceTemplateId: - type: array description: > Reference to a resource template, in the AppD as follows: - If type="COMPUTE": VirtualComputeDescriptor, @@ -577,6 +578,9 @@ components: Type ="OSCONTAINER" and multiple references to OsContainerDescriptor are present in the AppD. Cardinality shall be "1" otherwise. + type: array + items: + type: string resource: $ref: "#/components/schemas/Resource" description: | -- GitLab From 1ccb7bc0d56c76c000027a8c80dca2a23affb2d3 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Thu, 25 May 2023 15:44:24 +0500 Subject: [PATCH 15/50] fix identation in AppGrant API --- MEC010-2_AppGrant.yaml | 51 +++++++++++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/MEC010-2_AppGrant.yaml b/MEC010-2_AppGrant.yaml index a97c53f..0fa1353 100644 --- a/MEC010-2_AppGrant.yaml +++ b/MEC010-2_AppGrant.yaml @@ -170,7 +170,9 @@ components: 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. + 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: type: string items: @@ -245,7 +247,9 @@ components: description: The identifier of the application lifecycle management operation occurrence associated to the Grant. vimConnections: 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. + 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. items: $ref: "#/components/schemas/VimConnectionInfo" zones: @@ -341,17 +345,31 @@ components: 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. + 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: 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. + 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: 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. + 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: 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. + 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: type: array items: @@ -648,7 +666,10 @@ components: 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'" + 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. @@ -656,13 +677,23 @@ components: 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'" + 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. + 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. + 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. VimSoftwareImage: title: VimSoftwareImage -- GitLab From 44cb14fd53b3648b27a243ecac5206bdcddcbbca Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Thu, 25 May 2023 15:49:10 +0500 Subject: [PATCH 16/50] update JSON files for each API --- MEC010-2_AppGrant.json | 516 ++++---- MEC010-2_AppLcm.json | 2647 ++++++++++++++++++-------------------- MEC010-2_AppPkgMgmt.json | 2460 ++++++++++++++--------------------- 3 files changed, 2496 insertions(+), 3127 deletions(-) diff --git a/MEC010-2_AppGrant.json b/MEC010-2_AppGrant.json index ba6a8cc..b018935 100644 --- a/MEC010-2_AppGrant.json +++ b/MEC010-2_AppGrant.json @@ -3,7 +3,7 @@ "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": "2.2.1", + "version": "3.0.1", "license": { "name": "BSD-3-Clause", "url": "https://forge.etsi.org/legal-matters" @@ -15,8 +15,8 @@ } }, "externalDocs": { - "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.2.1", - "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.02.01_60/gs_MEC01002v020201p.pdf" + "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v3.0.1", + "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.00.01_60/gs_MEC01002v030001p.pdf" }, "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema", "servers": [ @@ -34,9 +34,7 @@ "paths": { "/grants": { "post": { - "tags": [ - "granting" - ], + "tags": ["granting"], "summary": "requests a grant for a particular application lifecycle operation", "description": "requests a grant for a particular application lifecycle operation", "operationId": "grantPOST", @@ -69,70 +67,22 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -141,9 +91,7 @@ }, "/grants/{grantId}": { "get": { - "tags": [ - "granting" - ], + "tags": ["granting"], "summary": "read the grant", "description": "read the grant", "operationId": "GrantGET", @@ -177,70 +125,22 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -269,14 +169,12 @@ "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\":\n 1) The \"linkPortId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an existing \n external CP instance addressed by cpInstanceId.\n 2) At least one of these attributes shall be present for a to-be-created external CP instance or an existing \n external CP instance.\n 3) If the \"linkPortId\" attribute is absent, the MEPM shall create a link port.\n 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 \n the pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API consumer shall ensure that the \n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n" }, "AppExtCpData": { "title": "AppExtCpData", - "required": [ - "cpConfig", - "cpdId" - ], + "required": ["cpConfig", "cpdId"], "type": "object", "properties": { "cpConfig": { @@ -294,39 +192,36 @@ }, "ResourceDefinition.Type": { "title": "ResourceDefinition.Type", - "enum": [ - "COMPUTE", - "VL", - "STORAGE", - "LINKPORT" - ], + "enum": ["COMPUTE", "STORAGE", "LINKPORT", "OSCONTAINER, see note."], "type": "string", - "description": "Type of the resource definition referenced.", - "examples": [ - "COMPUTE" - ] + "description": "Type of the resource definition referenced.\n", + "examples": ["COMPUTE"] }, "CpProtocolData": { "title": "CpProtocolData", - "required": [ - "layerProtocol" - ], + "required": ["layerProtocol"], "type": "object", "properties": { "ipOverEthernet": { - "$ref": "#/components/schemas/IpOverEthernetAddressData" + "type": "string", + "items": { + "$ref": "#/components/schemas/IpOverEthernetAddressData" + }, + "description": "Network address data for IP over Ethernet to assign to the extCP instance. Shall be present\nif layerProtocol is equal to \"IP_OVER_ETHERNET\", and shall be absent otherwise.\n" }, "layerProtocol": { - "$ref": "#/components/schemas/IpOverEthernetAddressData" + "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.\nNOTE: This attribute allows to signal the addition of further types of layer and protocol in future\nversions of the present document in a backwards-compatible way. In the current version of the present\ndocument, only IP over Ethernet is supported.\n" }, "ExtLinkPortData": { "title": "ExtLinkPortData", - "required": [ - "id", - "resourceHandle" - ], + "required": ["id", "resourceHandle"], "type": "object", "properties": { "id": { @@ -340,11 +235,7 @@ }, "ExtVirtualLinkData": { "title": "ExtVirtualLinkData", - "required": [ - "extCps", - "id", - "resourceId" - ], + "required": ["extCps", "id", "resourceId"], "type": "object", "properties": { "extCps": { @@ -359,7 +250,7 @@ "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." + "description": "Externally provided link ports to be used to connect external connection points to this external\nVL. If this attribute is not present, the MEPM shall create the link ports on the external VL.\n" }, "id": { "type": "string", @@ -377,12 +268,7 @@ }, "Grant": { "title": "Grant", - "required": [ - "id", - "appInstanceId", - "appLcmOpOccId", - "_links" - ], + "required": ["id", "appInstanceId", "appLcmOpOccId", "_links"], "type": "object", "properties": { "id": { @@ -399,7 +285,7 @@ }, "vimConnections": { "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.", + "description": "Provides information regarding VIM connections that are approved to be used by the MEPM to\nallocate resources, and provides parameters of these VIM connections.See note 1.\n", "items": { "$ref": "#/components/schemas/VimConnectionInfo" } @@ -409,62 +295,65 @@ "items": { "$ref": "#/components/schemas/ZoneInfo" }, - "description": "" + "description": "Identifies resource zones where the resources are approved to be allocated by the MEPM." }, "zoneGroups": { "type": "array", "items": { "$ref": "#/components/schemas/ZoneGroupInfo" }, - "description": "" + "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." }, "addResources": { "type": "array", "items": { "$ref": "#/components/schemas/GrantInfo" }, - "description": "" + "description": "List of resources that are approved to be added, with one entry per resource." }, "tempResources": { "type": "array", "items": { "$ref": "#/components/schemas/GrantInfo" }, - "description": "" + "description": "List of resources that are approved to be temporarily instantiated during the runtime of the lifecycle operation, with one entry per resource" }, "removeResources": { "type": "array", "items": { "$ref": "#/components/schemas/GrantInfo" }, - "description": "" + "description": "List of resources that are approved to be removed, with one entry per resource." }, "updateResources": { "type": "array", "items": { "$ref": "#/components/schemas/GrantInfo" }, - "description": "" + "description": "List of resources that are approved to be modified, with one entry per resource" }, "vimAssets": { - "$ref": "#/components/schemas/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." }, "extVirtualLinks": { "type": "array", "items": { "$ref": "#/components/schemas/ExtVirtualLinkData" }, - "description": "" + "description": "Information about external VLs to connect the application instance to. See note 3." }, "additionalParams": { "type": "object", "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'" }, "_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 '" + "description": "This type represents a grant. Refer to clause 9.5.2.3 of ETSI GS NFV-SOL 003 \nNOTE 1: This interface allows to signal the use of multiple VIMs per application. However, due to the partial support of \n this feature in the present release, it is recommended in the present document that the number of entries in \n the \"vims\" attribute in the Grant is not greater than 1.\nNOTE 2: The further condition will be defined by ETSI GS NFV-SOL 003 [7].\nNOTE 3: External VLs can be passed in the application lifecycle management operation requests such as Instantiate, \n and/or in the grant response. The MEO may choose to override in the grant response external VL instances \n that have been passed previously in the associated application lifecycle management request, if the lifecycle \n management request has originated from the MEO itself\n" }, "VimAssets": { "title": "VimAssets", @@ -482,10 +371,7 @@ }, "Grant.links": { "title": "Grant.links", - "required": [ - "appLcmOpOcc", - "appInstance" - ], + "required": ["appLcmOpOcc", "appInstance"], "type": "object", "properties": { "appLcmOpOcc": { @@ -499,9 +385,7 @@ }, "GrantInfo": { "title": "GrantInfo", - "required": [ - "resourceDefinitionId" - ], + "required": ["resourceDefinitionId"], "type": "object", "properties": { "resourceDefinitionId": { @@ -510,17 +394,29 @@ }, "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." + "description": "Identifier of the \"infrastructure resource group\", logical grouping of virtual resources assigned\nto a tenant within an Infrastructure Domain, to be provided when allocating the resource.If the\nVIM connection referenced by \"vimConnectionId\" applies to multiple infrastructure resource groups,\nthis attribute shall be present for new resources.If the VIM connection referenced by \"vimConnectionId\"\napplies to a single infrastructure resource group, this attribute may be present for new resources.\nThis attribute shall be absent for resources that have already been allocated.\n" }, "vimConnectionId": { "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." + "description": "Identifier of the VIM connection to be used to manage this resource. Shall be present for new\nresources, and shall be absent for resources that have already been allocated.\n" }, "zoneId": { "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." + "description": "Reference to the identifier of the \"ZoneInfo\" structure in the \"Grant\" structure defining\nthe resource zone into which this resource is to be placed. Shall be present for new resources\nif the zones concept is applicable to them (typically, Compute resources), and shall be absent\nfor resources that have already been allocated.\n" + }, + "containerNamespace": { + "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.\n" + }, + "mcioConstraints": { + "type": "array", + "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'\"\n" } - } + }, + "description": "NOTE: This attribute reflects the ETSI NFV interpretation of the cloud native workloads.\n" }, "GrantRequest": { "title": "GrantRequest", @@ -546,65 +442,60 @@ "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique." }, "operation": { - "$ref": "#/components/schemas/GrantRequest.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": "" + "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": "" + "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": "" + "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": "" + "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": { - "type": "object", - "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", + "items": { + "$ref": "#/components/schemas/KeyValuePair" + }, + "description": "EPM, 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'" + "description": "This type represents a grant request. Refer to clause 9.5.2.2 of ETSI GS NFV-SOL 003\nNOTE 1: Other application LCM operations can be executed by the MEPM without requesting granting.\nNOTE 2: If the granting request is for Instantiate, addResources shall be present.\nNOTE 3: The MEO will assume that the MEPM will be responsible to both allocate and release the temporary \n resource during the runtime of the LCM operation. This means, the resource can be allocated and \n consumed after the \"start\" notification for the LCM operation is sent by the MEPM, and the resource will be\n released before the \"result\" notification of the application LCM operation is sent by the MEPM.\n" }, "GrantRequest.Operation": { "title": "GrantRequest.Operation", - "enum": [ - "INSTANTIATE", - "OPERATE", - "TERMINATE" - ], + "enum": ["INSTANTIATE", "OPERATE", "TERMINATE"], "type": "string", "description": "'The lifecycle management operation for which granting is requested'", - "examples": [ - "INSTANTIATE" - ] + "examples": ["INSTANTIATE"] }, "GrantRequest.links": { "title": "GrantRequest.links", - "required": [ - "appLcmOpOcc", - "appInstance" - ], + "required": ["appLcmOpOcc", "appInstance"], "type": "object", "properties": { "appLcmOpOcc": { @@ -622,23 +513,32 @@ "properties": { "macAddress": { "type": "string", - "description": "'MAC address. If this attribute is not present, it shall be chosen by the VIM'" + "description": "\"'MAC address. If this attribute is not present, it shall be chosen by the VIM. See note 1.'\"\n" }, "ipAddresses": { "type": "array", "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." + "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.\n" } }, - "description": "'This type represents network address data for IP over Ethernet. Refer to clause 4.4.1.10c of ETSI GS NFV SOL 003'" + "description": "NOTE 1: At least one of \"macAddress\" or \"ipAddresses\" shall be present.\nNOTE 2: Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n" + }, + "KeyValuePair": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + } }, "IpAddress": { "title": "IpAddress", - "required": [ - "type" - ], + "required": ["type"], "type": "object", "properties": { "type": { @@ -654,7 +554,7 @@ "numDynamicAddresses": { "type": "integer", "description": "Number of dynamic addresses to assign (from the subnet defined by subnetId if provided)", - "contentEncoding": "int32" + "format": "int32" }, "addressRange": { "$ref": "#/components/schemas/AddressRange" @@ -668,22 +568,14 @@ }, "IpAddress.Type": { "title": "IpAddress.Type", - "enum": [ - "IPV4", - "IPV6" - ], + "enum": ["IPV4", "IPV6"], "type": "string", "description": "The type of the IP addresses.", - "examples": [ - "IPV4" - ] + "examples": ["IPV4"] }, "AddressRange": { "title": "AddressRange", - "required": [ - "minAddress", - "maxAddress" - ], + "required": ["minAddress", "maxAddress"], "type": "object", "properties": { "minAddress": { @@ -699,9 +591,7 @@ }, "LinkType": { "title": "LinkType", - "required": [ - "href" - ], + "required": ["href"], "type": "object", "properties": { "href": { @@ -725,7 +615,7 @@ "status": { "type": "integer", "description": "The HTTP status code for this occurrence of the problem", - "contentEncoding": "int32" + "format": "int32" }, "title": { "type": "string", @@ -739,12 +629,7 @@ }, "ResourceDefinition": { "title": "ResourceDefinition", - "required": [ - "id", - "type", - "resourceTemplateId", - "resource" - ], + "required": ["id", "type", "resourceTemplateId", "resource"], "type": "object", "properties": { "id": { @@ -752,28 +637,29 @@ "description": "Identifier of the related ResourceDefinition structure from the related GrantRequest structure." }, "type": { - "$ref": "#/components/schemas/ResourceDefinition.Type" + "$ref": "#/components/schemas/ResourceDefinition.Type", + "description": "Type of the resource definition referenced.See note" }, "vduId": { "type": "string", "description": "Reference to the related VDU in the AppD applicable to this resource." }, "resourceTemplateId": { - "type": "string", - "description": "Reference to a resource template, i.e. VirtualComputeDescriptor, AppExtCpd, VirtualStorageDescriptor in the AppD." + "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.\n", + "type": "array", + "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 '" + "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\nNOTE: This permitted value reflects the ETSI NFV interpretation of the cloud native workloads.\n" }, "Resource": { "title": "Resource", - "required": [ - "vimConnectionInfo", - "resourceId" - ], + "required": ["vimConnectionInfo", "resourceId"], "type": "object", "properties": { "vimConnectionInfo": { @@ -788,14 +674,12 @@ }, "ResourceHandle": { "title": "ResourceHandle", - "required": [ - "resourceId" - ], + "required": ["resourceId"], "type": "object", "properties": { "resourceId": { "type": "string", - "description": "Identifier of the resource in the scope of the VIM." + "description": "Identifier of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n" }, "vimConnectionId": { "type": "string", @@ -803,25 +687,29 @@ }, "vimLevelResourceType": { "type": "string", - "description": "Type of the resource in the scope of the VIM. See note." + "description": "Type of the resource in the scope of the VIM. See note 1.\n" } - } + }, + "description": "NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM and can be used as \n information that complements the ResourceHandle. This value set is different from the value set of the \n \"type\" attribute in the ResourceDefinition.\nNOTE 2: When the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value \n of the 'metadata.name' field in Kubernetes® manifest.\n" }, "VimConnectionInfo": { "title": "VimConnectionInfo", - "required": [ - "id", - "vimType" - ], + "required": ["id", "vimType"], "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", - "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'" + "items": { + "$ref": "#/components/schemas/KeyValuePair" + }, + "description": "\"'This data type represents a list of key-value pairs. The order of the pairs in the list\nis not significant. In JSON, a set of key-value pairs is represented as an object. It shall\ncomply with the provisions defined in clause 4 of IETF RFC 8259'\"\n" }, "id": { "type": "string", @@ -829,24 +717,24 @@ }, "interfaceInfo": { "type": "object", - "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'" + "items": { + "$ref": "#/components/schemas/KeyValuePair" + }, + "description": "\"'This data type represents a list of key-value pairs. The order of the pairs in the list\nis not significant. In JSON, a set of key-value pairs is represented as an object. It shall\ncomply with the provisions defined in clause 4 of IETF RFC 8259'\"\n" }, "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." + "description": "The identifier of the VIM instance. This identifier is managed by the MEO.Shall be present to\naddress additional information about the VIM if such information has been configured into the\nMEPM by means outside the scope of the present document, and should be absent otherwise.\n" }, "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." + "description": "Discriminator for the different types of the VIM information. The value of this attribute\ndetermines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type\nof the VIM.The set of permitted values is expected to change over time as new types or versions\nof VIMs become available.\n" } } }, "VimSoftwareImage": { "title": "VimSoftwareImage", - "required": [ - "appDSoftwareImageId", - "vimSoftwareImageId" - ], + "required": ["appDSoftwareImageId", "vimSoftwareImageId"], "type": "object", "properties": { "appDSoftwareImageId": { @@ -859,15 +747,14 @@ }, "vimSoftwareImageId": { "type": "string", - "description": "Identifier of the software image in the resource management layer (i.e. VIM)." + "description": "Identifier of the software image in the resource management layer (i.e. VIM) See note.\n" } - } + }, + "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\".\n" }, "ZoneGroupInfo": { "title": "ZoneGroupInfo", - "required": [ - "zoneId" - ], + "required": ["zoneId"], "type": "object", "properties": { "zoneId": { @@ -881,10 +768,7 @@ }, "ZoneInfo": { "title": "ZoneInfo", - "required": [ - "id", - "zoneId" - ], + "required": ["id", "zoneId"], "type": "object", "properties": { "id": { @@ -893,7 +777,7 @@ }, "vimConnectionId": { "type": "string", - "description": "" + "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\"\nattribute of the \"AppInstanceInfo\" structure.\"\n" }, "zoneId": { "type": "string", @@ -901,9 +785,115 @@ } } } + }, + "responses": { + "200": { + "description": "OK" + }, + "204": { + "description": "No Content" + }, + "400": { + "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.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "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.", + "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.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "412": { + "description": "Precondition failed : used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts when using PUT", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "414": { + "description": "URI Too Long : used to indicate that the server is refusing to process the request because the request URI is longer than the server is willing or able to process.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "415": { + "description": "Unsupported Media Type : used to indicate that the server or the client does not support the content type of the entity body.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "422": { + "description": "Unprocessable Entity : used to indicate that the server understands the content type of the request entity and that the syntax of the request entity is correct but that the server is unable to process the contained instructions. This error condition can occur if an JSON request body is syntactically correct but semantically incorrect, for example if the target area for the request is considered too large. This error condition can also occur if the capabilities required by the request are not supported.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "429": { + "description": "Too Many Requests: used when a rate limiter has triggered.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } } }, - "security": [ - {} - ] -} \ No newline at end of file + "security": [{}] +} diff --git a/MEC010-2_AppLcm.json b/MEC010-2_AppLcm.json index bf70293..cd2da13 100644 --- a/MEC010-2_AppLcm.json +++ b/MEC010-2_AppLcm.json @@ -12,11 +12,11 @@ "url": "https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api", "email": "cti_support@etsi.org" }, - "version": "2.2.1" + "version": "3.0.1" }, "externalDocs": { - "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.2.1", - "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.02.01_60/gs_MEC01002v020201p.pdf" + "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v3.0.1", + "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.00.01_60/gs_MEC01002v030001p.pdf" }, "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema", "tags": [ @@ -38,15 +38,13 @@ "paths": { "/app_instances": { "post": { - "tags": [ - "app-lcm" - ], + "tags": ["app-lcm"], "summary": "Create an application instance resource", "description": "Create an application instance resource", "operationId": "appInstancePOST", "parameters": [], "requestBody": { - "description": "", + "description": "The POST method is used to create an application instance resource.", "content": { "application/json": { "schema": { @@ -69,78 +67,28 @@ } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false }, "get": { - "tags": [ - "app-lcm" - ], + "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", @@ -207,77 +155,28 @@ "items": { "$ref": "#/components/schemas/AppInstanceInfo" }, - "description": "", - "contentMediaType": "application/json" + "description": "" } } } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -286,9 +185,7 @@ }, "/app_instances/{appInstanceId}": { "get": { - "tags": [ - "app-lcm" - ], + "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", @@ -317,78 +214,28 @@ } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false }, "delete": { - "tags": [ - "app-lcm" - ], + "tags": ["app-lcm"], "summary": "Deletes an individual application instance resource.", "description": "Deletes an individual application instance resource.", "operationId": "appInstanceIdDELETE", @@ -411,81 +258,22 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/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", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -494,9 +282,7 @@ }, "/subscriptions": { "post": { - "tags": [ - "app-lcm-notifications" - ], + "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", @@ -518,8 +304,7 @@ { "$ref": "#/components/schemas/AppInstIdDeletionSubscriptionRequest" } - ], - "contentMediaType": "application/json" + ] } } }, @@ -545,77 +330,28 @@ { "$ref": "#/components/schemas/AppInstIdDeletionSubscriptionInfo" } - ], - "contentMediaType": "application/json" + ] } } } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "callbacks": { @@ -658,9 +394,7 @@ "deprecated": false }, "get": { - "tags": [ - "app-lcm-notifications" - ], + "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", @@ -689,70 +423,22 @@ } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -761,9 +447,7 @@ }, "/subscriptions/{subscriptionId}": { "get": { - "tags": [ - "app-lcm-notifications" - ], + "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", @@ -799,85 +483,34 @@ { "$ref": "#/components/schemas/AppInstIdDeletionSubscriptionInfo" } - ], - "contentMediaType": "application/json" + ] } } } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false }, "delete": { - "tags": [ - "app-lcm-notifications" - ], + "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", @@ -899,49 +532,23 @@ "headers": {}, "content": {} }, + "400": { + "$ref": "#/components/responses/400" + }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -950,9 +557,7 @@ }, "/user_defined_notification": { "post": { - "tags": [ - "app-lcm-notifications" - ], + "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", @@ -975,8 +580,7 @@ { "$ref": "#/components/schemas/AppInstanceIdentifierDeletionNotification" } - ], - "contentMediaType": "application/json" + ] } } }, @@ -988,60 +592,23 @@ "headers": {}, "content": {} }, + "400": { + "$ref": "#/components/responses/400" + }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1050,9 +617,7 @@ }, "/app_instances/{appInstanceId}/instantiate": { "post": { - "tags": [ - "app-lcm" - ], + "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", @@ -1086,81 +651,22 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/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", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1169,9 +675,7 @@ }, "/app_instances/{appInstanceId}/terminate": { "post": { - "tags": [ - "app-lcm" - ], + "tags": ["app-lcm"], "summary": "terminate an application instance.", "description": "terminate an application instance.", "operationId": "appLcmTerminatePOST", @@ -1205,81 +709,22 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/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", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1288,9 +733,7 @@ }, "/app_instances/{appInstanceId}/operate": { "post": { - "tags": [ - "app-lcm" - ], + "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", @@ -1324,81 +767,22 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/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", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1407,9 +791,7 @@ }, "/app_lcm_op_occs": { "get": { - "tags": [ - "app-lcm" - ], + "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", @@ -1476,77 +858,28 @@ "items": { "$ref": "#/components/schemas/AppLcmOpOcc" }, - "description": "", - "contentMediaType": "application/json" + "description": "" } } } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1555,9 +888,7 @@ }, "/app_lcm_op_occs/{appLcmOpOccId}": { "get": { - "tags": [ - "app-lcm" - ], + "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", @@ -1586,70 +917,22 @@ } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1658,9 +941,7 @@ }, "/app_lcm_op_occs/{appLcmOpOccId}/cancel": { "post": { - "tags": [ - "app-lcm" - ], + "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", @@ -1694,81 +975,22 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/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", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1777,9 +999,7 @@ }, "/app_lcm_op_occs/{appLcmOpOccId}/fail": { "post": { - "tags": [ - "app-lcm" - ], + "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", @@ -1808,81 +1028,22 @@ } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/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", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1891,9 +1052,7 @@ }, "/app_lcm_op_occs/{appLcmOpOccId}/retry": { "post": { - "tags": [ - "app-lcm" - ], + "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", @@ -1916,81 +1075,22 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/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", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1999,9 +1099,7 @@ }, "/app_instances/{appInstanceId}/configure_platform_for_app": { "post": { - "tags": [ - "app-lcm" - ], + "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", @@ -2018,7 +1116,7 @@ } ], "requestBody": { - "description": "The payload body in the request contains the information necessary to provide configuration information in AppD", + "description": "The message content in the request contains the information necessary to provide configuration information in AppD", "content": { "application/json": { "schema": { @@ -2034,81 +1132,22 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/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", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -2135,18 +1174,28 @@ "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": { @@ -2154,28 +1203,30 @@ "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'" + "description": "This data type represents an application lifecycle management operation occurrence\nNOTE 1: Void.\nNOTE 2: This object contains structured data, and shall comply with the provisions of clause 4 of IETF RFC 8259 \n" }, "AppInstanceSubscriptionLinkList": { - "required": [ - "_links" - ], + "required": ["_links"], "properties": { "_links": { + "type": "object", + "description": "List of hyperlinks related to the resource.", "$ref": "#/components/schemas/AppInstanceSubscriptionLinkList._links" } } }, "AppInstanceSubscriptionLinkList._links": { - "required": [ - "self" - ], + "required": ["self"], "type": "object", "properties": { "self": { @@ -2184,6 +1235,7 @@ }, "subscriptions": { "type": "array", + "description": "A link list to the subscriptions.", "items": { "$ref": "#/components/schemas/AppInstanceSubscriptionLinkList._links.subscriptions" } @@ -2192,16 +1244,16 @@ }, "AppInstanceSubscriptionLinkList._links.subscriptions": { "type": "object", - "required": [ - "href", - "subscriptionType" - ], + "required": ["href", "subscriptionType"], "properties": { "href": { "type": "string", - "format": "uri" + "format": "uri", + "description": "The URI referring to the subscription." }, "subscriptionType": { + "type": "object", + "description": "Type of the subscription.", "$ref": "#/components/schemas/AppInstanceSubscriptionType" } } @@ -2232,36 +1284,32 @@ "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" - ] + "enum": ["GRACEFUL", "FORCED"] }, "AppInstIdCreationSubscriptionRequest": { "type": "object", - "required": [ - "subscriptionType", - "callbackUri" - ], + "required": ["subscriptionType", "callbackUri"], "properties": { "subscriptionType": { - "type": "string" + "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": { + "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\".\n" }, "AppInstIdDeletionSubscriptionRequest": { "type": "object", - "required": [ - "subscriptionType", - "callbackUri" - ], + "required": ["subscriptionType", "callbackUri"], "properties": { "subscriptionType": { "type": "string", @@ -2269,42 +1317,46 @@ }, "callbackUri": { "type": "string", - "format": "uri" + "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": { "type": "object", - "required": [ - "id", - "subscriptionType", - "callbackUri", - "_links" - ], + "required": ["id", "subscriptionType", "callbackUri", "_links"], "properties": { "id": { - "type": "string" + "type": "string", + "description": "Identifier of the subscription to application instance operational state change notification." }, "subscriptionType": { - "type": "string" + "type": "string", + "description": "Shall be set to \"AppIdentifierCreationSubscription\"." }, "callbackUri": { "type": "string", - "format": "uri" + "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", - "required": [ - "self" - ], + "description": "Links to resources related to this resource.", + "required": ["self"], "properties": { "self": { + "type": "object", + "description": "URI of this resource.", "$ref": "#/components/schemas/LinkType" } } @@ -2313,15 +1365,11 @@ }, "AppInstIdDeletionSubscriptionInfo": { "type": "object", - "required": [ - "id", - "subscriptionType", - "callbackUri", - "_links" - ], + "required": ["id", "subscriptionType", "callbackUri", "_links"], "properties": { "id": { - "type": "string" + "type": "string", + "description": "Identifier of the subscription to application instance operational state change notification." }, "subscriptionType": { "type": "string", @@ -2329,18 +1377,20 @@ }, "callbackUri": { "type": "string", - "format": "uri" + "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", - "required": [ - "self" - ], + "description": "Links to resources related to this resource.", + "required": ["self"], "properties": { "self": { + "type": "object", + "description": "URI of this resource.", "$ref": "#/components/schemas/LinkType" } } @@ -2349,16 +1399,17 @@ }, "AppInstanceLcmOpOcc.links": { "title": "AppInstanceLcmOpOcc.links", - "required": [ - "self", - "appInstance" - ], + "required": ["self", "appInstance"], "type": "object", "properties": { "self": { + "type": "object", + "description": "URI of this resource.", "$ref": "#/components/schemas/LinkType" }, "appInstance": { + "type": "object", + "description": "Link to the application instance that the operation applies to.", "$ref": "#/components/schemas/LinkType" } }, @@ -2366,12 +1417,7 @@ }, "AppLcmOpOccSubscriptionInfo": { "title": "AppLcmOpOccSubscriptionInfo", - "required": [ - "id", - "subscriptionType", - "callbackUri", - "_links" - ], + "required": ["id", "subscriptionType", "callbackUri", "_links"], "type": "object", "properties": { "id": { @@ -2382,19 +1428,19 @@ "const": "AppLcmOpOccStateChange", "type": "string", "description": "Shall be set to \"AppLcmOpOccStateChangeSubscription\".", - "examples": [ - "AppLcmOpOccStateChange" - ] + "examples": ["AppLcmOpOccStateChange"] }, "callbackUri": { "type": "string", "description": "The URI of the endpoint for the notification to be sent to." }, "appLcmOpOccSubscriptionFilter": { + "type": "object", "$ref": "#/components/schemas/AppLcmOpOccSubscriptionFilter", "description": "Criteria used to select application LCM operation occurrences on which to send notifications related to this subscription." }, "_links": { + "type": "object", "$ref": "#/components/schemas/AppLcmOpOccSubscriptionInfo.links" } }, @@ -2402,12 +1448,12 @@ }, "AppLcmOpOccSubscriptionInfo.links": { "title": "AppLcmOpOccSubscriptionInfo.links", - "required": [ - "self" - ], + "required": ["self"], "type": "object", "properties": { "self": { + "type": "object", + "description": "URI of this resource.", "$ref": "#/components/schemas/LinkType" } }, @@ -2415,12 +1461,7 @@ }, "AppInstSubscriptionInfo": { "title": "AppInstSubscriptionInfo", - "required": [ - "id", - "subscriptionType", - "callbackUri", - "_links" - ], + "required": ["id", "subscriptionType", "callbackUri", "_links"], "type": "object", "properties": { "id": { @@ -2431,19 +1472,16 @@ "const": "AppInstanceStateChange", "type": "string", "description": "Shall be set to \"AppInstanceStateChangeSubscription\".", - "examples": [ - "AppInstanceStateChangeSubscription" - ] + "examples": ["AppInstanceStateChangeSubscription"] }, "appInstanceState": { "type": "string", - "enum": [ - "NOT_INSTANTIATED", - "STARTED", - "STOPPED" - ] + "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": { @@ -2451,6 +1489,7 @@ "description": "The URI of the endpoint for the subscription related notification to be sent to." }, "_links": { + "type": "object", "$ref": "#/components/schemas/AppInstSubscriptionInfo.links" } }, @@ -2458,12 +1497,12 @@ }, "AppInstSubscriptionInfo.links": { "title": "AppInstSubscriptionInfo.links", - "required": [ - "self" - ], + "required": ["self"], "type": "object", "properties": { "self": { + "type": "object", + "description": "URI of this resource.", "$ref": "#/components/schemas/LinkType" } }, @@ -2471,17 +1510,17 @@ }, "AppLcmOpOccSubscriptionRequest": { "title": "AppLcmOpOccSubscriptionRequest", - "required": [ - "callbackUri", - "subscriptionType" - ], + "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" + "type": "string", + "description": "The URI of the endpoint for the subscription related notification to be sent to." }, "subscriptionType": { "type": "string", @@ -2494,17 +1533,28 @@ "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": { + "type": "string", "description": "Match particular notification types. Permitted values AppLcmOpOccNotification.", "$ref": "#/components/schemas/NotificationTypes" }, "operationStates": { - "$ref": "#/components/schemas/OperationStates" + "type": "array", + "description": "Type of the LCM operation state represented by this application instance LCM operation occurrence.", + "items": { + "$ref": "#/components/schemas/OperationStates" + } }, "operationTypes": { - "$ref": "#/components/schemas/OperationTypes" + "type": "array", + "description": "Type of the LCM operation represented by this application instance LCM operation occurrence.", + "items": { + "$ref": "#/components/schemas/OperationTypes" + } } } }, @@ -2513,9 +1563,7 @@ "const": "AppLcmOperationOccurrenceNotification", "type": "string", "description": "Match particular notification types.", - "examples": [ - "AppLcmOperationOccurrenceNotification" - ] + "examples": ["AppLcmOperationOccurrenceNotification"] }, "OperationStates": { "title": "OperationStates", @@ -2528,28 +1576,18 @@ ], "type": "string", "description": "'Type of the LCM operation state represented by this application instance LCM operation occurrence.'", - "examples": [ - "STARTING" - ] + "examples": ["STARTING"] }, "OperationTypes": { "title": "OperationTypes", - "enum": [ - "INSTANTIATE", - "OPERATE", - "TERMINATE" - ], + "enum": ["INSTANTIATE", "OPERATE", "TERMINATE"], "type": "string", "description": "'Type of the LCM operation represented by this application instance LCM operation occurrence.'", - "examples": [ - "INSTANTIATE" - ] + "examples": ["INSTANTIATE"] }, "MepInformation": { "type": "object", - "required": [ - "mepId" - ], + "required": ["mepId"], "properties": { "mepId": { "type": "string", @@ -2563,9 +1601,7 @@ }, "CreateAppInstanceRequest": { "title": "CreateAppInstanceRequest", - "required": [ - "appDId" - ], + "required": ["appDId"], "type": "object", "properties": { "appDId": { @@ -2581,47 +1617,46 @@ "description": "Human-readable name of the application instance to be created." }, "appPlacementInfo": { - "description": "Describes the information of selected MEC platform for the application instance to associate", + "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.\n" }, "AppInstSubscriptionRequest": { "title": "AppInstSubscriptionRequest", - "required": [ - "subscriptionType", - "callbackUri" - ], + "required": ["subscriptionType", "callbackUri"], "type": "object", "properties": { "subscriptionType": { "const": "AppInstanceStateChange", "type": "string", "description": "Shall be set to \"AppInstanceStateChangeSubscription\".", - "examples": [ - "AppInstanceStateChange" - ] + "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" - ], + "required": ["appInstSelectorType"], "type": "object", "properties": { "appInstSelectorType": { + "type": "object", "$ref": "#/components/schemas/AppInstSelectorType" }, "appInstances": { @@ -2629,23 +1664,20 @@ "items": { "type": "string" }, - "description": "" + "description": "If appInstIdSelector = APP_IDENTITY match existing application instances with an \"application instance identifier\" listed in this attribute.\nIf appInstIdSelector = APP_NAME match existing application instances with an \"application instance name\" listed in this attribute.\nIf 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.\nIf appInstIdSelector = APP_FROM_PROVIDER this attribute shall not be included.\n" }, "appsFromProviders": { "type": "array", "items": { "$ref": "#/components/schemas/AppsFromProviders" - }, - "description": "" + } } }, "description": "'This data type represents subscription filter criteria to match application instances. '" }, "AppsFromProviders": { "title": "AppsFromProviders", - "required": [ - "appProvider" - ], + "required": ["appProvider"], "type": "object", "properties": { "appProvider": { @@ -2653,16 +1685,18 @@ "description": "Provider of the application and of the AppD." }, "appProducts": { - "$ref": "#/components/schemas/AppProducts" + "type": "array", + "description": "If present, match application instances that belong to application products with certain product names, from one particular provider.", + "items": { + "$ref": "#/components/schemas/AppProducts" + } } }, "description": "'Present only if appInstIdSelector = APP_FROM_PROVIDER. Match existing application instances, or those created in the future whilst the subscription is active, that belong to applications from certain providers.'" }, "AppProducts": { "title": "AppProducts", - "required": [ - "appName" - ], + "required": ["appName"], "type": "object", "properties": { "appName": { @@ -2670,16 +1704,17 @@ "description": "Name to identify the MEC application." }, "versions": { - "$ref": "#/components/schemas/AppProducts.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" - ], + "required": ["appSoftVersion"], "type": "object", "properties": { "appSoftVersion": { @@ -2707,22 +1742,14 @@ ], "type": "string", "description": "0 = void", - "examples": [ - "VOID" - ] + "examples": ["VOID"] }, "AppInstanceState": { "title": "AppInstanceState", - "enum": [ - "NOT_INSTANTIATED", - "STARTED", - "STOPPED" - ], + "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" - ] + "examples": ["NOT_INSTANTIATED"] }, "AppInstNotification": { "title": "AppInstNotification", @@ -2730,6 +1757,7 @@ "_links", "appDId", "appInstanceId", + "appInstanceState", "appPkgId", "id", "notificationType", @@ -2739,6 +1767,7 @@ "type": "object", "properties": { "_links": { + "type": "object", "$ref": "#/components/schemas/Links" }, "appDId": { @@ -2766,46 +1795,101 @@ "description": "Identifier of the subscription related to this notification." }, "timeStamp": { + "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", - "enum": [ - "NOT_INSTANTIATED", - "STARTED", - "STOPPED" - ] + "description": "Application instance state", + "enum": ["NOT_INSTANTIATED", "STARTED", "STOPPED"] } } }, "LocationInformation": { "type": "object", - "required": [ - "countryCode" - ], + "required": ["countryCode"], "properties": { "countryCode": { - "type": "string" + "type": "string", + "description": "The two-letter ISO 3166 country code in capital letters where an instance is deployed." }, "civicAddress": { + "type": "object", + "description": "Provides the civic address of the site hosting the MEC application instance.", "$ref": "#/components/schemas/LocationInformation.civicAddress" }, "geographicalPosition": { - "type": "string" + "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.\n" }, - "LocationInformation.civicAddress": { + "McioInfo": { "type": "object", "required": [ - "civicAddressElement" + "mcioId", + "mcioName", + "mcioNamespace", + "vduId", + "cismId", + "mcioType", + "desiredInstances", + "availableInstances" ], + "properties": { + "mcioId": { + "type": "string", + "description": "Identifier of this MCIO, created by the CISM." + }, + "mcioName": { + "type": "string", + "description": "Human readable name of this MCIO." + }, + "mcioNamespace": { + "type": "string", + "description": "Namespace of this MCIO" + }, + "vduId": { + "type": "string", + "description": "Reference to the applicable Vdu information element in the VNFD." + }, + "cismId": { + "type": "string", + "description": "Identifier of the CISM managing this MCIO." + }, + "mcioType": { + "type": "string", + "description": "The type of MCIO. See note 1." + }, + "desiredInstances": { + "type": "integer", + "description": "Number of desired MCIO instances." + }, + "availableInstances": { + "type": "integer", + "description": "Number of available MCIO instances" + }, + "additionalInfo": { + "type": "string", + "description": "Additional information which is specific to the MCIO, its type, and which is available from the CISM. See note 2" + } + }, + "description": "NOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from the CISM.\nEXAMPLE: In case of MCIOs managed by Kubernetes®, 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" + }, + "LocationInformation.civicAddress": { + "type": "object", + "required": ["civicAddressElement"], "properties": { "civicAddressElement": { "type": "array", + "description": "Provides elements comprising a single civic address as described in section 3.4, with accompanying example in section 5 of IETF RFC 4776.", "items": { "$ref": "#/components/schemas/CivicAddressElement" } @@ -2847,6 +1931,21 @@ "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\n" + }, + "vnfInstanceId": { + "type": "string", + "description": "Identifier of the VNF instance created by VNFM that the MEC application has been instantiated as. See note 2.\n" + }, + "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." @@ -2868,7 +1967,7 @@ "items": { "$ref": "#/components/schemas/VimConnectionInfo" }, - "description": "" + "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" @@ -2880,7 +1979,7 @@ "$ref": "#/components/schemas/AppInstanceInfo.links" } }, - "description": "'The data type of AppInstanceInfo represents the parameters of instantiated application instance resources.'" + "description": "The data type of AppInstanceInfo represents the parameters of instantiated application instance resources.\nNOTE 1: This field does not apply if the data structure is used by MEAO.\nNOTE 2: This field applies if the data structure is used by MEAO.\nNOTE 3: This field does not apply if the data structure is used on Mm3*.\nNOTE 4: This field applies if the data structure is used on Mm3*.\nNOTE 5: This field applies if the data structure is used on Mm1 or Mm3*.\nNOTE 6: It is not specified in the present document how location information is obtained in the case of MEC in NFV.\nNOTE 7: This attribute reflects the ETSI NFV interpretation of the cloud native workloads.\n" }, "OperationState": { "title": "OperationState", @@ -2893,64 +1992,73 @@ ], "type": "string", "description": "Operation state", - "examples": [ - "STARTING" - ] + "examples": ["STARTING"] }, "InstantiationState": { "title": "InstantiationState", - "enum": [ - "NOT_INSTANTIATED", - "INSTANTIATED" - ], + "enum": ["NOT_INSTANTIATED", "INSTANTIATED"], "type": "string", "description": "Instantiation state of the application instance", - "examples": [ - "NOT_INSTANTIATED" - ] + "examples": ["NOT_INSTANTIATED"] }, "InstantiatedAppState": { "title": "InstantiatedAppState", - "required": [ - "operationalState" - ], + "required": ["operationalState"], "type": "object", "properties": { "operationalState": { "$ref": "#/components/schemas/OperationalState" + }, + "appInstLocation": { + "type": "object", + "description": "Location of the MEC application instance. See note 5 and note 6.", + "$ref": "#/components/schemas/LocationInformation" + }, + "mcioInfo": { + "type": "array", + "description": "Information on the MCIO(s) representing application instance realized by one or a set of OS containers. See note 7.", + "items": { + "$ref": "#/components/schemas/McioInfo" + } } }, "description": "'Information specific to an instantiated application. This attribute shall be present if the instantiationState attribute value is INSTANTIATED.'" }, "OperationalState": { "title": "OperationalState", - "enum": [ - "STARTED", - "STOPPED" - ], + "enum": ["STARTED", "STOPPED"], "type": "string", "description": "Operational state is applicable in the instantiation state INSTANTIATED", - "examples": [ - "STARTED" - ] + "examples": ["STARTED"] }, "AppInstanceInfo.links": { "title": "AppInstanceInfo.links", - "required": [ - "self" - ], + "required": ["self"], "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" } }, @@ -2958,16 +2066,10 @@ }, "LcmOperation": { "title": "LcmOperation", - "enum": [ - "INSTATIATE", - "OPERATE", - "TERMINATE" - ], + "enum": ["INSTATIATE", "OPERATE", "TERMINATE"], "type": "string", "description": "Type of the actual LCM operation represented by this application instance LCM operation occurrence", - "examples": [ - "INSTATIATE" - ] + "examples": ["INSTATIATE"] }, "AppLcmOpOccNotification": { "title": "AppLcmOpOccNotification", @@ -2986,7 +2088,7 @@ "properties": { "id": { "type": "string", - "description": "''" + "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", @@ -2995,14 +2097,11 @@ "operationType": { "type": "string", "description": "Type of the LCM operation represented by this application instance LCM operation occurrence.", - "enum": [ - "INSTANTIATE", - "OPERATE", - "TERMINATE" - ] + "enum": ["INSTANTIATE", "OPERATE", "TERMINATE"] }, "operationState": { "type": "string", + "description": "Operation state.", "enum": [ "STARTING", "PROCESSING", @@ -3016,6 +2115,8 @@ "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": { @@ -3027,6 +2128,7 @@ "description": "Identifier of application instance." }, "_links": { + "type": "object", "$ref": "#/components/schemas/AppLcmOpOccNotification.links" } }, @@ -3045,37 +2147,45 @@ "type": "object", "properties": { "id": { - "type": "string" + "type": "string", + "description": "Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the \"notificationId\" attribute of all these notifications shall have the same value." }, "notificationType": { "type": "string", "description": "Discriminator for the different notification types. Shall be set to \"AppIdentifierCreationSubscription\" for this notification type." }, "subscriptionId": { - "type": "string" + "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": { - "type": "string" + "type": "string", + "description": "The created application instance Identifier." }, "_links": { + "type": "object", + "description": "Links to resources related to this notification.", "$ref": "#/components/schemas/Notification._links" } } }, "Notification._links": { "type": "object", - "required": [ - "subscription", - "appInstance" - ], + "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" } } @@ -3093,42 +2203,48 @@ "type": "object", "properties": { "id": { - "type": "string" + "type": "string", + "description": "Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the \"notificationId\" attribute of all these notifications shall have the same value." }, "notificationType": { "type": "string", "description": "Discriminator for the different notification types. Shall be set to \"AppIdentifierDeletionSubscription\" for this notification type." }, "subscriptionId": { - "type": "string" + "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": { - "type": "string" + "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" - ], + "required": ["appInstance", "subscription", "appLcmOpOcc"], "type": "object", "properties": { "appInstance": { + "type": "object", "$ref": "#/components/schemas/LinkType" }, "subscription": { + "type": "object", "$ref": "#/components/schemas/LinkType" }, "appLcmOpOcc": { + "type": "object", "$ref": "#/components/schemas/LinkType" } }, @@ -3136,12 +2252,12 @@ }, "InstantiateAppRequest": { "title": "InstantiateAppRequest", - "required": [ - "selectedMECHostInfo" - ], + "required": ["selectedMECHostInfo"], "type": "object", "properties": { "locationConstraints": { + "type": "object", + "description": "Defines the location constraints for the application instance to be created. See note 3.", "$ref": "#/components/schemas/LocationConstraints" }, "selectedMECHostInfo": { @@ -3149,53 +2265,352 @@ "items": { "$ref": "#/components/schemas/MECHostInformation" }, - "description": "Describes the information of selected host for the application instance. See note 2." + "description": "Describes the information of selected host for the application instance. See note 2.\n" }, "vimConnectionInfo": { "type": "array", "items": { "$ref": "#/components/schemas/VimConnectionInfo" }, - "description": "Information about VIM connections to be used for managing the resources for the application instance, or refer to external / externally-managed virtual links.\nThis attribute shall only be supported and may be present if application-related resource management in direct mode is applicable. See note 2." + "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": "string", - "description": "Describes CPU and memory requirements, as well as optional additional requirements, such as disk and acceleration related capabilities, of the virtualisation container used to realize the application instance to be created. This attribute may be provided in the InstantiateAppRequest structure to override the same attribute in the AppD." + "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\ninstance to be created. See note 1 and note 4.\n" + }, + "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 \nsame host and same network namespace. See note 1, note 4 and note 5.\n" }, "virtualStorageDescriptor": { "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/VirtualStorageDescriptor" }, - "description": "Defines descriptors of virtual storage resources to be used by the application instance to be created. See note 1." + "description": "Defines descriptors of virtual storage resources to be used by the application instance to be created. See note 1.\n" }, "appTermCandsForCoord": { - "$ref": "#/components/schemas/AppTermCandsForCoord" + "type": "object", + "items": { + "$ref": "#/components/schemas/AppTermCandsForCoord" + }, + "description": "Provides sets of applications as termination candidate alternatives that the MEO/MEAO shall select from when utilizing the coordinate LCM operation exchange in pre-emption situations (see step 3 in clause 5.3.1). If this attribute is omitted, the MEO/MEAO shall make its own selection for the coordinate LCM operation exchange. See note 3." } - } + }, + "description": "NOTE 1: This attribute may be provided in the InstantiateAppRequest structure to override the same attribute in the AppD.\nNOTE 2: This field applies to Mm3 reference point only.\nNOTE 3: This field applies to Mm1 reference point only.\nNOTE 4: Only one of virtualComputeDescriptor or osContainerDescriptor shall be present.\nNOTE 5: This attribute reflects the ETSI NFV interpretation of the cloud native workloads.\n" }, "AppTermCandsForCoord": { "type": "object", - "required": [ - "terminationOptions" - ], + "required": ["terminationOptions"], "properties": { "terminationOptions": { "type": "array", + "description": "Sets of application options for the MEO/MEAO to select from as candidates for termination. The MEO/MEAO shall select one or more of these alternate options to pass to the OSS when utilizing the LCM coordination exchange in pre-emption situations. For each option, the MEO/MEAO may select all, or a subset, of the candidate set's members.", "items": { "$ref": "#/components/schemas/AppTermCandsForCoord.terminationOptions" } } } }, - "AppTermCandsForCoord.terminationOptions": { + "VirtualStorageDescriptor": { + "type": "object", + "required": ["id", "typeOfStorage"], + "properties": { + "id": { + "type": "string", + "description": "Unique identifier of this VirtualStorageDesc in the VNFD." + }, + "typeOfStorage": { + "type": "string", + "description": "Type of virtualised storage resource.", + "enum": ["BLOCK", "OBJECT", "FILE"] + }, + "blockStorageData": { + "type": "object", + "$ref": "#/components/schemas/BlockStorageData", + "description": "Details of block storage." + }, + "objectStorageData": { + "type": "object", + "$ref": "#/components/schemas/ObjectStorageData", + "description": "Details of object storage." + }, + "fileStorageData": { + "type": "object", + "$ref": "#/components/schemas/FileStorageData", + "description": "Details of file storage." + }, + "nfviMaintenanceInfo": { + "type": "object", + "$ref": "#/components/schemas/NfviMaintenanceInfo", + "description": "Information on the rules to be observed during NFVI operation and maintenance." + }, + "perVnfcInstance": { + "type": "boolean", + "description": "Indicates whether the virtual storage resource shall be instantiated per VNFC instance." + } + } + }, + "NfviMaintenanceInfo": { + "type": "object", + "required": ["impactNotificationLeadTime"], + "properties": { + "impactNotificationLeadTime": { + "type": "number", + "description": "The minimum notification lead time requested for upcoming impact of the virtualised resource or their group." + }, + "isImpactMitigationRequested": { + "type": "boolean", + "description": "When set to True, it is requested that at the time of the notification of an upcoming change that is expected to have an impact on the VNF, virtualised resource(s) of the same characteristics as the impacted ones is/are provided to compensate for the impact." + }, + "supportedMigrationType": { + "type": "array", + "description": "Applicable to VirtualComputeDesc and VirtualStorageDesc. When present, specifies the allowed migration types in the order of preference in case of an impact starting with the most preferred type. For LIVE_MIGRATION, see note 1.", + "items": { + "type": "string", + "enum": ["NO_MIGRATION", "OFFLINE_MIGRATION", "LIVE_MIGRATION"] + } + }, + "maxUndetectableInterruptionTime": { + "type": "number", + "description": "Applicable to VirtualComputeDesc and VirtualStorageDesc. When present, it specifies the maximum interruption time that can go undetected at the VNF level and therefore which will not trigger VNF-internal recovery during live migration. (see note 1)" + }, + "minRecoveryTimeBetweenImpacts": { + "type": "number", + "description": "When present, it specifies the time required by the group to recover from an impact, thus, the minimum time requested between consecutive impacts of the group. (see note 2.)" + }, + "maxNumberOfImpactedInstances": { + "type": "object", + "$ref": "#/components/schemas/MaxNumberOfImpactedInstances", + "description": "When present, specifies for different group sizes the maximum number of instances that can be impacted simultaneously within the group of virtualised resources without losing functionality. Zero cardinality indicates no constraint (see note 2). MaxNumberOfImpactedInstances is defined in clause 7.1.8.18. See note 3." + }, + "minNumberOfPreservedInstances": { + "type": "object", + "$ref": "#/components/schemas/MinNumberOfPreservedInstances", + "description": "When present, specifies for different group sizes the minimum number of instances which need to be preserved simultaneously within the group of virtualised resources. Zero cardinality indicates no constraint (see note 2). MinNumberOfPreservedInstances is defined in clause 7.1.8.22.See note 3." + } + }, + "description": "NOTE 1: When the maximum undetectable interruption time is specified it constrains the live migration. If it cannot be\nguaranteed on an NFVI that the interruption caused by the live migration will be less than the indicated\nmaximum undetectable interruption time, then life migration should be downgraded according to the order of preference.\nNOTE 2: Impacts to instances of the group happening within the minimum recovery time are considered simultaneous\nimpacts.\nNOTE 3: Either \"maxNumberOfImpactedInstances\" or \"minNumberOfPreservedInstances\" may be provided, but not both\n" + }, + "MaxNumberOfImpactedInstances": { + "type": "object", + "required": ["maxNumberOfImpactedInstances"], + "properties": { + "groupSize": { + "type": "integer", + "description": "Determines the size of the group for which the maxNumberOfImpactedInstances is specified." + }, + "maxNumberOfImpactedInstances": { + "type": "integer", + "description": "The maximum number of instances that can be impacted simultaneously within the group of the specified size." + } + }, + "description": "NOTE 1: Each groupSize value specified for a group of virtual resources shall be unique, and it shall be possible to form an ascending ordered list of groupSizes. \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" + }, + "CommunicationInterface": { + "type": "object", + "properties": { + "ipAddresses": { + "type": "array", + "description": "Entry point information of the service as one or more pairs of IP address and port.", + "items": { + "$ref": "#/components/schemas/ipAddresses" + } + } + } + }, + "ipAddresses": { + "type": "object", + "required": ["host", "port"], + "properties": { + "host": { + "type": "string", + "description": "Host portion of the address." + }, + "port": { + "type": "integer", + "description": "Port portion of the address." + } + } + }, + "MinNumberOfPreservedInstances": { + "type": "object", + "required": ["minNumberOfPreservedInstances"], + "properties": { + "groupSize": { + "type": "integer", + "description": "When present, determines the size of the group for which the minNumberOfPreservedInstances is specified. Otherwise, the size is not limited." + }, + "minNumberOfPreservedInstances": { + "type": "integer", + "description": "The minimum number of instances which need to be preserved simultaneously within the group of the specified size." + } + }, + "description": "NOTE 1: Each groupSize value specified for a group of virtual resources shall be unique, and it shall be possible to form \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" + }, + "FileStorageData": { "type": "object", "required": [ - "appInstIdTerminationCands" + "sizeOfStorage", + "fileSystemProtocol", + "intVirtualLinkDesc" ], + "properties": { + "sizeOfStorage": { + "type": "number", + "description": "Size of virtualised storage resource in GB." + }, + "fileSystemProtocol": { + "type": "string", + "description": "The shared file system protocol (e.g. NFS, CIFS)." + }, + "intVirtualLinkDesc": { + "type": "object", + "$ref": "#/components/schemas/VnfVirtualLinkDesc", + "description": "Reference of the internal VLD which this file storage connects to." + } + } + }, + "VnfVirtualLinkDesc": { + "type": "object", + "required": [ + "virtualLinkDescId", + "virtualLinkDescFlavour", + "connectivityType" + ], + "properties": { + "virtualLinkDescId": { + "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": { + "type": "array", + "description": "Specifies test access facilities expected on the VL.", + "items": { + "type": "string", + "example": "passive monitoring" + } + }, + "description": { + "type": "string", + "description": "Provides human-readable information on the purpose of the VL.", + "example": "control plane traffic" + }, + "monitoringParameter": { + "type": "array", + "description": "Specifies the virtualised resource related performance metrics on VLD level to be tracked by the VNFM.", + "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": { + "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" + } + } + }, + "ConnectivityType": { + "type": "object", + "required": ["layerProtocol"], + "properties": { + "layerProtocol": { + "type": "array", + "description": "Specifies the protocols that the VL uses See note 1 and note 2.\n", + "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. \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" + }, + "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." + } + } + }, + "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." + } + } + }, + "ObjectStorageData": { + "type": "object", + "properties": { + "maxSizeOfStorage": { + "type": "number", + "description": "Max size of virtualised storage resource in GB." + } + } + }, + "AppTermCandsForCoord.terminationOptions": { + "type": "object", + "required": ["appInstIdTerminationCands"], "properties": { "appInstIdTerminationCands": { "type": "array", + "description": "List of application instance identifiers, constituting a candidate set for termination.", "items": { "type": "string" } @@ -3204,9 +2619,7 @@ }, "LinkType": { "title": "LinkType", - "required": [ - "href" - ], + "required": ["href"], "type": "object", "properties": { "href": { @@ -3215,13 +2628,408 @@ } } }, + "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": { + "type": "object", + "description": "An array of key-value pairs of extended resources required by the container see note.\n", + "additionalProperties": { + "type": "string" + } + } + }, + "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": { + "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", + "items": { + "$ref": "#/components/schemas/MonitoringParameter" + }, + "description": "Specifies the virtualized resource related performance metrics on the OsContainerDesc level to be tracked by the VNFM." + } + } + }, + "MonitoringParameter": { + "type": "object", + "required": ["monitoringParameterId", "performanceMetric"], + "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." + } + } + }, + "VirtualComputeDescriptor": { + "title": "VirtualComputeDescriptor", + "type": "object", + "required": ["virtualComputeDescId", "virtualMemory", "virtualCpu"], + "properties": { + "virtualComputeDescId": { + "type": "string", + "description": "Unique identifier of this VirtualComputeDesc in the VNFD." + }, + "logicalNode": { + "type": "array", + "description": "The logical node requirements.", + "items": { + "$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/RequestedAdditionalCapabilityData" + } + }, + "computeRequirements": { + "description": "Specifies compute requirements.", + "type": "array", + "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": { + "type": "array", + "description": "The local or ephemeral disk(s) of the virtualised compute. See clause 7.1.9.4.3.", + "items": { + "$ref": "#/components/schemas/BlockStorageData" + } + } + } + }, + "BlockStorageData": { + "type": "object", + "required": ["sizeOfStorage"], + "properties": { + "sizeOfStorage": { + "type": "number", + "description": "Size of virtualised storage resource in GB." + }, + "vduStorageRequirements": { + "type": "array", + "items": { + "type": "object", + "description": "An array of key-value pairs that articulate the storage deployment requirements." + }, + "description": "Array of key-value pair requirements on the storage for the VDU." + }, + "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": { + "type": "object", + "required": ["id", "name", "version", "containerFormat", "swImage"], + "properties": { + "id": { + "type": "string", + "description": "The identifier of this software image." + }, + "name": { + "type": "string", + "description": "The name of this software image." + }, + "version": { + "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": { + "type": "string", + "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", + "$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" + }, + "ChecksumData": { + "type": "object", + "required": ["algorithm", "hash"], + "properties": { + "algorithm": { + "type": "string", + "description": "Specifies the algorithm used to obtain the checksum value. See note." + }, + "hash": { + "type": "string", + "description": "Contains the result of applying the algorithm indicated by the algorithm attribute to the data to which this ChecksumData refers.\n" + } + }, + "description": "NOTE: The algorithm attribute value shall be one of the Hash Function Textual Names present in [2].\n" + }, + "LogicalNodeRequirements": { + "type": "object", + "required": ["id", "logicalNodeRequirementDetail"], + "properties": { + "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.\n", + "type": "array", + "items": { + "type": "string", + "format": "not-specified" + } + } + } + }, + "RequestedAdditionalCapabilityData": { + "type": "object", + "required": [ + "requestedAdditionalCapabilityName", + "supportMandatory", + "targetPerformanceParameters" + ], + "properties": { + "requestedAdditionalCapabilityName": { + "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": { + "type": "string", + "description": "Specifies the minimum version of the requested additional capability" + }, + "preferredRequestedAdditionalCapabilityVersion": { + "type": "string", + "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/KeyValuePair" + } + } + } + }, + "KeyValuePair": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "VirtualMemoryData": { + "type": "object", + "required": ["virtualMemSize"], + "properties": { + "virtualMemSize": { + "type": "number", + "description": "Amount of virtual memory in MB." + }, + "virtualMemOversubscriptionPolicy": { + "description": "The memory core oversubscription policy in terms of virtual memory to physical memory on the platform." + }, + "vduMemRequirements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/KeyValuePair" + }, + "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": { + "description": "Specifies requirements on the huge pages resources for the virtual memory." + } + } + }, + "VirtualCpuData": { + "type": "object", + "required": ["numVirtualCpu"], + "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": { + "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": "object", + "description": "Array of key-value pair requirements on the Compute (CPU) for the VDU." + } + }, + "virtualCpuPinning": { + "type": "object", + "description": "The virtual CPU pinning configuration for the virtualised compute resource. See clause 7.1.9.2.4.", + "$ref": "#/components/schemas/VirtualCpuPinningData" + } + } + }, + "VirtualCpuPinningData": { + "type": "object", + "properties": { + "virtualCpuPinningPolicy": { + "type": "string", + "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." + } + } + }, "LocationConstraints": { "title": "LocationConstraints", "type": "object", "properties": { "countryCode": { "type": "string", - "description": "The two-letter ISO 3166 country code in capital letters." + "description": "The two-letter ISO 3166 country code in capital letters. See note." }, "civicAddressElement": { "type": "array", @@ -3231,23 +3039,20 @@ }, "area": { "type": "object", - "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" + "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'" + "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'\"\nNOTE: If both \"countryCode\" and \"area\" are present, no conflicts should exist between the values of these two \nattributes. In case of conflicts, the API producer (e.g. MEO, MEAO) shall disregard parts of the geographic \narea signalled by \"area\" that are outside the boundaries of the country signalled by \"countryCode\". If \n\"countryCode\" is absent, it is solely the \"area\" attribute that defines the location constraint.\n" }, "CivicAddressElement": { "title": "CivicAddressElement", - "required": [ - "caType", - "caValue" - ], + "required": ["caType", "caValue"], "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.'", - "contentEncoding": "int32" + "format": "int32" }, "caValue": { "type": "string", @@ -3258,26 +3063,23 @@ }, "MECHostInformation": { "title": "MECHostInformation", - "required": [ - "hostId" - ], + "required": ["hostId"], "type": "object", "properties": { "hostId": { "type": "object", - "description": "Deployment-specific information to identify a MEC host. 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." + "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.\n" }, "OperateAppRequest": { "title": "OperateAppRequest", - "required": [ - "changeStateTo" - ], + "required": ["changeStateTo"], "type": "object", "properties": { "changeStateTo": { @@ -3286,36 +3088,27 @@ "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.", - "contentEncoding": "int32" + "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 \nequal to \"STARTED\".\nNOTE 2: The \"gracefulStopTimeout\" attribute shall be present, when the \"changeStateTo\" is equal to \"STOPPED\" and \nthe \"stopType\" attribute is equal to \"GRACEFUL\". The \"gracefulStopTimeout\" attribute shall be absent, when \nthe \"changeStateTo\" attribute is equal to \"STOPPED\" and the \"stopType\" attribute is equal to \"FORCEFUL\".\nNOTE 3: The request shall be treated as if the \"stopType\" attribute was set to \"FORCEFUL\", when the \n\"changeStateTo\" attribute is equal to \"STOPPED\" and the \"stopType\" attribute is absent\n" }, "StopType": { "title": "StopType", - "enum": [ - "FORCEFUL", - "GRACEFUL" - ], + "enum": ["FORCEFUL", "GRACEFUL"], "type": "string", - "description": "Signals forceful or graceful stop", - "examples": [ - "FORCEFUL" - ] + "examples": ["FORCEFUL"] }, "ChangeStateTo": { "title": "ChangeStateTo", - "enum": [ - "STARTED", - "STOPPED" - ], + "enum": ["STARTED", "STOPPED"], "type": "string", "description": "The desired operational state", - "examples": [ - "STARTED" - ] + "examples": ["STARTED"] }, "ProblemDetails": { "title": "ProblemDetails", @@ -3332,7 +3125,7 @@ "status": { "type": "integer", "description": "The HTTP status code for this occurrence of the problem", - "contentEncoding": "int32" + "format": "int32" }, "title": { "type": "string", @@ -3346,68 +3139,56 @@ }, "TerminateAppRequest": { "title": "TerminateAppRequest", - "required": [ - "terminationType" - ], + "required": ["terminationType"], "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.", - "contentEncoding": "int32" + "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.\n" }, "TimeStamp": { "title": "TimeStamp", - "required": [ - "nanoSeconds", - "seconds" - ], + "required": ["nanoSeconds", "seconds"], "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.", - "contentEncoding": "int32" + "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.", - "contentEncoding": "int32" + "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" - ], + "enum": ["FORCEFUL", "GRACEFUL"], "type": "string", "description": "'Indicates whether forceful or graceful termination is requested.'", - "examples": [ - "FORCEFUL" - ] + "examples": ["FORCEFUL"] }, "VimConnectionInfo": { "title": "VimConnectionInfo", - "required": [ - "id", - "vimType" - ], + "required": ["id", "vimType"], "type": "object", "properties": { "accessInfo": { "type": "object", - "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": "'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", - "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": "'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", @@ -3415,7 +3196,7 @@ }, "interfaceInfo": { "type": "object", - "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": "'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", @@ -3429,9 +3210,7 @@ }, "Links": { "title": "Links", - "required": [ - "subscription" - ], + "required": ["subscription"], "type": "object", "properties": { "subscription": { @@ -3440,9 +3219,69 @@ }, "description": "Links to resources related to this notification." } + }, + "responses": { + "400": { + "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.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "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.", + "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.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "429": { + "description": "Too Many Requests: used when a rate limiter has triggered.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } } }, - "security": [ - {} - ] + "security": [{}] } \ No newline at end of file diff --git a/MEC010-2_AppPkgMgmt.json b/MEC010-2_AppPkgMgmt.json index 2b0b635..bd2493e 100644 --- a/MEC010-2_AppPkgMgmt.json +++ b/MEC010-2_AppPkgMgmt.json @@ -12,12 +12,12 @@ "url": "https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api", "email": "cti_support@etsi.org" }, - "version": "2.2.1" + "version": "3.0.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, v2.2.1", - "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.02.01_60/gs_MEC01002v020201p.pdf" + "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v3.0.1", + "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.00.01_60/gs_MEC01002v030001p.pdf" }, "tags": [ { @@ -38,9 +38,7 @@ "paths": { "/app_packages": { "post": { - "tags": [ - "app-pkgm" - ], + "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", @@ -64,85 +62,34 @@ "application/json": { "schema": { "$ref": "#/components/schemas/AppPkgInfo", - "description": "The response body shall contain a representation of the application package resource", - "contentMediaType": "application/json" + "description": "The response body shall contain a representation of the application package resource" } } } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false }, "get": { - "tags": [ - "app-pkgm" - ], + "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", @@ -209,77 +156,28 @@ "items": { "$ref": "#/components/schemas/AppPkgInfo" }, - "description": "", - "contentMediaType": "application/json" + "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": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -288,9 +186,7 @@ }, "/onboarded_app_packages": { "post": { - "tags": [ - "app-pkgm" - ], + "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", @@ -314,85 +210,34 @@ "application/json": { "schema": { "$ref": "#/components/schemas/AppPkgInfo", - "description": "The response body shall contain a representation of the application package resource", - "contentMediaType": "application/json" + "description": "The response body shall contain a representation of the application package resource" } } } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false }, "get": { - "tags": [ - "app-pkgm" - ], + "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", @@ -459,77 +304,28 @@ "items": { "$ref": "#/components/schemas/AppPkgInfo" }, - "description": "", - "contentMediaType": "application/json" + "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": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -538,9 +334,7 @@ }, "/app_packages/{appPkgId}": { "get": { - "tags": [ - "app-pkgm" - ], + "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", @@ -563,84 +357,37 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AppPkgInfo" + "items": { + "$ref": "#/components/schemas/AppPkgInfo" + }, + "description": "Indicates the success of request. The response message content shall contain a representation of the resource" } } } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false }, "delete": { - "tags": [ - "app-pkgm" - ], + "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", @@ -663,78 +410,28 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false }, "patch": { - "tags": [ - "app-pkgm" - ], + "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", @@ -768,87 +465,31 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AppPkgInfoModifications" + "items": { + "$ref": "#/components/schemas/AppPkgInfoModifications" + }, + "description": "Shall be returned when the operation has been completed successfully." } } } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/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", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -857,9 +498,7 @@ }, "/onboarded_app_packages/{appPkgId}": { "get": { - "tags": [ - "app-pkgm" - ], + "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", @@ -882,84 +521,37 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AppPkgInfo" + "items": { + "$ref": "#/components/schemas/AppPkgInfo" + }, + "description": "Indicates the success of request. The response message content shall contain arepresentation of the resource." } } } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false }, "delete": { - "tags": [ - "app-pkgm" - ], + "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", @@ -982,78 +574,28 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false }, "patch": { - "tags": [ - "app-pkgm" - ], + "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", @@ -1074,7 +616,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AppPkgInfoModifications" + "items": { + "$ref": "#/components/schemas/AppPkgInfoModifications" + }, + "description": "Shall be returned when the operation has been completed successfully." } } }, @@ -1093,81 +638,22 @@ } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/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", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1176,9 +662,7 @@ }, "/subscriptions": { "post": { - "tags": [ - "app-pkgm" - ], + "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", @@ -1201,76 +685,29 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AppPkgSubscriptionInfo" + "$ref": "#/components/schemas/AppPkgSubscriptionInfo", + "descriprion": "Upon success, a response message contentrepresenting the created subscription shall bereturned." } } } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "callbacks": { @@ -1305,9 +742,7 @@ } }, "get": { - "tags": [ - "app-pkgm" - ], + "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", @@ -1319,76 +754,29 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AppPkgSubscriptionLinkList" + "$ref": "#/components/schemas/AppPkgSubscriptionLinkList", + "description": "Upon success, a response message content containing a list of zero or more subscriptions shallbe returned." } } } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1397,9 +785,7 @@ }, "/subscriptions/{subscriptionId}": { "get": { - "tags": [ - "app-pkgm" - ], + "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", @@ -1422,84 +808,35 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AppPkgSubscriptionInfo" + "$ref": "#/components/schemas/AppPkgSubscriptionInfo", + "descriprion": "Upon success, a response message content containing a representation of the resource shall be returned." } } } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false }, "delete": { - "tags": [ - "app-pkgm" - ], + "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", @@ -1521,49 +858,23 @@ "headers": {}, "content": {} }, + "400": { + "$ref": "#/components/responses/400" + }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1572,9 +883,7 @@ }, "/app_packages/{appPkgId}/appd": { "get": { - "tags": [ - "app-pkgm" - ], + "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", @@ -1647,77 +956,30 @@ "content": { "text/plain": { "schema": { - "$ref": "#/components/schemas/AppD" + "$ref": "#/components/schemas/AppD", + "descriprion": "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": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1726,9 +988,7 @@ }, "/onboarded_app_packages/{appDId}/appd": { "get": { - "tags": [ - "app-pkgm" - ], + "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", @@ -1801,77 +1061,30 @@ "content": { "text/plain": { "schema": { - "$ref": "#/components/schemas/AppD" + "$ref": "#/components/schemas/AppD", + "descriprion": "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": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1880,9 +1093,7 @@ }, "/app_packages/{appPkgId}/package_content": { "get": { - "tags": [ - "app-pkgm" - ], + "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", @@ -1914,83 +1125,28 @@ } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "416": { - "description": "Range Not Satisfiable .", - "headers": {}, - "content": {} + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false }, "put": { - "tags": [ - "app-pkgm" - ], + "tags": ["app-pkgm"], "summary": "Uploads the content of application package.", "description": "Uploads the content of application package.", "operationId": "appPkgPUT", @@ -2006,13 +1162,6 @@ } } ], - "requestBody": { - "description": "", - "content": { - "application/zip": {} - }, - "required": false - }, "responses": { "202": { "description": "The application package has been accepted for uploading, but the processing has not been completed.", @@ -2020,81 +1169,22 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/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", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -2103,9 +1193,7 @@ }, "/onboarded_app_packages/{appDId}/package_content": { "get": { - "tags": [ - "app-pkgm" - ], + "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", @@ -2133,83 +1221,28 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "416": { - "description": "Range Not Satisfiable .", - "headers": {}, - "content": {} + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false }, "put": { - "tags": [ - "app-pkgm" - ], + "tags": ["app-pkgm"], "summary": "Fetch the onboarded application package content identified by appPkgId or appDId.", "description": "Uploads the content of application package.", "operationId": "appDIdPUT", @@ -2225,13 +1258,6 @@ } } ], - "requestBody": { - "description": "", - "content": { - "application/zip": {} - }, - "required": false - }, "responses": { "202": { "description": "The application package has been accepted for uploading, but the processing has not been completed.", @@ -2239,81 +1265,22 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/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", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -2322,9 +1289,7 @@ }, "/user_defined_notification": { "post": { - "tags": [ - "app-pkgm-notifications" - ], + "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", @@ -2346,49 +1311,23 @@ "headers": {}, "content": {} }, + "400": { + "$ref": "#/components/responses/400" + }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -2409,162 +1348,767 @@ "appSoftVersion", "mecVersion", "swImageDescriptor", - "virtualComputeDescriptor" + "appExtCpd" + ], + "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": "string", + "description": "NFV" + }, + "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." + }, + "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": { + "type": "string", + "description": "NFV" + }, + "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.\nNOTE 2: This attribute indicates groups of transport bindings which a service-producing MEC application requires to \n be supported by the platform in order to be able to produce its services. At least one of the indicated groups \n needs to be supported to fulfil the requirements.\nNOTE 3: The support of application descriptor containing descriptions of multiple virtualisation containers and/or \n application software images is out of scope of the present document.\nNOTE 4: External interfaces are used to connect to e.g. other MEC applications, MEC services, UEs and also MEC \n platform and OSS.\nNOTE 5: Only one of virtualComputeDescriptor or osContainerDescriptor shall be present. If virtualComputeDescriptor \n presents, only a single swImageDescriptor shall be provided. \nNOTE 6: If the AppD includes virtualComputeDesc, then logicalNode and requestedAdditionalCapabilites shall not be \n present.\nNOTE 7: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. \n" + }, + "SwImageDescriptor": { + "type": "object", + "required": ["id", "name", "version", "containerFormat", "swImage"], + "properties": { + "id": { + "type": "string", + "description": "The identifier of this software image." + }, + "name": { + "type": "string", + "description": "The name of this software image." + }, + "version": { + "type": "string", + "items": { + "$ref": "#/components/schemas/Version" + }, + "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 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. See note 1." + }, + "minRam": { + "type": "number", + "description": "The minimal RAM requirement for this software image. See note 2." + }, + "size": { + "type": "number", + "description": "The size of this software image file. See note 3." + }, + "swImage": { + "type": "object", + "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. \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" + }, + "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" + }, + "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 \nsemantical context of the MCIO constraints and the parameter names for the MCIO constraints in the MCIO declarative descriptor.The mcioConstraintParams\nattribute shall have one of the following values, expressing the associated semantical context.. For the associated semantical context of the values,\nrefer to the description under the table 7.1.6.2.2-1 of ETSI GS NFV IFA 011 [1].\n" + }, + "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' \n field in Kubernetes® manifest. \nNOTE 2: When the container infrastructure service is a Kubernetes® instance it is the value of the 'kind' field in \n Kubernetes® 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": "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": "object", + "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": { + "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 \n example implementation of extended resources is \"Extended Resources\" in case the container infrastructure \n service is a Kubernetes® instance. \n" + }, + "MonitoringParameter": { + "type": "object", + "required": ["monitoringParameterId", "performanceMetric"], + "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." + } + } + }, + "VirtualComputeDescriptor": { + "title": "VirtualComputeDescriptor", + "type": "object", + "required": ["virtualComputeDescId", "virtualMemory", "virtualCpu"], + "properties": { + "virtualComputeDescId": { + "type": "string", + "description": "Unique identifier of this VirtualComputeDesc in the VNFD." + }, + "logicalNode": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LogicalNodeRequirements" + } + }, + "requestAdditionalCapabilities": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RequestedAdditionalCapabilityData" + } + }, + "computeRequirements": { + "description": "Not specified.", + "type": "array", + "items": { + "type": "string", + "format": "not-specified" + } + }, + "virtualMemory": { + "$ref": "#/components/schemas/VirtualMemoryData" + }, + "virtualCpu": { + "$ref": "#/components/schemas/VirtualCpuData" + }, + "virtualDisk": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BlockStorageData" + } + } + } + }, + "VirtualCpuData": { + "type": "object", + "required": ["numVirtualCpu"], + "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": { + "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": "object", + "description": "Array of key-value pair requirements on the Compute (CPU) for the VDU." + } + }, + "virtualCpuPinning": { + "$ref": "#/components/schemas/VirtualCpuPinningData" + } + } + }, + "BlockStorageData": { "type": "object", + "required": ["sizeOfStorage"], "properties": { - "appDId": { - "type": "string", - "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique. See note 1." + "sizeOfStorage": { + "type": "number", + "description": "Size of virtualised storage resource in GB." }, - "appDNSRule": { + "vduStorageRequirements": { "type": "array", "items": { - "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/DNSRuleDescriptor" + "type": "object", + "description": "An array of key-value pairs that articulate the storage deployment requirements." }, - "description": "Describes DNS rules the MEC application requires." + "description": "Array of key-value pair requirements on the storage for the VDU." }, - "appDVersion": { + "rdmaEnabled": { + "type": "boolean", + "description": "Indicate if the storage support RDMA." + }, + "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\n" + }, + "SwImageDesc": { + "type": "object", + "required": ["id", "name", "version", "containerFormat", "swImage"], + "properties": { + "id": { "type": "string", - "description": "Identifies the version of the application descriptor." + "description": "The identifier of this software image." }, - "appDescription": { + "name": { "type": "string", - "description": "Human readable description of the MEC application." + "description": "The name of this software image." }, - "appExtCpd": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AppExternalCpd" - }, - "description": "Describes external interface(s) exposed by this MEC application." + "version": { + "type": "string", + "description": "The version of this software image." }, - "appFeatureOptional": { - "type": "array", - "items": { - "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/FeatureDependency" - }, - "description": "Describes features a MEC application may use if available." + "checksum": { + "$ref": "#/components/schemas/ChecksumData", + "description": "The checksum of the software image file. See note 3" }, - "appFeatureRequired": { - "type": "array", - "items": { - "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/FeatureDependency" - }, - "description": "Describes features a MEC application requires to run." + "containerFormat": { + "type": "string", + "description": "The container format describes the container file format in which software image is provided." }, - "appInfoName": { + "diskFormat": { "type": "string", - "description": "Human readable name for the MEC application." + "description": "The disk format of a software image is the format of the underlying disk image. See note 1" }, - "appLatency": { - "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/LatencyDescriptor" + "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" }, - "appName": { - "type": "string", - "description": "Name to identify the MEC application." + "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" }, - "appProvider": { + "size": { + "type": "number", + "description": "The size of this software image file. See note 3" + }, + "swImage": { + "$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": "Provider of the application and of the AppD." + "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." }, - "appServiceOptional": { + "supportedVirtualisationEnvironment": { "type": "array", "items": { - "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/ServiceDependency" + "type": "string" }, - "description": "Describes services a MEC application may use if available." + "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" + }, + "ChecksumData": { + "type": "object", + "required": ["algorithm", "hash"], + "properties": { + "algorithm": { + "type": "string", + "description": "Specifies the algorithm used to obtain the checksum value see note." }, - "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." + "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]. \n" + }, + "VirtualCpuPinningData": { + "type": "object", + "properties": { + "virtualCpuPinningPolicy": { + "type": "string", + "description": "Indicates the policy for CPU pinning.", + "enum": ["STATIC", "DYNAMIC"] }, - "appServiceRequired": { + "virtualCpuPinningRule": { "type": "array", "items": { - "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/ServiceDependency" + "type": "string" }, - "description": "Describes services a MEC application requires to run." + "description": "List of rules that should be considered during the allocation of the virtual CPUs to logical CPUs in case of \"STATIC\" virtualCpuPinningPolicy." + } + } + }, + "VirtualMemoryData": { + "type": "object", + "required": ["virtualMemSize"], + "properties": { + "virtualMemSize": { + "type": "number", + "description": "Amount of virtual memory in MB." }, - "appSoftVersion": { - "type": "string", - "description": "Identifies the version of software of the MEC application." + "virtualMemOversubscriptionPolicy": { + "description": "The memory core oversubscription policy in terms of virtual memory to physical memory on the platform." }, - "appTrafficRule": { + "vduMemRequirements": { "type": "array", "items": { - "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/TrafficRuleDescriptor" + "$ref": "#/components/schemas/KeyValuePair" }, - "description": "Describes traffic rules the MEC application requires." + "description": "Array of key-value pair requirements on the memory for the VDU." }, - "changeAppInstanceStateOpConfig": { + "numaEnabled": { + "type": "boolean", + "description": "Specifies the memory allocation to be cognisant of the relevant process/core allocation." + }, + "hugePagesRequirements": { + "description": "Specifies requirements on the huge pages resources for the virtual memory." + } + } + }, + "RequestedAdditionalCapabilityData": { + "type": "object", + "required": [ + "requestedAdditionalCapabilityName", + "supportMandatory", + "targetPerformanceParameters" + ], + "properties": { + "requestedAdditionalCapabilityName": { "type": "string", - "description": "NFV" + "description": "Specifies a requested additional capability for the VDU" }, - "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." + "supportMandatory": { + "type": "boolean", + "description": "Indicates whether the requested additional capability is mandatory for successful operation" }, - "swImageDescriptor": { + "minRequestedAdditionalCapabilityVersion": { "type": "string", - "description": "Describes the descriptors of the software image to be used by the virtualisation container used to realize this MEC application." + "description": "Specifies the minimum version of the requested additional capability" }, - "terminateAppInstanceOpConfig": { + "preferredRequestedAdditionalCapabilityVersion": { "type": "string", - "description": "NFV" + "description": "Specifies the preferred version of the requested additional capability" }, - "transportDependencies": { + "targetPerformanceParameters": { "type": "array", "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." + "$ref": "#/components/schemas/KeyValuePair" + } + } + } + }, + "KeyValuePair": { + "type": "object", + "properties": { + "key": { + "type": "string" }, - "virtualComputeDescriptor": { - "description": "Describes CPU and memory requirements, as well as optional additional requirements, such as disk and acceleration related capabilities, of the virtualisation container used to realize this MEC application.", - "type": "object" + "value": { + "type": "string" + } + } + }, + "LogicalNodeRequirements": { + "type": "object", + "required": ["id"], + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "Identifies this set of logical node requirements" }, - "virtualStorageDescriptor": { + "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": { - "type": "string" - }, - "description": "Defines descriptors of virtual storage resources to be used by the MEC application." - }, - "userContextTransferCapability": { - "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/UserContextTransferCapability" - }, - "appNetworkPolicy": { - "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/AppNetworkPolicy" + "type": "string", + "format": "not-specified" + } } } }, "AppExternalCpd": { "title": "AppExternalCpd", - "required": [ - "inherited_attributes" - ], "type": "object", "properties": { "inherited_attributes": { "type": "object", - "description": "All attributes inherited from Cpd." + "description": "All attributes inherited from Cpd. See note 2." }, "virtualNetworkInterfaceRequirements": { "type": "array", "items": { - "type": "string" + "$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": "NOTE 1: An AppD conformant to the present document shall not specify \"virtualNetworkInterfaceRequirements\" in AppExternalCpd corresponding to primary container cluster network interfaces.\nNOTE 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 \n resources based on cpRole and trunkMode attributes might not be supported by all container technologies.\n" + }, + "AdditionalServiceData": { + "type": "object", + "required": ["portData"], + "properties": { + "portData": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ServicePortData" }, - "description": "Specifies requirements on a virtual network interface realizing the CPs instantiated from this CPD." + "minItems": 1 + }, + "serviceData": { + "type": "object", + "description": "Service matching information exposed by the VirtualCp. See note." + } + }, + "description": "NOTE: This attribute shall only be present if additional information is needed to identify the service termination within \n the VNF, such as for example a url path information in an HTTP request required to allow a single VirtualCp IP \n address to be used for several HTTP based services that use the same portnumber. \n" + }, + "ServicePortData": { + "type": "object", + "required": ["name", "protocol", "port", "portConfigurable"], + "properties": { + "name": { + "type": "string", + "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." } } }, + "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\n" + }, "AppPkgInfo": { "title": "AppPkgInfo", "required": [ @@ -2615,12 +2159,20 @@ "description": "The singleton signing certificate if it is included as a file in the AppD archive." }, "softwareImages": { - "type": "object", - "description": "Information of application software image in application package. Type is TBD" + "description": "Information of application software image in application package. Type is TBD. See note 1.", + "type": "array", + "items": { + "type": "string", + "format": "not-specified" + } }, "additionalArtifacts": { - "type": "object", - "description": "Additional information of application package artifacts that are not application software images. Type is TBD" + "description": "Additional information of application package artifacts that are not application software images. Type is TBD. See note 2.", + "type": "array", + "items": { + "type": "string", + "format": "not-specified" + } }, "onboardingState": { "$ref": "#/components/schemas/OnboardingState" @@ -2650,13 +2202,11 @@ "$ref": "#/components/schemas/AppPkgInfo.links" } }, - "description": "'The data type AppPkgInfo represents the parameters for an application package resource'" + "description": "The data type AppPkgInfo represents the parameters for an application package resource\nNOTE 1: The data type of application software image information data model is related to virtualisation method and \n needs for further study.\nNOTE 2: The data type of additional information of application package artifacts is not specified in the present \n document.\nNOTE 3: This attribute applies only for the MEAO\n" }, "AppPkgInfoModifications": { "title": "AppPkgInfoModifications", - "required": [ - "operationState" - ], + "required": ["operationState"], "type": "object", "properties": { "operationState": { @@ -2667,49 +2217,28 @@ }, "AppPkg.OperationalState": { "title": "AppPkg.OperationalState", - "enum": [ - "ENABLED", - "DISABLED" - ], + "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" - ] + "examples": ["ENABLED"] }, "OnboardingState": { "title": "OnboardingState", - "enum": [ - "CREATED", - "UPLOADING", - "PROCESSING", - "ONBOARDED" - ], + "enum": ["CREATED", "UPLOADING", "PROCESSING", "ONBOARDED"], "type": "string", "description": "Onboarding state of application package", - "examples": [ - "CREATED" - ] + "examples": ["CREATED"] }, "UsageState": { "title": "UsageState", - "enum": [ - "IN_USE", - "NOT_IN_USE" - ], + "enum": ["IN_USE", "NOT_IN_USE"], "type": "string", "description": "Usage state of the onboarded instance of the application package", - "examples": [ - "IN_USE" - ] + "examples": ["IN_USE"] }, "AppPkgInfo.links": { "title": "AppPkgInfo.links", - "required": [ - "self", - "appD", - "appPkgContent" - ], + "required": ["self", "appD", "appPkgContent"], "type": "object", "properties": { "self": { @@ -2743,7 +2272,7 @@ "properties": { "id": { "type": "string", - "description": "''" + "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" @@ -2782,15 +2311,11 @@ ], "type": "string", "description": "Discriminator for the different notification types", - "examples": [ - "AppPackageOnBoarded" - ] + "examples": ["AppPackageOnBoarded"] }, "AppPkgNotification.links": { "title": "AppPkgNotification.links", - "required": [ - "subscription" - ], + "required": ["subscription"], "type": "object", "properties": { "subscription": { @@ -2801,12 +2326,7 @@ }, "AppPkgSubscriptionInfo": { "title": "AppPkgSubscriptionInfo", - "required": [ - "id", - "subscriptionType", - "callbackUri", - "_links" - ], + "required": ["id", "subscriptionType", "callbackUri", "_links"], "type": "object", "properties": { "id": { @@ -2836,15 +2356,11 @@ ], "type": "string", "description": "type of a subscription.", - "examples": [ - "AppPackageOnBoardingSubscription" - ] + "examples": ["AppPackageOnBoardingSubscription"] }, "AppPkgSubscriptionInfo.links": { "title": "AppPkgSubscriptionInfo.links", - "required": [ - "self" - ], + "required": ["self"], "type": "object", "properties": { "self": { @@ -2855,9 +2371,7 @@ }, "AppPkgSubscriptionLinkList": { "title": "AppPkgSubscriptionLinkList", - "required": [ - "_links" - ], + "required": ["_links"], "type": "object", "properties": { "_links": { @@ -2868,9 +2382,7 @@ }, "AppPkgSubscriptionLinkList.links": { "title": "AppPkgSubscriptionLinkList.links", - "required": [ - "self" - ], + "required": ["self"], "type": "object", "properties": { "self": { @@ -2888,10 +2400,7 @@ }, "Subscriptions.AppPkgSubscription": { "title": "Subscriptions.AppPkgSubscription", - "required": [ - "href", - "subscriptionType" - ], + "required": ["href", "subscriptionType"], "type": "object", "properties": { "href": { @@ -2906,10 +2415,7 @@ }, "AppPkgSubscription": { "title": "AppPkgSubscription", - "required": [ - "callbackUri", - "subscriptionType" - ], + "required": ["callbackUri", "subscriptionType"], "type": "object", "properties": { "callbackUri": { @@ -2935,11 +2441,11 @@ "properties": { "appPkgInfoId": { "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." + "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": { "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." + "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", @@ -2960,27 +2466,19 @@ "operationalState": { "type": "string", "description": "Match particular operational state of the application package. May be present if the \"subscriptionType\" attribute contains the value \"AppPackageChangeSubscription\", and shall be absent otherwise.", - "enum": [ - "ENABLED", - "DISABLED" - ] + "enum": ["ENABLED", "DISABLED"] }, "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" - ] + "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.\n" }, "Checksum": { "title": "Checksum", - "required": [ - "algorithm", - "hash" - ], + "required": ["algorithm", "hash"], "type": "object", "properties": { "algorithm": { @@ -2995,12 +2493,7 @@ }, "CreateAppPkg": { "title": "CreateAppPkg", - "required": [ - "appPkgName", - "appPkgPath", - "appPkgVersion", - "checksum" - ], + "required": ["appPkgName", "appPkgPath", "appPkgVersion", "checksum"], "type": "object", "properties": { "appPkgName": { @@ -3009,7 +2502,8 @@ }, "appPkgPath": { "type": "string", - "format": "uri" + "format": "uri", + "description": "Address information of the application package. See note." }, "appPkgVersion": { "type": "string", @@ -3026,7 +2520,8 @@ "$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].\n" }, "KeyValuePairs": { "type": "object", @@ -3036,9 +2531,7 @@ }, "LinkType": { "title": "LinkType", - "required": [ - "href" - ], + "required": ["href"], "type": "object", "properties": { "href": { @@ -3062,7 +2555,7 @@ "status": { "type": "integer", "description": "The HTTP status code for this occurrence of the problem", - "contentEncoding": "int32" + "format": "int32" }, "title": { "type": "string", @@ -3076,49 +2569,96 @@ }, "TimeStamp": { "title": "TimeStamp", - "required": [ - "nanoSeconds", - "seconds" - ], + "required": ["nanoSeconds", "seconds"], "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.", - "contentEncoding": "int32" + "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.", - "contentEncoding": "int32" + "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", - "enum": [ - "DISABLED", - "ENABLED" - ], + "enum": ["DISABLED", "ENABLED"], "type": "string", - "examples": [ - "DISABLED" - ] + "examples": ["DISABLED"] }, "OperationState": { "title": "OperationState", - "enum": [ - "DISABLED", - "ENABLED" - ], + "enum": ["DISABLED", "ENABLED"], "type": "string", - "examples": [ - "DISABLED" - ] + "examples": ["DISABLED"] + } + }, + "responses": { + "400": { + "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.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "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.", + "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.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "429": { + "description": "Too Many Requests: used when a rate limiter has triggered.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } } } }, - "security": [ - {} - ] + "security": [{}] } \ No newline at end of file -- GitLab From f040fc0ce8ee84cd95d1177a7ae8f158b293de7e Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Thu, 25 May 2023 15:59:07 +0500 Subject: [PATCH 17/50] update version to 3.1.1 --- MEC010-2_AppGrant.json | 6 +++--- MEC010-2_AppGrant.yaml | 6 +++--- MEC010-2_AppLcm.json | 6 +++--- MEC010-2_AppLcm.yaml | 6 +++--- MEC010-2_AppPkgMgmt.json | 6 +++--- MEC010-2_AppPkgMgmt.yaml | 6 +++--- README.md | 2 +- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/MEC010-2_AppGrant.json b/MEC010-2_AppGrant.json index b018935..66549aa 100644 --- a/MEC010-2_AppGrant.json +++ b/MEC010-2_AppGrant.json @@ -3,7 +3,7 @@ "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.0.1", + "version": "3.1.1", "license": { "name": "BSD-3-Clause", "url": "https://forge.etsi.org/legal-matters" @@ -15,8 +15,8 @@ } }, "externalDocs": { - "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v3.0.1", - "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.00.01_60/gs_MEC01002v030001p.pdf" + "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", "servers": [ diff --git a/MEC010-2_AppGrant.yaml b/MEC010-2_AppGrant.yaml index 0fa1353..da6a437 100644 --- a/MEC010-2_AppGrant.yaml +++ b/MEC010-2_AppGrant.yaml @@ -2,7 +2,7 @@ openapi: 3.1.0 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.0.1' + version: '3.1.1' license: name: BSD-3-Clause url: https://forge.etsi.org/legal-matters @@ -11,8 +11,8 @@ info: 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, v3.0.1" - url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.00.01_60/gs_MEC01002v030001p.pdf' + 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 servers: - url: https://localhost/granting/v1 diff --git a/MEC010-2_AppLcm.json b/MEC010-2_AppLcm.json index cd2da13..275cf26 100644 --- a/MEC010-2_AppLcm.json +++ b/MEC010-2_AppLcm.json @@ -12,11 +12,11 @@ "url": "https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api", "email": "cti_support@etsi.org" }, - "version": "3.0.1" + "version": "3.1.1" }, "externalDocs": { - "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v3.0.1", - "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.00.01_60/gs_MEC01002v030001p.pdf" + "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": [ diff --git a/MEC010-2_AppLcm.yaml b/MEC010-2_AppLcm.yaml index 77cfb24..862cd8b 100644 --- a/MEC010-2_AppLcm.yaml +++ b/MEC010-2_AppLcm.yaml @@ -9,11 +9,11 @@ info: name: ETSI Forge url: https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api email: cti_support@etsi.org - version: '3.0.1' + version: '3.1.1' externalDocs: - description: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v3.0.1' - url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.00.01_60/gs_MEC01002v030001p.pdf' + 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 diff --git a/MEC010-2_AppPkgMgmt.json b/MEC010-2_AppPkgMgmt.json index bd2493e..29d0e8d 100644 --- a/MEC010-2_AppPkgMgmt.json +++ b/MEC010-2_AppPkgMgmt.json @@ -12,12 +12,12 @@ "url": "https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api", "email": "cti_support@etsi.org" }, - "version": "3.0.1" + "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.0.1", - "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.00.01_60/gs_MEC01002v030001p.pdf" + "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": [ { diff --git a/MEC010-2_AppPkgMgmt.yaml b/MEC010-2_AppPkgMgmt.yaml index e6e2179..50193a6 100644 --- a/MEC010-2_AppPkgMgmt.yaml +++ b/MEC010-2_AppPkgMgmt.yaml @@ -9,12 +9,12 @@ info: name: ETSI Forge url: https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api email: cti_support@etsi.org - version: '3.0.1' + 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.0.1' - url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.00.01_60/gs_MEC01002v030001p.pdf' + 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 diff --git a/README.md b/README.md index 48af656..1a3ecc4 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This repository contains OpenAPIs descriptions for the interfaces specified in E ## Online resources -* [Specification document](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.01.01_60/gs_MEC01002v020101p.pdf) +* [Specification document](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.01.01_60/gs_MEC01002v030101p.pdf) ## Navigate with Swagger UI -- GitLab From bf22cde344b46eb6c0c5f48211e4f8be06e02d73 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Thu, 25 May 2023 16:17:44 +0500 Subject: [PATCH 18/50] fix minor issues in AppPkgMgmt API --- MEC010-2_AppPkgMgmt.json | 4 ++-- MEC010-2_AppPkgMgmt.yaml | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/MEC010-2_AppPkgMgmt.json b/MEC010-2_AppPkgMgmt.json index 29d0e8d..1487753 100644 --- a/MEC010-2_AppPkgMgmt.json +++ b/MEC010-2_AppPkgMgmt.json @@ -1756,7 +1756,7 @@ } }, "computeRequirements": { - "description": "Not specified.", + "description": "Specifies compute requirements.", "type": "array", "items": { "type": "string", @@ -2167,7 +2167,7 @@ } }, "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 \nsoftware images. Type is TBD. See note 2.\n", "type": "array", "items": { "type": "string", diff --git a/MEC010-2_AppPkgMgmt.yaml b/MEC010-2_AppPkgMgmt.yaml index 50193a6..9339b5b 100644 --- a/MEC010-2_AppPkgMgmt.yaml +++ b/MEC010-2_AppPkgMgmt.yaml @@ -1321,7 +1321,7 @@ components: items: $ref: '#/components/schemas/RequestedAdditionalCapabilityData' computeRequirements: - description: Not specified. + description: Specifies compute requirements. type: array items: type: string @@ -1673,7 +1673,9 @@ components: type: string format: not-specified 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. Type is TBD. See note 2. type: array items: type: string -- GitLab From cb53adc10e3a76c34260894a63b5bb186489ed82 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Fri, 26 May 2023 16:43:11 +0500 Subject: [PATCH 19/50] update definitions files --- definitions/MEC010p2_definitions.json | 1086 ++++++++++++------------- definitions/MEC010p2_definitions.yaml | 74 +- 2 files changed, 611 insertions(+), 549 deletions(-) diff --git a/definitions/MEC010p2_definitions.json b/definitions/MEC010p2_definitions.json index 5eef9b3..5acd33f 100644 --- a/definitions/MEC010p2_definitions.json +++ b/definitions/MEC010p2_definitions.json @@ -1,590 +1,588 @@ { - "definitions": { - "ConfigPlatformForAppRequest": { - "type": "object", - "properties": { - "appServiceRequired": { - "type": "array", - "items": { - "$ref": "#/definitions/ServiceDependency" - } - }, - "appServiceOptional": { - "type": "array", - "items": { - "$ref": "#/definitions/ServiceDependency" - } - }, - "appServiceProduced": { - "type": "array", - "items": { - "$ref": "#/definitions/ServiceDescriptor" - } - }, - "appFeatureRequired": { - "type": "array", - "items": { - "$ref": "#/definitions/FeatureDependency" - } - }, - "appFeatureOptional": { - "type": "array", - "items": { - "$ref": "#/definitions/FeatureDependency" - } - }, - "transportDependencies": { - "type": "array", - "items": { - "$ref": "#/definitions/TransportDependency" - } - }, - "appTrafficRule": { - "type": "array", - "items": { - "$ref": "#/definitions/TrafficRuleDescriptor" - } - }, - "appDNSRule": { - "type": "array", - "items": { - "$ref": "#/definitions/DNSRuleDescriptor" - } - }, - "appLatency": { - "$ref": "#/definitions/LatencyDescriptor" - }, - "userContextTransferCapability": { - "$ref": "#/definitions/UserContextTransferCapability" - }, - "appNetworkPolicy": { - "$ref": "#/definitions/AppNetworkPolicy" + "definitions": { + "ConfigPlatformForAppRequest": { + "type": "object", + "properties": { + "appServiceRequired": { + "type": "array", + "items": { + "$ref": "#/definitions/ServiceDependency" } - } - }, - "ServiceDependency": { - "title": "ServiceDependency", - "required": [ - "serName", - "version" - ], - "type": "object", - "properties": { - "requestedPermissions": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Requested permissions regarding the access of the application to the service. See clause 8.2 of ETSI GS MEC 009. The format of this attribute is left for the data model design stage." - }, - "serCategory": { - "type": "object", - "description": "See MEC011" - }, - "serName": { - "type": "string", - "description": "The name of the service, for example, RNIS, LocationService, etc." - }, - "serTransportDependencies": { - "type": "array", - "items": { - "$ref": "#/definitions/TransportDependency" - }, - "description": "Indicates transport and serialization format dependencies of consuming the service. Defaults to REST + JSON if absent. See note." - }, - "version": { - "type": "string", - "description": "The version of the service." + }, + "appServiceOptional": { + "type": "array", + "items": { + "$ref": "#/definitions/ServiceDependency" + } + }, + "appServiceProduced": { + "type": "array", + "items": { + "$ref": "#/definitions/ServiceDescriptor" + } + }, + "appFeatureRequired": { + "type": "array", + "items": { + "$ref": "#/definitions/FeatureDependency" + } + }, + "appFeatureOptional": { + "type": "array", + "items": { + "$ref": "#/definitions/FeatureDependency" } + }, + "transportDependencies": { + "type": "array", + "items": { + "$ref": "#/definitions/TransportDependency" + } + }, + "appTrafficRule": { + "type": "array", + "items": { + "$ref": "#/definitions/TrafficRuleDescriptor" + } + }, + "appDNSRule": { + "type": "array", + "items": { + "$ref": "#/definitions/DNSRuleDescriptor" + } + }, + "appLatency": { + "$ref": "#/definitions/LatencyDescriptor" + }, + "userContextTransferCapability": { + "$ref": "#/definitions/UserContextTransferCapability" + }, + "appNetworkPolicy": { + "$ref": "#/definitions/AppNetworkPolicy" } - }, - "TransportDependency": { - "title": "TransportDependency", - "required": [ - "labels", - "serializers", - "transport" - ], - "type": "object", - "properties": { - "labels": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Set of labels that allow to define groups of transport bindings. The mechanism of the grouping is defined below this table." + } + }, + "ServiceDependency": { + "title": "ServiceDependency", + "required": ["serName", "version"], + "type": "object", + "properties": { + "requestedPermissions": { + "type": "array", + "items": { + "type": "string" }, - "serializers": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Information about the serializers in this transport binding, as defined in the SerializerTypes type in ETSI GS MEC 011 [i.4]. Support for at least one of the entries is required in conjunction with the transport." + "description": "Requested permissions regarding the access of the application to the service. See clause 8.2 of ETSI GS MEC 009. The format of this attribute is left for the data model design stage." + }, + "serCategory": { + "$ref": "#/definitions/CategoryRef" + }, + "serName": { + "type": "string", + "description": "The name of the service, for example, RNIS, LocationService, etc." + }, + "serTransportDependencies": { + "type": "array", + "items": { + "$ref": "#/definitions/TransportDependency" }, - "transport": { - "$ref": "#/definitions/TransportDescriptor" - } + "description": "Indicates transport and serialization format dependencies of consuming the service. Defaults to REST + JSON if absent. See note." + }, + "version": { + "type": "string", + "description": "The version of the service." + } + } + }, + "CategoryRef": { + "title": "CategoryRef", + "required": ["href", "id", "name", "version"], + "type": "object", + "properties": { + "href": { + "type": "string", + "description": "Reference of the catalogue." + }, + "id": { + "type": "string", + "description": "Unique identifier of the category." + }, + "name": { + "type": "string", + "description": "Name of the category." + }, + "version": { + "type": "string", + "description": "Category version." } }, - "TransportDescriptor": { - "title": "TransportDescriptor", - "required": [ - "name", - "protocol", - "security", - "type", - "version" - ], - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name of this transport." - }, - "description": { - "type": "string", - "description": "Human-readable description of this transport." - }, - "protocol": { - "type": "string", - "description": "The name of the protocol used. Shall be set to HTTP for a REST API." - }, - "security": { - "type": "object", - "description": "See MEC011" - }, - "type": { + "description": "This type represents the category reference." + }, + "TransportDependency": { + "title": "TransportDependency", + "required": ["labels", "serializers", "transport"], + "type": "object", + "properties": { + "labels": { + "type": "array", + "items": { "type": "string" }, - "version": { - "type": "string", - "description": "The version of the protocol used." + "description": "Set of labels that allow to define groups of transport bindings. The mechanism of the grouping is defined below this table." + }, + "serializers": { + "type": "array", + "items": { + "type": "string" }, - "implSpecificInfo": { - "type": "object", - "description": "Additional implementation specific details of the transport." + "description": "Information about the serializers in this transport binding, as defined in the SerializerTypes type in ETSI GS MEC 011 [i.4]. Support for at least one of the entries is required in conjunction with the transport." + }, + "transport": { + "$ref": "#/definitions/TransportDescriptor" + } + } + }, + "TransportDescriptor": { + "title": "TransportDescriptor", + "required": ["name", "protocol", "security", "type", "version"], + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of this transport." + }, + "description": { + "type": "string", + "description": "Human-readable description of this transport." + }, + "protocol": { + "type": "string", + "description": "The name of the protocol used. Shall be set to HTTP for a REST API." + }, + "security": { + "$ref": "#/definitions/SecurityInfo" + }, + "type": { + "type": "string" + }, + "version": { + "type": "string", + "description": "The version of the protocol used." + }, + "implSpecificInfo": { + "type": "object", + "description": "Additional implementation specific details of the transport." + } + } + }, + "SecurityInfo": { + "type": "object", + "properties": { + "oAuth2Info": { + "$ref": "#/definitions/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 TLSbased authorization defined for alternative transports (see ETSI GS MEC 009 [5] for more information).'\n", + "type": "array", + "minItems": 0, + "items": { + "type": null } } - }, - "ServiceDescriptor": { - "title": "ServiceDescriptor", - "description": "'The ServiceDescriptor data type describes a MEC service produced by a service-providing MEC application.'", - "required": [ - "serName", - "version", - "transport" - ], - "type": "object", - "properties": { - "serName": { - "type": "string", - "description": "The name of the service, for example, RNIS, LocationService, etc." - }, - "serCategory": { - "type": "object", - "description": "See MEC011" - }, - "version": { - "type": "string", - "description": "The version of the service." + } + }, + "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.\n", + "type": "object", + "properties": { + "grantTypes": { + "type": "array", + "minItems": 1, + "items": { + "type": "string" }, - "transportsSupported": { - "type": "array", - "items": { - "$ref": "#/definitions/TransportsSupported" - } - } + "description": "\"List of supported OAuth 2.0 grant types.\\nEach entry shall be one of the following permitted values:\\nOAUTH2_AUTHORIZATION_CODE (Authorization code grant type)\\nOAUTH2_IMPLICIT_GRANT\\n \\t(Implicit grant type)\\nOAUTH2_RESOURCE_OWNER\\n\\t(Resource owner password credentials grant type) \\nOAUTH2_CLIENT_CREDENTIALS\\n\\t(Client credentials grant type)\\nOnly the value \\\"OAUTH2_CLIENT_CREDENTIALS\\\" is supported in the present document. \"\n", + "enum": ["SEE_DESCRIPTION"] + }, + "tokenEndpoint": { + "description": "The token endpoint. Shall be present unless the grant type is OAUTH2_IMPLICIT_GRANT.", + "type": "string", + "format": "uri" } }, - "TransportsSupported": { - "title": "TransportsSupported", - "type": "object", - "required": [ - "serializers" - ], - "properties": { - "transport": { - "$ref": "#/definitions/TransportDescriptor" - }, - "serializers": { - "type": "array", - "items": { - "type": "string" - }, - "description": "'Information about the serializers in this binding, as defined in the SerializerTypes type in ETSI GS MEC 011 '" + "required": ["grantTypes"] + }, + "ServiceDescriptor": { + "title": "ServiceDescriptor", + "description": "'The ServiceDescriptor data type describes a MEC service produced by a service-providing MEC application.'", + "required": ["serName", "version", "transport"], + "type": "object", + "properties": { + "serName": { + "type": "string", + "description": "The name of the service, for example, RNIS, LocationService, etc." + }, + "serCategory": { + "type": "object", + "$ref": "#/definitions/CategoryRef" + }, + "version": { + "type": "string", + "description": "The version of the service." + }, + "transportsSupported": { + "type": "array", + "items": { + "$ref": "#/definitions/TransportsSupported" } + } + } + }, + "TransportsSupported": { + "title": "TransportsSupported", + "type": "object", + "required": ["serializers"], + "properties": { + "transport": { + "$ref": "#/definitions/TransportDescriptor" }, - "description": "'Indicates transports and serialization formats supported made available to the service-consuming application. Defaults to REST + JSON if absent.'" - }, - "FeatureDependency": { - "title": "FeatureDependency", - "required": [ - "featureName", - "version" - ], - "type": "object", - "properties": { - "featureName": { - "type": "string", - "description": "The name of the feature, for example, UserApps, UEIdentity, etc." + "serializers": { + "type": "array", + "items": { + "type": "string" }, - "version": { - "type": "string", - "description": "The version of the feature." - } + "description": "'Information about the serializers in this binding, as defined in the SerializerTypes type in ETSI GS MEC 011 '" } }, - "TrafficRuleDescriptor": { - "title": "TrafficRuleDescriptor", - "required": [ - "action", - "filterType", - "priority", - "trafficFilter", - "trafficRuleId" - ], - "type": "object", - "properties": { - "action": { - "$ref": "#/definitions/Action" - }, - "dstInterface": { - "maxItems": 2, - "type": "array", - "items": { - "$ref": "#/definitions/InterfaceDescriptor" - }, - "description": "" - }, - "filterType": { - "$ref": "#/definitions/FilterType" - }, - "priority": { - "type": "integer", - "description": "Priority of this traffic rule within the range 0 to 255. If traffic rule conflicts, the one with higher priority take precedence. Value indicates the priority in descending order, i.e. with 0 as the highest priority and 255 as the lowest priority.", - "contentEncoding": "int32" + "description": "'Indicates transports and serialization formats supported made available to the service-consuming application. Defaults to REST + JSON if absent.'" + }, + "FeatureDependency": { + "title": "FeatureDependency", + "required": ["featureName", "version"], + "type": "object", + "properties": { + "featureName": { + "type": "string", + "description": "The name of the feature, for example, UserApps, UEIdentity, etc." + }, + "version": { + "type": "string", + "description": "The version of the feature." + } + } + }, + "TrafficRuleDescriptor": { + "title": "TrafficRuleDescriptor", + "required": [ + "action", + "filterType", + "priority", + "trafficFilter", + "trafficRuleId" + ], + "type": "object", + "properties": { + "action": { + "$ref": "#/definitions/Action" + }, + "dstInterface": { + "maxItems": 2, + "type": "array", + "items": { + "$ref": "#/definitions/InterfaceDescriptor" }, - "trafficFilter": { - "minItems": 1, - "type": "array", - "items": { - "$ref": "#/definitions/TrafficFilter" - }, - "description": "The filter used to identify specific flow/packets that need to be handled by the MEC host." + "description": "Describes the destination interface information, . Some applications (e.g. inline/tap) _DECAPSULATED, FORWARD_ENCAPSULATED or PASSTHROUGH, one value shall be provided. If the action is onDUPLICATE_DECAPSULATED or DUPLICATE_ENCAPSULATED, two values shall be provided. See note 2." + }, + "filterType": { + "$ref": "#/definitions/FilterType" + }, + "priority": { + "type": "integer", + "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.", + "contentEncoding": "int32" + }, + "trafficFilter": { + "minItems": 1, + "type": "array", + "items": { + "$ref": "#/definitions/TrafficFilter" }, - "trafficRuleId": { - "type": "string", - "description": "Identifies the traffic rule." - } + "description": "The filter used to identify specific flow/packets that need to be handled by the MEC host." + }, + "trafficRuleId": { + "type": "string", + "description": "Identifies the traffic rule." } }, - "Action": { - "title": "Action", - "enum": [ - "DROP", - "FORWARD_DECAPSULATED", - "FORWARD_AS_IS", - "PASSTHROUGH", - "DUPLICATED_DECAPSULATED", - "DUPLICATE_AS_IS" - ], - "type": "string", - "description": "'Identifies the action of the MEC host data plane, when a packet matches the trafficFilter.'", - "examples": [ - "DROP" - ] - }, - "TrafficFilter": { - "title": "TrafficFilter", - "type": "object", - "properties": { - "dSCP": { - "type": "integer", - "description": "Used to match all IPv4 packets that have the same DSCP.", - "contentEncoding": "int32" - }, - "dstAddress": { - "type": "array", - "items": { - "type": "string" - }, - "description": "A 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." - }, - "dstPort": { - "type": "array", - "items": { - "type": "string" - }, - "description": "A port or a range of ports." - }, - "dstTunnelPort": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Used for GTP tunnel based traffic rule." - }, - "protocol": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Specify the protocol of the traffic filter." + "description": "NOTE 1: Value indicates the priority in descending order, i.e. with 0 as the highest priority and 255 as the lowest priority.\nNOTE 2: Some applications (like inline/tap) require two interfaces. The first interface in the case of inline/tap is on the \n client (e.g. UE) side and the second on the core network (e.g. EPC) side\n" + }, + "Action": { + "title": "Action", + "enum": [ + "DROP", + "FORWARD_DECAPSULATED", + "FORWARD, ENCAPSULATED", + "PASSTHROUGH", + "DUPLICATE_DECAPSULATED", + "DUPLICATE, .ENCAPSULATED" + ], + "type": "string", + "description": "'Identifies the action of the MEC host data plane, when a packet matches the trafficFilter.'", + "examples": ["DROP"] + }, + "TrafficFilter": { + "title": "TrafficFilter", + "type": "object", + "properties": { + "dSCP": { + "type": "integer", + "description": "Used to match all IPv4 packets that have the same DSCP.", + "contentEncoding": "int32" + }, + "dstAddress": { + "type": "array", + "items": { + "type": "string" }, - "qCI": { - "type": "integer", - "description": "Used to match all packets that have the same QCI.", - "contentEncoding": "int32" + "description": "A 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." + }, + "dstPort": { + "type": "array", + "items": { + "type": "string" }, - "srcAddress": { - "type": "array", - "items": { - "type": "string" - }, - "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." + "description": "A port or a range of ports." + }, + "dstTunnelPort": { + "type": "array", + "items": { + "type": "string" }, - "srcPort": { - "type": "array", - "items": { - "type": "string" - }, - "description": "A port or a range of ports." + "description": "Used for GTP tunnel based traffic rule." + }, + "protocol": { + "type": "array", + "items": { + "type": "string" }, - "srcTunnelAddress": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Used for GTP tunnel based traffic rule." + "description": "Specify the protocol of the traffic filter." + }, + "qCI": { + "type": "integer", + "description": "Used to match all packets that have the same QCI.", + "contentEncoding": "int32" + }, + "srcAddress": { + "type": "array", + "items": { + "type": "string" }, - "srcTunnelPort": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Used for GTP tunnel based traffic rule." + "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." + }, + "srcPort": { + "type": "array", + "items": { + "type": "string" }, - "tC": { - "type": "integer", - "description": "Used to match all IPv6 packets that have the same TC.", - "contentEncoding": "int32" + "description": "A port or a range of ports." + }, + "srcTunnelAddress": { + "type": "array", + "items": { + "type": "string" }, - "tag": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Used for tag based traffic rule." + "description": "Used for GTP tunnel based traffic rule." + }, + "srcTunnelPort": { + "type": "array", + "items": { + "type": "string" }, - "tgtTunnelAddress": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Used for GTP tunnel based traffic rule." + "description": "Used for GTP tunnel based traffic rule." + }, + "tC": { + "type": "integer", + "description": "Used to match all IPv6 packets that have the same TC.", + "contentEncoding": "int32" + }, + "tag": { + "type": "array", + "items": { + "type": "string" }, - "uri": { - "type": "array", - "items": { - "type": "string" - } + "description": "Used for tag based traffic rule." + }, + "tgtTunnelAddress": { + "type": "array", + "items": { + "type": "string" }, - "packetLabel": { - "type": "array", - "items": { - "type": "string" - } + "description": "Used for GTP tunnel based traffic rule." + }, + "uri": { + "type": "array", + "items": { + "type": "string" } - } - }, - "DNSRuleDescriptor": { - "title": "DNSRuleDescriptor", - "required": [ - "dnsRuleId", - "domainName", - "ipAddress", - "ipAddressType" - ], - "type": "object", - "properties": { - "dnsRuleId": { - "type": "string", - "description": "Identifies the DNS Rule" - }, - "domainName": { - "type": "string", - "description": "FQDN of the DNS rule" - }, - "ipAddress": { - "type": "string", - "description": "IP address given by the DNS rule" - }, - "ipAddressType": { - "$ref": "#/definitions/IpAddressType" - }, - "ttl": { - "type": "integer", - "description": "Time-to-live value", - "contentEncoding": "int32" + }, + "packetLabel": { + "type": "array", + "items": { + "type": "string" } } - }, - "IpAddressType": { - "title": "IpAddressType", - "enum": [ - "IP_V6", - "IP_V4" - ], - "type": "string", - "description": "Specifies the IP address type", - "examples": [ - "IP_V6" - ] - }, - "LatencyDescriptor": { - "title": "LatencyDescriptor", - "required": [ - "maxLatency" - ], - "type": "object", - "properties": { - "maxLatency": { - "type": "integer", - "description": "The value of the maximum latency in nano seconds tolerated by the MEC application. See note.", - "contentEncoding": "int32" - } + } + }, + "DNSRuleDescriptor": { + "title": "DNSRuleDescriptor", + "required": ["dnsRuleId", "domainName", "ipAddress", "ipAddressType"], + "type": "object", + "properties": { + "dnsRuleId": { + "type": "string", + "description": "Identifies the DNS Rule" + }, + "domainName": { + "type": "string", + "description": "FQDN of the DNS rule" + }, + "ipAddress": { + "type": "string", + "description": "IP address given by the DNS rule" + }, + "ipAddressType": { + "$ref": "#/definitions/IpAddressType" + }, + "ttl": { + "type": "integer", + "description": "Time-to-live value", + "contentEncoding": "int32" } - }, - "UserContextTransferCapability": { - "title": "UserContextTransferCapability", - "required": [ - "statefulApplication" - ], - "type": "object", - "properties": { - "statefulApplication": { - "type": "boolean" - }, - "userContextTransferSupport": { - "type": "boolean" - } + } + }, + "IpAddressType": { + "title": "IpAddressType", + "enum": ["IP_V6", "IP_V4"], + "type": "string", + "description": "Specifies the IP address type", + "examples": ["IP_V6"] + }, + "LatencyDescriptor": { + "title": "LatencyDescriptor", + "required": ["maxLatency"], + "type": "object", + "properties": { + "maxLatency": { + "type": "integer", + "description": "The value of the maximum latency in nano seconds tolerated by the MEC application. See note.", + "contentEncoding": "int32" } - }, - "AppNetworkPolicy": { - "title": "AppNetworkPolicy", - "required": [ - "steeredNetwork" - ], - "type": "object", - "properties": { - "steeredNetwork": { - "$ref": "#/definitions/AppNetworkPolicy.steeredNetwork" - } + } + }, + "UserContextTransferCapability": { + "title": "UserContextTransferCapability", + "required": ["statefulApplication"], + "type": "object", + "properties": { + "statefulApplication": { + "type": "boolean" + }, + "userContextTransferSupport": { + "type": "boolean" } - }, - "AppNetworkPolicy.steeredNetwork": { - "title": "AppNetworkPolicy.steeredNetwork", - "type": "object", - "properties": { - "cellularNetwork": { - "type": "boolean" - }, - "wi-fiNetwork": { - "type": "boolean" - }, - "fixedAccessNetwork": { - "type": "boolean" - } + } + }, + "AppNetworkPolicy": { + "title": "AppNetworkPolicy", + "required": ["steeredNetwork"], + "type": "object", + "properties": { + "steeredNetwork": { + "$ref": "#/definitions/AppNetworkPolicy.steeredNetwork" } - }, - "InterfaceDescriptor": { - "title": "InterfaceDescriptor", - "required": [ - "interfaceType" - ], - "type": "object", - "properties": { - "dstIPAddress": { - "type": "string", - "description": "If the interface type is IP, the destination address identifies the IP address of the destination. Only used for dstInterface." - }, - "dstMACAddress": { - "type": "string", - "description": "If the interface type is MAC, the destination address identifies the MAC address of the destination. Only used for dstInterface." - }, - "interfaceType": { - "$ref": "#/definitions/InterfaceType" - }, - "srcMACAddress": { - "type": "string", - "description": "If the interface type is MAC, the source address identifies the MAC address of the interface." - }, - "tunnelInfo": { - "$ref": "#/definitions/TunnelInfo" - } + } + }, + "AppNetworkPolicy.steeredNetwork": { + "title": "AppNetworkPolicy.steeredNetwork", + "type": "object", + "properties": { + "cellularNetwork": { + "type": "boolean" + }, + "wi-fiNetwork": { + "type": "boolean" + }, + "fixedAccessNetwork": { + "type": "boolean" } - }, - "InterfaceType": { - "title": "InterfaceType", - "enum": [ - "TUNNEL", - "MAC", - "IP" - ], - "type": "string", - "description": "Type of interface.", - "examples": [ - "TUNNEL" - ] - }, - "TunnelInfo": { - "title": "TunnelInfo", - "required": [ - "tunnelDstAddress", - "tunnelSrcAddress", - "tunnelType" - ], - "type": "object", - "properties": { - "tunnelDstAddress": { - "type": "string", - "description": "Destination address of the tunnel." - }, - "tunnelSpecificData": { - "type": "string" - }, - "tunnelSrcAddress": { - "type": "string", - "description": "Source address of the tunnel." - }, - "tunnelType": { - "$ref": "#/definitions/TunnelType" - } + } + }, + "InterfaceDescriptor": { + "title": "InterfaceDescriptor", + "required": ["interfaceType"], + "type": "object", + "properties": { + "dstIPAddress": { + "type": "string", + "description": "If the interface type is IP, the destination address identifies the IP address of the destination. Only used for dstInterface." + }, + "dstMACAddress": { + "type": "string", + "description": "If the interface type is MAC, the destination address identifies the MAC address of the destination. Only used for dstInterface." + }, + "interfaceType": { + "$ref": "#/definitions/InterfaceType" + }, + "srcMACAddress": { + "type": "string", + "description": "If the interface type is MAC, the source address identifies the MAC address of the interface." + }, + "tunnelInfo": { + "$ref": "#/definitions/TunnelInfo" + } + } + }, + "InterfaceType": { + "title": "InterfaceType", + "enum": ["TUNNEL", "MAC", "IP"], + "type": "string", + "description": "Type of interface.", + "examples": ["TUNNEL"] + }, + "TunnelInfo": { + "title": "TunnelInfo", + "required": ["tunnelDstAddress", "tunnelSrcAddress", "tunnelType"], + "type": "object", + "properties": { + "tunnelDstAddress": { + "type": "string", + "description": "Destination address of the tunnel." + }, + "tunnelSpecificData": { + "type": "string" + }, + "tunnelSrcAddress": { + "type": "string", + "description": "Source address of the tunnel." + }, + "tunnelType": { + "$ref": "#/definitions/TunnelType" } - }, - "TunnelType": { - "title": "TunnelType", - "enum": [ - "GTP-U", - "GRE" - ], - "type": "string", - "description": "Type of tunnel.", - "examples": [ - "GTP-U" - ] - }, - "FilterType": { - "title": "FilterType", - "enum": [ - "FLOW", - "PACKET" - ], - "type": "string", - "description": "Definition of filter type: per FLOW or PACKET", - "examples": [ - "FLOW" - ] } + }, + "TunnelType": { + "title": "TunnelType", + "enum": ["GTP-U", "GRE"], + "type": "string", + "description": "Type of tunnel.", + "examples": ["GTP-U"] + }, + "FilterType": { + "title": "FilterType", + "enum": ["FLOW", "PACKET"], + "type": "string", + "description": "If it is per FLOW, the filter matches upstream (e.g. UE->EPC) packets and the downstream (e.g. EPC->UE) packets are handled by the same context.", + "examples": ["FLOW"] } - } \ No newline at end of file + } +} \ No newline at end of file diff --git a/definitions/MEC010p2_definitions.yaml b/definitions/MEC010p2_definitions.yaml index cfcea17..70ce0c6 100644 --- a/definitions/MEC010p2_definitions.yaml +++ b/definitions/MEC010p2_definitions.yaml @@ -56,8 +56,7 @@ Requested permissions regarding the access of the application to the service. See clause 8.2 of ETSI GS MEC 009. The format of this attribute is left for the data model design stage. serCategory: - type: object - description: See MEC011 + $ref: '#/definitions/CategoryRef' serName: type: string description: The name of the service, for example, RNIS, LocationService, etc. @@ -69,6 +68,29 @@ version: type: string description: The version of the service. + + CategoryRef: + title: CategoryRef + required: + - href + - id + - name + - version + type: object + properties: + href: + type: string + description: Reference of the catalogue. + id: + type: string + description: Unique identifier of the category. + name: + type: string + description: Name of the category. + version: + type: string + description: Category version. + description: This type represents the category reference. TransportDependency: title: TransportDependency @@ -111,8 +133,7 @@ type: string description: The name of the protocol used. Shall be set to HTTP for a REST API. security: - type: object - description: See MEC011 + $ref: '#/definitions/SecurityInfo' type: type: string version: @@ -122,6 +143,49 @@ type: object description: Additional implementation specific details of the transport. + SecurityInfo: + type: object + properties: + oAuth2Info: + $ref: '#/definitions/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 TLSbased authorization defined for alternative transports (see ETSI GS MEC 009 [5] + for more information).' + type: array + minItems: 0 + items: + type: + + 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: + type: array + minItems: 1 + items: + type: string + description: > + "List of supported OAuth 2.0 grant types.\nEach entry shall be one of the following permitted + values:\nOAUTH2_AUTHORIZATION_CODE (Authorization code grant type)\nOAUTH2_IMPLICIT_GRANT\n + \t(Implicit grant type)\nOAUTH2_RESOURCE_OWNER\n\t(Resource owner password credentials grant type) + \nOAUTH2_CLIENT_CREDENTIALS\n\t(Client credentials grant type)\nOnly the value \"OAUTH2_CLIENT_CREDENTIALS\" + is supported in the present document. " + 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 + ServiceDescriptor: title: ServiceDescriptor description: "'The ServiceDescriptor data type describes a MEC service produced by a service-providing MEC application.'" @@ -136,7 +200,7 @@ description: The name of the service, for example, RNIS, LocationService, etc. serCategory: type: object - description: See MEC011 + $ref: '#/definitions/CategoryRef' version: type: string description: The version of the service. -- GitLab From cd92fd42dc7ec5cb1823292aa6acbaff1ce090bc Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Fri, 26 May 2023 16:43:36 +0500 Subject: [PATCH 20/50] update AppPkgMgmt yaml and Json files --- MEC010-2_AppPkgMgmt.json | 50 ++++++++++++++++++++++++++++++++--- MEC010-2_AppPkgMgmt.yaml | 57 +++++++++++++++++++++++++++++++++++++--- 2 files changed, 101 insertions(+), 6 deletions(-) diff --git a/MEC010-2_AppPkgMgmt.json b/MEC010-2_AppPkgMgmt.json index 1487753..fec8587 100644 --- a/MEC010-2_AppPkgMgmt.json +++ b/MEC010-2_AppPkgMgmt.json @@ -1473,7 +1473,7 @@ }, "changeAppInstanceStateOpConfig": { "type": "string", - "description": "NFV" + "$ref": "#/components/schemas/changeAppInstanceStateOpConfig" }, "mecVersion": { "type": "array", @@ -1491,7 +1491,7 @@ }, "terminateAppInstanceOpConfig": { "type": "string", - "description": "NFV" + "$ref": "#/components/schemas/terminateAppInstanceOpConfig" }, "transportDependencies": { "type": "object", @@ -1517,6 +1517,50 @@ }, "description": "NOTE 1: The appDId shall be used as the unique identifier of the application package that contains this AppD.\nNOTE 2: This attribute indicates groups of transport bindings which a service-producing MEC application requires to \n be supported by the platform in order to be able to produce its services. At least one of the indicated groups \n needs to be supported to fulfil the requirements.\nNOTE 3: The support of application descriptor containing descriptions of multiple virtualisation containers and/or \n application software images is out of scope of the present document.\nNOTE 4: External interfaces are used to connect to e.g. other MEC applications, MEC services, UEs and also MEC \n platform and OSS.\nNOTE 5: Only one of virtualComputeDescriptor or osContainerDescriptor shall be present. If virtualComputeDescriptor \n presents, only a single swImageDescriptor shall be provided. \nNOTE 6: If the AppD includes virtualComputeDesc, then logicalNode and requestedAdditionalCapabilites shall not be \n present.\nNOTE 7: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. \n" }, + "changeAppInstanceStateOpConfig": { + "type": "object", + "description": null, + "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. \n" + }, + "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.\n" + } + } + }, + "terminateAppInstanceOpConfig": { + "type": "object", + "description": null, + "required": ["minGracefulTerminationTimeout"], + "properties": { + "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" + } + } + }, "SwImageDescriptor": { "type": "object", "required": ["id", "name", "version", "containerFormat", "swImage"], @@ -2196,7 +2240,7 @@ }, "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": "\"'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'\"\n" }, "_links": { "$ref": "#/components/schemas/AppPkgInfo.links" diff --git a/MEC010-2_AppPkgMgmt.yaml b/MEC010-2_AppPkgMgmt.yaml index 9339b5b..8e89817 100644 --- a/MEC010-2_AppPkgMgmt.yaml +++ b/MEC010-2_AppPkgMgmt.yaml @@ -1057,7 +1057,7 @@ components: description: Describes traffic rules the MEC application requires. changeAppInstanceStateOpConfig: type: string - description: NFV + $ref: '#/components/schemas/changeAppInstanceStateOpConfig' mecVersion: type: array items: @@ -1070,7 +1070,7 @@ components: 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: type: string - description: NFV + $ref: '#/components/schemas/terminateAppInstanceOpConfig' transportDependencies: type: object items: @@ -1101,6 +1101,54 @@ components: present. NOTE 7: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. + changeAppInstanceStateOpConfig: + type: object + description: + 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. + + terminateAppInstanceOpConfig: + type: object + description: + required: + - minGracefulTerminationTimeout + properties: + 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. + 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. + SwImageDescriptor: type: object required: @@ -1696,7 +1744,10 @@ components: $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: > + "'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'" _links: $ref: '#/components/schemas/AppPkgInfo.links' description: | -- GitLab From 81991a9adb40449e4de272b11633df37c4d7a25d Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Fri, 26 May 2023 16:49:33 +0500 Subject: [PATCH 21/50] fix minor issues --- MEC010-2_AppPkgMgmt.json | 2 ++ MEC010-2_AppPkgMgmt.yaml | 4 ++++ definitions/MEC010p2_definitions.json | 2 +- definitions/MEC010p2_definitions.yaml | 2 +- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/MEC010-2_AppPkgMgmt.json b/MEC010-2_AppPkgMgmt.json index fec8587..94938f6 100644 --- a/MEC010-2_AppPkgMgmt.json +++ b/MEC010-2_AppPkgMgmt.json @@ -1522,6 +1522,7 @@ "description": null, "required": ["minGracefulStopTimeout"], "properties": { + "description": "This information element defines attributes that affect the invocation of the OperateVnf operation. \n", "minGracefulStopTimeout": { "type": "number", "description": "Minimum timeout value for graceful stop of a VNF instance." @@ -1544,6 +1545,7 @@ "description": null, "required": ["minGracefulTerminationTimeout"], "properties": { + "description": "This information element defines attributes that affect the invocation of the TerminateVnf operation.\n", "minGracefulTerminationTimeout": { "type": "number", "description": "Minimum timeout value for graceful stop of a VNF instance." diff --git a/MEC010-2_AppPkgMgmt.yaml b/MEC010-2_AppPkgMgmt.yaml index 8e89817..059bce0 100644 --- a/MEC010-2_AppPkgMgmt.yaml +++ b/MEC010-2_AppPkgMgmt.yaml @@ -1107,6 +1107,8 @@ components: required: - minGracefulStopTimeout properties: + description: > + This information element defines attributes that affect the invocation of the OperateVnf operation. minGracefulStopTimeout: type: number description: Minimum timeout value for graceful stop of a VNF instance. @@ -1131,6 +1133,8 @@ components: required: - minGracefulTerminationTimeout properties: + description: > + This information element defines attributes that affect the invocation of the TerminateVnf operation. minGracefulTerminationTimeout: type: number description: Minimum timeout value for graceful stop of a VNF instance. diff --git a/definitions/MEC010p2_definitions.json b/definitions/MEC010p2_definitions.json index 5acd33f..8cb4734 100644 --- a/definitions/MEC010p2_definitions.json +++ b/definitions/MEC010p2_definitions.json @@ -186,7 +186,7 @@ "type": "array", "minItems": 0, "items": { - "type": null + "type": "string" } } } diff --git a/definitions/MEC010p2_definitions.yaml b/definitions/MEC010p2_definitions.yaml index 70ce0c6..9bab461 100644 --- a/definitions/MEC010p2_definitions.yaml +++ b/definitions/MEC010p2_definitions.yaml @@ -158,7 +158,7 @@ type: array minItems: 0 items: - type: + type: string OAuth2Info: description: > -- GitLab From 995ad39cbbb6a981eb7bd19f4b49e781a4886526 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Fri, 26 May 2023 16:52:05 +0500 Subject: [PATCH 22/50] fix minor issues --- MEC010-2_AppPkgMgmt.json | 8 +++----- MEC010-2_AppPkgMgmt.yaml | 10 ++++------ 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/MEC010-2_AppPkgMgmt.json b/MEC010-2_AppPkgMgmt.json index 94938f6..6c553a4 100644 --- a/MEC010-2_AppPkgMgmt.json +++ b/MEC010-2_AppPkgMgmt.json @@ -1519,10 +1519,9 @@ }, "changeAppInstanceStateOpConfig": { "type": "object", - "description": null, + "description": "This information element defines attributes that affect the invocation of the OperateVnf operation.\n", "required": ["minGracefulStopTimeout"], "properties": { - "description": "This information element defines attributes that affect the invocation of the OperateVnf operation. \n", "minGracefulStopTimeout": { "type": "number", "description": "Minimum timeout value for graceful stop of a VNF instance." @@ -1542,10 +1541,9 @@ }, "terminateAppInstanceOpConfig": { "type": "object", - "description": null, + "description": "This information element defines attributes that affect the invocation of the TerminateVnf operation.\n", "required": ["minGracefulTerminationTimeout"], "properties": { - "description": "This information element defines attributes that affect the invocation of the TerminateVnf operation.\n", "minGracefulTerminationTimeout": { "type": "number", "description": "Minimum timeout value for graceful stop of a VNF instance." @@ -2707,4 +2705,4 @@ } }, "security": [{}] -} \ No newline at end of file +} diff --git a/MEC010-2_AppPkgMgmt.yaml b/MEC010-2_AppPkgMgmt.yaml index 059bce0..56f1251 100644 --- a/MEC010-2_AppPkgMgmt.yaml +++ b/MEC010-2_AppPkgMgmt.yaml @@ -1103,12 +1103,11 @@ components: changeAppInstanceStateOpConfig: type: object - description: + description: > + This information element defines attributes that affect the invocation of the OperateVnf operation. required: - minGracefulStopTimeout properties: - description: > - This information element defines attributes that affect the invocation of the OperateVnf operation. minGracefulStopTimeout: type: number description: Minimum timeout value for graceful stop of a VNF instance. @@ -1129,12 +1128,11 @@ components: terminateAppInstanceOpConfig: type: object - description: + description: > + This information element defines attributes that affect the invocation of the TerminateVnf operation. required: - minGracefulTerminationTimeout properties: - description: > - This information element defines attributes that affect the invocation of the TerminateVnf operation. minGracefulTerminationTimeout: type: number description: Minimum timeout value for graceful stop of a VNF instance. -- GitLab From 7ad5f4df05679e46be102fdd614e0fe6cce80d9f Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Fri, 26 May 2023 17:51:12 +0500 Subject: [PATCH 23/50] fix enum issue in definitions file --- definitions/MEC010p2_definitions.json | 5 +++-- definitions/MEC010p2_definitions.yaml | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/definitions/MEC010p2_definitions.json b/definitions/MEC010p2_definitions.json index 8cb4734..3976377 100644 --- a/definitions/MEC010p2_definitions.json +++ b/definitions/MEC010p2_definitions.json @@ -197,9 +197,10 @@ "properties": { "grantTypes": { "type": "array", - "minItems": 1, + "minItems": 0, "items": { - "type": "string" + "type": "string", + "enum": ["SEE_DESCRIPTION"] }, "description": "\"List of supported OAuth 2.0 grant types.\\nEach entry shall be one of the following permitted values:\\nOAUTH2_AUTHORIZATION_CODE (Authorization code grant type)\\nOAUTH2_IMPLICIT_GRANT\\n \\t(Implicit grant type)\\nOAUTH2_RESOURCE_OWNER\\n\\t(Resource owner password credentials grant type) \\nOAUTH2_CLIENT_CREDENTIALS\\n\\t(Client credentials grant type)\\nOnly the value \\\"OAUTH2_CLIENT_CREDENTIALS\\\" is supported in the present document. \"\n", "enum": ["SEE_DESCRIPTION"] diff --git a/definitions/MEC010p2_definitions.yaml b/definitions/MEC010p2_definitions.yaml index 9bab461..3550fc1 100644 --- a/definitions/MEC010p2_definitions.yaml +++ b/definitions/MEC010p2_definitions.yaml @@ -168,9 +168,11 @@ properties: grantTypes: type: array - minItems: 1 + minItems: 0 items: type: string + enum: + - SEE_DESCRIPTION description: > "List of supported OAuth 2.0 grant types.\nEach entry shall be one of the following permitted values:\nOAUTH2_AUTHORIZATION_CODE (Authorization code grant type)\nOAUTH2_IMPLICIT_GRANT\n -- GitLab From 69d994d7dbf510ed14e7b3dac5432022c0b6b005 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Fri, 26 May 2023 17:52:49 +0500 Subject: [PATCH 24/50] fix enum issue in definitions file --- definitions/MEC010p2_definitions.json | 3 +-- definitions/MEC010p2_definitions.yaml | 2 -- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/definitions/MEC010p2_definitions.json b/definitions/MEC010p2_definitions.json index 3976377..4c1c677 100644 --- a/definitions/MEC010p2_definitions.json +++ b/definitions/MEC010p2_definitions.json @@ -202,8 +202,7 @@ "type": "string", "enum": ["SEE_DESCRIPTION"] }, - "description": "\"List of supported OAuth 2.0 grant types.\\nEach entry shall be one of the following permitted values:\\nOAUTH2_AUTHORIZATION_CODE (Authorization code grant type)\\nOAUTH2_IMPLICIT_GRANT\\n \\t(Implicit grant type)\\nOAUTH2_RESOURCE_OWNER\\n\\t(Resource owner password credentials grant type) \\nOAUTH2_CLIENT_CREDENTIALS\\n\\t(Client credentials grant type)\\nOnly the value \\\"OAUTH2_CLIENT_CREDENTIALS\\\" is supported in the present document. \"\n", - "enum": ["SEE_DESCRIPTION"] + "description": "\"List of supported OAuth 2.0 grant types.\\nEach entry shall be one of the following permitted values:\\nOAUTH2_AUTHORIZATION_CODE (Authorization code grant type)\\nOAUTH2_IMPLICIT_GRANT\\n \\t(Implicit grant type)\\nOAUTH2_RESOURCE_OWNER\\n\\t(Resource owner password credentials grant type) \\nOAUTH2_CLIENT_CREDENTIALS\\n\\t(Client credentials grant type)\\nOnly the value \\\"OAUTH2_CLIENT_CREDENTIALS\\\" is supported in the present document. \"\n" }, "tokenEndpoint": { "description": "The token endpoint. Shall be present unless the grant type is OAUTH2_IMPLICIT_GRANT.", diff --git a/definitions/MEC010p2_definitions.yaml b/definitions/MEC010p2_definitions.yaml index 3550fc1..33a8445 100644 --- a/definitions/MEC010p2_definitions.yaml +++ b/definitions/MEC010p2_definitions.yaml @@ -179,8 +179,6 @@ \t(Implicit grant type)\nOAUTH2_RESOURCE_OWNER\n\t(Resource owner password credentials grant type) \nOAUTH2_CLIENT_CREDENTIALS\n\t(Client credentials grant type)\nOnly the value \"OAUTH2_CLIENT_CREDENTIALS\" is supported in the present document. " - enum: - - SEE_DESCRIPTION tokenEndpoint: description: The token endpoint. Shall be present unless the grant type is OAUTH2_IMPLICIT_GRANT. type: string -- GitLab From 3e677c5263a19e68aef787a3cf9575def36c6e10 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Tue, 13 Jun 2023 16:35:28 +0500 Subject: [PATCH 25/50] fix minor issues in definitions --- definitions/MEC010p2_definitions.json | 13 ++++++++++--- definitions/MEC010p2_definitions.yaml | 22 +++++++++++++++++----- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/definitions/MEC010p2_definitions.json b/definitions/MEC010p2_definitions.json index 4c1c677..e3e8a9b 100644 --- a/definitions/MEC010p2_definitions.json +++ b/definitions/MEC010p2_definitions.json @@ -133,7 +133,7 @@ "serializers": { "type": "array", "items": { - "type": "string" + "$ref": "#/definitions/SerializerType" }, "description": "Information about the serializers in this transport binding, as defined in the SerializerTypes type in ETSI GS MEC 011 [i.4]. Support for at least one of the entries is required in conjunction with the transport." }, @@ -142,6 +142,13 @@ } } }, + "SerializerType": { + "title": "SerializerType", + "enum": ["JSON", "XML", "PROTOBUF3"], + "type": "string", + "description": "The enumeration SerializerType represents types of serializers. This enumeration shall be extensible.\nNOTE: The enumeration values above shall represent the serializers as defined by the referenced specifications. \n", + "example": ["JSON"] + }, "TransportDescriptor": { "title": "TransportDescriptor", "required": ["name", "protocol", "security", "type", "version"], @@ -170,7 +177,7 @@ "description": "The version of the protocol used." }, "implSpecificInfo": { - "type": "object", + "type": "string", "description": "Additional implementation specific details of the transport." } } @@ -249,7 +256,7 @@ "serializers": { "type": "array", "items": { - "type": "string" + "$ref": "#/definitions/SerializerType" }, "description": "'Information about the serializers in this binding, as defined in the SerializerTypes type in ETSI GS MEC 011 '" } diff --git a/definitions/MEC010p2_definitions.yaml b/definitions/MEC010p2_definitions.yaml index 33a8445..f76c07b 100644 --- a/definitions/MEC010p2_definitions.yaml +++ b/definitions/MEC010p2_definitions.yaml @@ -108,11 +108,24 @@ serializers: type: array items: - type: string + $ref: '#/definitions/SerializerType' description: Information about the serializers in this transport binding, as defined in the SerializerTypes type in ETSI GS MEC 011 [i.4]. Support for at least one of the entries is required in conjunction with the transport. transport: $ref: '#/definitions/TransportDescriptor' + SerializerType: + title: SerializerType + enum: + - JSON + - XML + - PROTOBUF3 + type: string + description: | + The enumeration SerializerType represents types of serializers. This enumeration shall be extensible. + NOTE: The enumeration values above shall represent the serializers as defined by the referenced specifications. + example: + - JSON + TransportDescriptor: title: TransportDescriptor required: @@ -140,7 +153,7 @@ type: string description: The version of the protocol used. implSpecificInfo: - type: object + type: string description: Additional implementation specific details of the transport. SecurityInfo: @@ -220,7 +233,7 @@ serializers: type: array items: - type: string + $ref: '#/definitions/SerializerType' description: "'Information about the serializers in this binding, as defined in the SerializerTypes type in ETSI GS MEC 011 '" description: "'Indicates transports and serialization formats supported made available to the service-consuming application. Defaults to REST + JSON if absent.'" @@ -510,5 +523,4 @@ type: string description: If it is per FLOW, the filter matches upstream (e.g. UE->EPC) packets and the downstream (e.g. EPC->UE) packets are handled by the same context. examples: - - FLOW - + - FLOW \ No newline at end of file -- GitLab From 012f1a6fe6a110b77d151007b3e9d1878b2d7f16 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Tue, 13 Jun 2023 16:35:54 +0500 Subject: [PATCH 26/50] fix minor issues in AppGrant API --- MEC010-2_AppGrant.json | 16 +++++++--------- MEC010-2_AppGrant.yaml | 14 ++++++++------ 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/MEC010-2_AppGrant.json b/MEC010-2_AppGrant.json index 66549aa..a6ef18f 100644 --- a/MEC010-2_AppGrant.json +++ b/MEC010-2_AppGrant.json @@ -15,7 +15,7 @@ } }, "externalDocs": { - "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v3.1.1", + "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", @@ -345,8 +345,8 @@ "description": "Information about external VLs to connect the application instance to. See note 3." }, "additionalParams": { - "type": "object", - "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'" + "$ref": "#/components/schemas/KeyValuePair", + "description": "MEPM, specific to the application and the LCM operation." }, "_links": { "description": "Links to resources related to this request.", @@ -474,11 +474,8 @@ "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": { - "type": "string", - "items": { - "$ref": "#/components/schemas/KeyValuePair" - }, - "description": "EPM, specific to the application and the LCM operation." + "$ref": "#/components/schemas/KeyValuePair", + "description": "MEPM, specific to the application and the LCM operation." }, "_links": { "$ref": "#/components/schemas/GrantRequest.links" @@ -526,6 +523,7 @@ "description": "NOTE 1: At least one of \"macAddress\" or \"ipAddresses\" shall be present.\nNOTE 2: Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n" }, "KeyValuePair": { + "description": "This data type represents a list of key-value pairs. The order of the pairs in the list is not\nsignificant. In JSON, a set of key-value pairs is represented as an object. It shall comply with\nthe provisions defined in clause 4 of IETF RFC 8259.\n", "type": "object", "properties": { "key": { @@ -896,4 +894,4 @@ } }, "security": [{}] -} +} \ No newline at end of file diff --git a/MEC010-2_AppGrant.yaml b/MEC010-2_AppGrant.yaml index da6a437..4633f58 100644 --- a/MEC010-2_AppGrant.yaml +++ b/MEC010-2_AppGrant.yaml @@ -294,8 +294,8 @@ components: $ref: "#/components/schemas/ExtVirtualLinkData" description: Information about external VLs to connect the application instance to. See note 3. additionalParams: - type: object - 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'" + $ref: '#/components/schemas/KeyValuePair' + description: "MEPM, specific to the application and the LCM operation." _links: description: Links to resources related to this request. $ref: "#/components/schemas/Grant.links" @@ -422,10 +422,8 @@ components: $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: - type: string - items: - $ref: '#/components/schemas/KeyValuePair' - description: "EPM, specific to the application and the LCM operation." + $ref: '#/components/schemas/KeyValuePair' + description: "MEPM, specific to the application and the LCM operation." _links: $ref: "#/components/schemas/GrantRequest.links" description: | @@ -480,6 +478,10 @@ components: 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: object properties: key: -- GitLab From 3c748872850a7d6644077660d00fb75cf95dbedc Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Tue, 13 Jun 2023 16:36:23 +0500 Subject: [PATCH 27/50] fix minor issues in AppLcm API --- MEC010-2_AppLcm.json | 68 +++++++++++++++++--------------------------- 1 file changed, 26 insertions(+), 42 deletions(-) diff --git a/MEC010-2_AppLcm.json b/MEC010-2_AppLcm.json index 275cf26..5d5e1c1 100644 --- a/MEC010-2_AppLcm.json +++ b/MEC010-2_AppLcm.json @@ -1546,7 +1546,7 @@ "type": "array", "description": "Type of the LCM operation state represented by this application instance LCM operation occurrence.", "items": { - "$ref": "#/components/schemas/OperationStates" + "$ref": "#/components/schemas/OperationState" } }, "operationTypes": { @@ -1565,19 +1565,6 @@ "description": "Match particular notification types.", "examples": ["AppLcmOperationOccurrenceNotification"] }, - "OperationStates": { - "title": "OperationStates", - "enum": [ - "STARTING", - "PROCESSING", - "COMPLETED", - "FAILED", - "FAILED_TEMP" - ], - "type": "string", - "description": "'Type of the LCM operation state represented by this application instance LCM operation occurrence.'", - "examples": ["STARTING"] - }, "OperationTypes": { "title": "OperationTypes", "enum": ["INSTANTIATE", "OPERATE", "TERMINATE"], @@ -2660,12 +2647,9 @@ "extendedResourceRequests": { "type": "array", "items": { - "type": "object", - "description": "An array of key-value pairs of extended resources required by the container see note.\n", - "additionalProperties": { - "type": "string" - } - } + "$ref": "#/components/schemas/KeyValuePairs" + }, + "description": "An array of key-value pairs of extended resources required by the container see note." }, "cpuResourceLimit": { "type": "integer", @@ -2792,10 +2776,9 @@ "vduStorageRequirements": { "type": "array", "items": { - "type": "object", - "description": "An array of key-value pairs that articulate the storage deployment requirements." + "$ref": "#/components/schemas/KeyValuePairs" }, - "description": "Array of key-value pair requirements on the storage for the VDU." + "description": "An array of key-value pairs that articulate the storage deployment requirements." }, "rdmaEnabled": { "type": "boolean", @@ -2804,7 +2787,7 @@ "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." + "description": "References the software image to be loaded on the VirtualStorage resource created\nbased on this VirtualStorageDesc. Shall be absent when used for virtual disks. See note.\n" } } }, @@ -2934,7 +2917,8 @@ } } }, - "KeyValuePair": { + "KeyValuePairs": { + "description": "This data type represents a list of key-value pairs. The order of the pairs in the list is not\nsignificant. In JSON, a set of key-value pairs is represented as an object. It shall comply with\nthe provisions defined in clause 4 of IETF RFC 8259.\n", "type": "object", "properties": { "key": { @@ -2954,12 +2938,13 @@ "description": "Amount of virtual memory in MB." }, "virtualMemOversubscriptionPolicy": { - "description": "The memory core oversubscription policy in terms of virtual memory to physical memory on the platform." + "type": "string", + "description": "The memory core oversubscription policy in terms of virtual memory to physical memory\non the platform. The cardinality can be 0 during the allocation request, if no particular\nvalue is requested.\n" }, "vduMemRequirements": { "type": "array", "items": { - "$ref": "#/components/schemas/KeyValuePair" + "$ref": "#/components/schemas/KeyValuePairs" }, "description": "Array of key-value pair requirements on the memory for the VDU." }, @@ -2968,6 +2953,7 @@ "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." } } @@ -2995,13 +2981,11 @@ "vduCpuRequirements": { "type": "array", "items": { - "type": "object", - "description": "Array of key-value pair requirements on the Compute (CPU) for the VDU." - } + "$ref": "#/components/schemas/KeyValuePairs" + }, + "description": "Array of key-value pair requirements on the Compute (CPU) for the VDU." }, "virtualCpuPinning": { - "type": "object", - "description": "The virtual CPU pinning configuration for the virtualised compute resource. See clause 7.1.9.2.4.", "$ref": "#/components/schemas/VirtualCpuPinningData" } } @@ -3038,7 +3022,7 @@ } }, "area": { - "type": "object", + "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." } }, @@ -3067,7 +3051,7 @@ "type": "object", "properties": { "hostId": { - "type": "object", + "$ref": "#/components/schemas/KeyValuePairs", "description": "Deployment-specific information to identify a MEC host. See note." }, "hostName": { @@ -3075,7 +3059,7 @@ "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.\n" + "description": "NOTE: This information can be structured to cater for host identification schemes that are more \ncomplex than a simple identifier, e.g. when referring to the structure of an NFVI.\n" }, "OperateAppRequest": { "title": "OperateAppRequest", @@ -3183,20 +3167,20 @@ "type": "object", "properties": { "accessInfo": { - "type": "object", - "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'" + "$ref": "#/components/schemas/KeyValuePairs", + "description": "This data type represents a list of key-value pairs. The order of the pairs in the list is\nnot significant. In JSON, a set of key-value pairs is represented as an object. It shall comply\nwith the provisions defined in clause 4 of IETF RFC 8259.\n" }, "extra": { - "type": "object", - "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'" + "$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\nsignificant. In JSON, a set of key-value pairs is represented as an object. It shall comply\nwith the provisions defined in clause 4 of IETF RFC 8259.\n" }, "id": { "type": "string", "description": "The identifier of the VIM Connection. This identifier is managed by the MEO." }, "interfaceInfo": { - "type": "object", - "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'" + "$ref": "#/components/schemas/KeyValuePairs", + "description": "This data type represents a list of key-value pairs. The order of the pairs in the list is\nnot significant. In JSON, a set of key-value pairs is represented as an object. It shall\ncomply with the provisions defined in clause 4 of IETF RFC 8259.\n" }, "vimId": { "type": "string", @@ -3204,7 +3188,7 @@ }, "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." + "description": "Discriminator for the different types of the VIM information.The value of this attribute\ndetermines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type\nof the VIM.The set of permitted values is expected to change over time as new types or versions\nof VIMs become available.\n" } } }, -- GitLab From f4c064b92bf56c209551d480722c10c0104d7650 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Tue, 13 Jun 2023 16:37:04 +0500 Subject: [PATCH 28/50] fix minor issues in AppPkgMgmt API --- MEC010-2_AppPkgMgmt.json | 74 +++++++++++++----------- MEC010-2_AppPkgMgmt.yaml | 122 +++++++++++++++++++++++++++------------ 2 files changed, 123 insertions(+), 73 deletions(-) diff --git a/MEC010-2_AppPkgMgmt.json b/MEC010-2_AppPkgMgmt.json index 6c553a4..be2a995 100644 --- a/MEC010-2_AppPkgMgmt.json +++ b/MEC010-2_AppPkgMgmt.json @@ -1707,9 +1707,9 @@ "extendedResourceRequests": { "type": "array", "items": { - "type": "object", - "description": "An array of key-value pairs of extended resources required by the container see note." - } + "$ref": "#/components/schemas/KeyValuePairs" + }, + "description": "An array of key-value pairs of extended resources required by the container see note." }, "additionalProperties": { "type": "string", @@ -1844,9 +1844,9 @@ "vduCpuRequirements": { "type": "array", "items": { - "type": "object", - "description": "Array of key-value pair requirements on the Compute (CPU) for the VDU." - } + "$ref": "#/components/schemas/KeyValuePairs" + }, + "description": "Array of key-value pair requirements on the Compute (CPU) for the VDU." }, "virtualCpuPinning": { "$ref": "#/components/schemas/VirtualCpuPinningData" @@ -1864,10 +1864,9 @@ "vduStorageRequirements": { "type": "array", "items": { - "type": "object", - "description": "An array of key-value pairs that articulate the storage deployment requirements." + "$ref": "#/components/schemas/KeyValuePairs" }, - "description": "Array of key-value pair requirements on the storage for the VDU." + "description": "An array of key-value pairs that articulate the storage deployment requirements." }, "rdmaEnabled": { "type": "boolean", @@ -1979,12 +1978,13 @@ "description": "Amount of virtual memory in MB." }, "virtualMemOversubscriptionPolicy": { - "description": "The memory core oversubscription policy in terms of virtual memory to physical memory on the platform." + "type": "string", + "description": "The memory core oversubscription policy in terms of virtual memory to physical memory\non the platform. The cardinality can be 0 during the allocation request, if no particular\nvalue is requested.\n" }, "vduMemRequirements": { "type": "array", "items": { - "$ref": "#/components/schemas/KeyValuePair" + "$ref": "#/components/schemas/KeyValuePairs" }, "description": "Array of key-value pair requirements on the memory for the VDU." }, @@ -1993,6 +1993,7 @@ "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." } } @@ -2023,13 +2024,15 @@ }, "targetPerformanceParameters": { "type": "array", + "description": "Specifies specific attributes, dependent on the requested additional capability type.", "items": { - "$ref": "#/components/schemas/KeyValuePair" + "$ref": "#/components/schemas/KeyValuePairs" } } } }, - "KeyValuePair": { + "KeyValuePairs": { + "description": "This data type represents a list of key-value pairs. The order of the pairs in the list is not\nsignificant. In JSON, a set of key-value pairs is represented as an object. It shall comply with\nthe provisions defined in clause 4 of IETF RFC 8259.\n", "type": "object", "properties": { "key": { @@ -2063,8 +2066,8 @@ "title": "AppExternalCpd", "type": "object", "properties": { - "inherited_attributes": { - "type": "object", + "inheritedAttributes": { + "type": "string", "description": "All attributes inherited from Cpd. See note 2." }, "virtualNetworkInterfaceRequirements": { @@ -2082,7 +2085,7 @@ "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": "NOTE 1: An AppD conformant to the present document shall not specify \"virtualNetworkInterfaceRequirements\" in AppExternalCpd corresponding to primary container cluster network interfaces.\nNOTE 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 \n resources based on cpRole and trunkMode attributes might not be supported by all container technologies.\n" + "description": "The AppExternalCpd data type supports the specification of MEC application requirements related to external \nconnection point.\n\nNOTE 1: An AppD conformant to the present document shall not specify \"virtualNetworkInterfaceRequirements\"\nin AppExternalCpd corresponding to primary container cluster network interfaces.\n\nNOTE 2: For CPs exposed by MEC Applications realized only by one or set of OS containers and used by\nthe OS containers to connect to the primary container cluster external network, the ability to configure\nvirtualised resources based on cpRole and trunkMode attributes might not be supported by all container technologies.\n" }, "AdditionalServiceData": { "type": "object", @@ -2096,11 +2099,11 @@ "minItems": 1 }, "serviceData": { - "type": "object", + "type": "string", "description": "Service matching information exposed by the VirtualCp. See note." } }, - "description": "NOTE: This attribute shall only be present if additional information is needed to identify the service termination within \n the VNF, such as for example a url path information in an HTTP request required to allow a single VirtualCp IP \n address to be used for several HTTP based services that use the same portnumber. \n" + "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" }, "ServicePortData": { "type": "object", @@ -2250,11 +2253,11 @@ }, "AppPkgInfoModifications": { "title": "AppPkgInfoModifications", - "required": ["operationState"], + "required": ["OperationalState"], "type": "object", "properties": { - "operationState": { - "$ref": "#/components/schemas/OperationState" + "OperationalState": { + "$ref": "#/components/schemas/OperationalState2" } }, "description": "'The data type represents the operational state for an application package resource'" @@ -2263,7 +2266,7 @@ "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.", + "description": "Operational state of the onboarded application package:\nENABLED: the application package can be used for instantiation of new application instances.\nDISABLED: the application package cannot be used for further application instantiation requests.\n", "examples": ["ENABLED"] }, "OnboardingState": { @@ -2508,9 +2511,7 @@ "description": "Match the version of the application descriptor." }, "operationalState": { - "type": "string", - "description": "Match particular operational state of the application package. May be present if the \"subscriptionType\" attribute contains the value \"AppPackageChangeSubscription\", and shall be absent otherwise.", - "enum": ["ENABLED", "DISABLED"] + "$ref": "#/components/schemas/OperationalState3" }, "usageState": { "type": "string", @@ -2567,12 +2568,6 @@ }, "description": "NOTE: It is for further study how to convey appPkgPath, and align with ETSI GS NFV-SOL 005 [i.7].\n" }, - "KeyValuePairs": { - "type": "object", - "additionalProperties": { - "type": "object" - } - }, "LinkType": { "title": "LinkType", "required": ["href"], @@ -2630,14 +2625,23 @@ }, "OperationalState": { "title": "OperationalState", - "enum": ["DISABLED", "ENABLED"], + "description": "Operational state of the application package:\n\nENABLED: the application package can be used for instantiation of new application instances.\nDISABLED: the application package cannot be used for further application instantiation requests.\n", "type": "string", + "enum": ["DISABLED", "ENABLED"], "examples": ["DISABLED"] }, - "OperationState": { - "title": "OperationState", + "OperationalState2": { + "title": "OperationalState", + "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.\n", + "type": "string", "enum": ["DISABLED", "ENABLED"], + "examples": ["ENABLED"] + }, + "OperationalState3": { + "title": "OperationalState", + "description": "Match particular operational state of the application package.\n\nENABLED: the application package can be used for instantiation of new application instances.\nDISABLED: the application package cannot be used for further application instantiation requests.\n\nMay be present if the \"subscriptionType\" attribute contains the value \"AppPackageChangeSubscription\",\nand shall be absent otherwise.\n", "type": "string", + "enum": ["ENABLED", "DISABLED"], "examples": ["DISABLED"] } }, @@ -2705,4 +2709,4 @@ } }, "security": [{}] -} +} \ No newline at end of file diff --git a/MEC010-2_AppPkgMgmt.yaml b/MEC010-2_AppPkgMgmt.yaml index 56f1251..1468241 100644 --- a/MEC010-2_AppPkgMgmt.yaml +++ b/MEC010-2_AppPkgMgmt.yaml @@ -1294,8 +1294,8 @@ components: extendedResourceRequests: type: array items: - type: object - description: An array of key-value pairs of extended resources required by the container see note. + $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. @@ -1405,8 +1405,8 @@ components: vduCpuRequirements: type: array items: - type: object - description: Array of key-value pair requirements on the Compute (CPU) for the VDU. + $ref: '#/components/schemas/KeyValuePairs' + description: Array of key-value pair requirements on the Compute (CPU) for the VDU. virtualCpuPinning: $ref: '#/components/schemas/VirtualCpuPinningData' @@ -1421,9 +1421,8 @@ components: vduStorageRequirements: type: array items: - type: object - description: An array of key-value pairs that articulate the storage deployment requirements. - description: Array of key-value pair requirements on the storage for the VDU. + $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. @@ -1524,16 +1523,21 @@ components: type: number description: Amount of virtual memory in MB. virtualMemOversubscriptionPolicy: - description: The memory core oversubscription policy in terms of virtual memory to physical memory on the platform. + 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: type: array items: - $ref: '#/components/schemas/KeyValuePair' + $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. RequestedAdditionalCapabilityData: @@ -1557,10 +1561,15 @@ 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/KeyValuePair' + $ref: '#/components/schemas/KeyValuePairs' - KeyValuePair: + 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. type: object properties: key: @@ -1588,12 +1597,13 @@ components: items: type: string format: not-specified + AppExternalCpd: title: AppExternalCpd type: object properties: - inherited_attributes: - type: object + inheritedAttributes: + type: string description: All attributes inherited from Cpd. See note 2. virtualNetworkInterfaceRequirements: type: array @@ -1606,9 +1616,15 @@ components: $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: | - 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. + 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. AdditionalServiceData: type: object @@ -1621,12 +1637,19 @@ components: $ref: '#/components/schemas/ServicePortData' minItems: 1 serviceData: - type: object + type: string description: Service matching information exposed by the VirtualCp. See note. description: | - 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. + 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 @@ -1763,11 +1786,11 @@ components: AppPkgInfoModifications: title: AppPkgInfoModifications required: - - operationState + - OperationalState type: object properties: - operationState: - $ref: '#/components/schemas/OperationState' + OperationalState: + $ref: '#/components/schemas/OperationalState2' description: "'The data type represents the operational state for an application package resource'" AppPkg.OperationalState: @@ -1776,7 +1799,10 @@ components: - 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.' + 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 @@ -1999,11 +2025,7 @@ components: type: string description: Match the version of the application descriptor. operationalState: - type: string - description: Match particular operational state of the application package. May be present if the "subscriptionType" attribute contains the value "AppPackageChangeSubscription", and shall be absent otherwise. - enum: - - ENABLED - - DISABLED + $ref: '#/components/schemas/OperationalState3' 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. @@ -2057,11 +2079,6 @@ components: description: | NOTE: It is for further study how to convey appPkgPath, and align with ETSI GS NFV-SOL 005 [i.7]. - KeyValuePairs: - type: object - additionalProperties: - type: object - LinkType: title: LinkType required: @@ -2111,20 +2128,49 @@ components: 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 - type: string examples: - DISABLED - OperationState: - title: OperationState + + 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 + - DISABLED responses: '400': -- GitLab From 9a1995f179a0e8fe3113b4116cebef67d6f46b5e Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Tue, 13 Jun 2023 16:37:24 +0500 Subject: [PATCH 29/50] fix minor issues in AppPkgMgmt API yaml file --- MEC010-2_AppLcm.yaml | 98 +++++++++++++++++++++++--------------------- 1 file changed, 51 insertions(+), 47 deletions(-) diff --git a/MEC010-2_AppLcm.yaml b/MEC010-2_AppLcm.yaml index 862cd8b..b5c0049 100644 --- a/MEC010-2_AppLcm.yaml +++ b/MEC010-2_AppLcm.yaml @@ -1150,7 +1150,7 @@ components: type: array description: Type of the LCM operation state represented by this application instance LCM operation occurrence. items: - $ref: '#/components/schemas/OperationStates' + $ref: '#/components/schemas/OperationState' operationTypes: type: array description: Type of the LCM operation represented by this application instance LCM operation occurrence. @@ -1165,19 +1165,6 @@ components: examples: - AppLcmOperationOccurrenceNotification - OperationStates: - title: OperationStates - enum: - - STARTING - - PROCESSING - - COMPLETED - - FAILED - - FAILED_TEMP - type: string - description: "'Type of the LCM operation state represented by this application instance LCM operation occurrence.'" - examples: - - STARTING - OperationTypes: title: OperationTypes enum: @@ -2163,11 +2150,8 @@ components: extendedResourceRequests: type: array items: - type: object - description: | - An array of key-value pairs of extended resources required by the container see note. - additionalProperties: - type: string + $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). @@ -2270,16 +2254,17 @@ components: vduStorageRequirements: type: array items: - type: object - description: An array of key-value pairs that articulate the storage deployment requirements. - description: Array of key-value pair requirements on the storage for the VDU. + $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. + 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: type: object @@ -2395,7 +2380,11 @@ components: items: $ref: '#/components/schemas/KeyValuePair' - KeyValuePair: + 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. type: object properties: key: @@ -2406,22 +2395,27 @@ components: VirtualMemoryData: type: object required: - - virtualMemSize + - virtualMemSize properties: virtualMemSize: type: number description: Amount of virtual memory in MB. virtualMemOversubscriptionPolicy: - description: The memory core oversubscription policy in terms of virtual memory to physical memory on the platform. + 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: type: array items: - $ref: '#/components/schemas/KeyValuePair' + $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: @@ -2444,11 +2438,9 @@ components: vduCpuRequirements: type: array items: - type: object - description: Array of key-value pair requirements on the Compute (CPU) for the VDU. + $ref: '#/components/schemas/KeyValuePairs' + description: Array of key-value pair requirements on the Compute (CPU) for the VDU. virtualCpuPinning: - type: object - description: The virtual CPU pinning configuration for the virtualised compute resource. See clause 7.1.9.2.4. $ref: '#/components/schemas/VirtualCpuPinningData' VirtualCpuPinningData: @@ -2478,7 +2470,7 @@ components: items: $ref: '#/components/schemas/CivicAddressElement' area: - type: object + 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: | @@ -2511,13 +2503,14 @@ components: type: object properties: hostId: - type: object + $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. + 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 @@ -2633,28 +2626,39 @@ components: type: object properties: accessInfo: - type: object - 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'" + $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: - type: object - 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'" + $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: - type: object - 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'" + $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. + 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. + 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 -- GitLab From daac48cf49d52105e3ea79e328f3a1ac42a1e199 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Tue, 13 Jun 2023 16:38:32 +0500 Subject: [PATCH 30/50] add README file for proto3 generation --- proto3-gen.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 proto3-gen.md diff --git a/proto3-gen.md b/proto3-gen.md new file mode 100644 index 0000000..e69de29 -- GitLab From 397309159b332f26c7af87f3d972de7149b38ac7 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Tue, 13 Jun 2023 16:39:16 +0500 Subject: [PATCH 31/50] add proto3 descriptors for AppGrant API --- .../proto3/.openapi-generator-ignore | 23 +++++++ .../proto3/.openapi-generator/FILES | 30 +++++++++ .../proto3/.openapi-generator/VERSION | 1 + AppGrantProto3/proto3/README.md | 32 +++++++++ .../proto3/models/address_range.proto | 26 +++++++ .../proto3/models/app_ext_cp_config.proto | 30 +++++++++ .../proto3/models/app_ext_cp_data.proto | 27 ++++++++ .../proto3/models/cp_protocol_data.proto | 27 ++++++++ .../proto3/models/ext_link_port_data.proto | 26 +++++++ .../proto3/models/ext_virtual_link_data.proto | 37 ++++++++++ AppGrantProto3/proto3/models/grant.proto | 67 +++++++++++++++++++ AppGrantProto3/proto3/models/grant_info.proto | 39 +++++++++++ .../proto3/models/grant_links.proto | 25 +++++++ .../proto3/models/grant_request.proto | 51 ++++++++++++++ .../proto3/models/grant_request_links.proto | 25 +++++++ .../models/grant_request_operation.proto | 22 ++++++ AppGrantProto3/proto3/models/ip_address.proto | 35 ++++++++++ .../proto3/models/ip_address_type.proto | 21 ++++++ .../ip_over_ethernet_address_data.proto | 27 ++++++++ .../proto3/models/key_value_pair.proto | 24 +++++++ AppGrantProto3/proto3/models/link_type.proto | 23 +++++++ .../proto3/models/problem_details.proto | 35 ++++++++++ AppGrantProto3/proto3/models/resource.proto | 26 +++++++ .../proto3/models/resource_definition.proto | 35 ++++++++++ .../models/resource_definition_type.proto | 23 +++++++ .../proto3/models/resource_handle.proto | 29 ++++++++ AppGrantProto3/proto3/models/vim_assets.proto | 23 +++++++ .../proto3/models/vim_connection_info.proto | 39 +++++++++++ .../proto3/models/vim_software_image.proto | 29 ++++++++ .../proto3/models/zone_group_info.proto | 23 +++++++ AppGrantProto3/proto3/models/zone_info.proto | 29 ++++++++ .../proto3/services/granting_service.proto | 38 +++++++++++ 32 files changed, 947 insertions(+) create mode 100644 AppGrantProto3/proto3/.openapi-generator-ignore create mode 100644 AppGrantProto3/proto3/.openapi-generator/FILES create mode 100644 AppGrantProto3/proto3/.openapi-generator/VERSION create mode 100644 AppGrantProto3/proto3/README.md create mode 100644 AppGrantProto3/proto3/models/address_range.proto create mode 100644 AppGrantProto3/proto3/models/app_ext_cp_config.proto create mode 100644 AppGrantProto3/proto3/models/app_ext_cp_data.proto create mode 100644 AppGrantProto3/proto3/models/cp_protocol_data.proto create mode 100644 AppGrantProto3/proto3/models/ext_link_port_data.proto create mode 100644 AppGrantProto3/proto3/models/ext_virtual_link_data.proto create mode 100644 AppGrantProto3/proto3/models/grant.proto create mode 100644 AppGrantProto3/proto3/models/grant_info.proto create mode 100644 AppGrantProto3/proto3/models/grant_links.proto create mode 100644 AppGrantProto3/proto3/models/grant_request.proto create mode 100644 AppGrantProto3/proto3/models/grant_request_links.proto create mode 100644 AppGrantProto3/proto3/models/grant_request_operation.proto create mode 100644 AppGrantProto3/proto3/models/ip_address.proto create mode 100644 AppGrantProto3/proto3/models/ip_address_type.proto create mode 100644 AppGrantProto3/proto3/models/ip_over_ethernet_address_data.proto create mode 100644 AppGrantProto3/proto3/models/key_value_pair.proto create mode 100644 AppGrantProto3/proto3/models/link_type.proto create mode 100644 AppGrantProto3/proto3/models/problem_details.proto create mode 100644 AppGrantProto3/proto3/models/resource.proto create mode 100644 AppGrantProto3/proto3/models/resource_definition.proto create mode 100644 AppGrantProto3/proto3/models/resource_definition_type.proto create mode 100644 AppGrantProto3/proto3/models/resource_handle.proto create mode 100644 AppGrantProto3/proto3/models/vim_assets.proto create mode 100644 AppGrantProto3/proto3/models/vim_connection_info.proto create mode 100644 AppGrantProto3/proto3/models/vim_software_image.proto create mode 100644 AppGrantProto3/proto3/models/zone_group_info.proto create mode 100644 AppGrantProto3/proto3/models/zone_info.proto create mode 100644 AppGrantProto3/proto3/services/granting_service.proto diff --git a/AppGrantProto3/proto3/.openapi-generator-ignore b/AppGrantProto3/proto3/.openapi-generator-ignore new file mode 100644 index 0000000..7484ee5 --- /dev/null +++ b/AppGrantProto3/proto3/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/AppGrantProto3/proto3/.openapi-generator/FILES b/AppGrantProto3/proto3/.openapi-generator/FILES new file mode 100644 index 0000000..f5ee932 --- /dev/null +++ b/AppGrantProto3/proto3/.openapi-generator/FILES @@ -0,0 +1,30 @@ +.openapi-generator-ignore +README.md +models/address_range.proto +models/app_ext_cp_config.proto +models/app_ext_cp_data.proto +models/cp_protocol_data.proto +models/ext_link_port_data.proto +models/ext_virtual_link_data.proto +models/grant.proto +models/grant_info.proto +models/grant_links.proto +models/grant_request.proto +models/grant_request_links.proto +models/grant_request_operation.proto +models/ip_address.proto +models/ip_address_type.proto +models/ip_over_ethernet_address_data.proto +models/key_value_pair.proto +models/link_type.proto +models/problem_details.proto +models/resource.proto +models/resource_definition.proto +models/resource_definition_type.proto +models/resource_handle.proto +models/vim_assets.proto +models/vim_connection_info.proto +models/vim_software_image.proto +models/zone_group_info.proto +models/zone_info.proto +services/granting_service.proto diff --git a/AppGrantProto3/proto3/.openapi-generator/VERSION b/AppGrantProto3/proto3/.openapi-generator/VERSION new file mode 100644 index 0000000..1e20ec3 --- /dev/null +++ b/AppGrantProto3/proto3/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.4.0 \ No newline at end of file diff --git a/AppGrantProto3/proto3/README.md b/AppGrantProto3/proto3/README.md new file mode 100644 index 0000000..4cae1e5 --- /dev/null +++ b/AppGrantProto3/proto3/README.md @@ -0,0 +1,32 @@ +# gPRC for mec0102 + +ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + +## Overview +These files were generated by the [OpenAPI Generator](https://openapi-generator.tech) project. + +- API version: 3.1.1 +- Package version: +- Build package: org.openapitools.codegen.languages.ProtobufSchemaCodegen +For more information, please visit [https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api](https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api) + +## Usage + +Below are some usage examples for Go and Ruby. For other languages, please refer to https://grpc.io/docs/quickstart/. + +### Go +``` +# assuming `protoc-gen-go` has been installed with `go get -u github.com/golang/protobuf/protoc-gen-go` +mkdir /var/tmp/go/ +protoc --go_out=/var/tmp/go/ services/* +protoc --go_out=/var/tmp/go/ models/* +``` + +### Ruby +``` +# assuming `grpc_tools_ruby_protoc` has been installed via `gem install grpc-tools` +RUBY_OUTPUT_DIR="/var/tmp/ruby/mec0102" +mkdir $RUBY_OUTPUT_DIR +grpc_tools_ruby_protoc --ruby_out=$RUBY_OUTPUT_DIR --grpc_out=$RUBY_OUTPUT_DIR/lib services/* +grpc_tools_ruby_protoc --ruby_out=$RUBY_OUTPUT_DIR --grpc_out=$RUBY_OUTPUT_DIR/lib models/* +``` diff --git a/AppGrantProto3/proto3/models/address_range.proto b/AppGrantProto3/proto3/models/address_range.proto new file mode 100644 index 0000000..053e8d4 --- /dev/null +++ b/AppGrantProto3/proto3/models/address_range.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message AddressRange { + + // Lowest IP address belonging to the range. + string minAddress = 186110657; + + // Highest IP address belonging to the range. + string maxAddress = 26244592; + +} diff --git a/AppGrantProto3/proto3/models/app_ext_cp_config.proto b/AppGrantProto3/proto3/models/app_ext_cp_config.proto new file mode 100644 index 0000000..894f781 --- /dev/null +++ b/AppGrantProto3/proto3/models/app_ext_cp_config.proto @@ -0,0 +1,30 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/cp_protocol_data.proto"; + +message AppExtCpConfig { + + // 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. + string cpInstanceId = 363409188; + + // Parameters for configuring the network protocols on the link port that connects the CP to a VL. See note. + repeated CpProtocolData cpProtocolData = 445314194; + + // Identifier of a pre-configured link port to which the external CP will be associated. See note. + string linkPortId = 215924247; + +} diff --git a/AppGrantProto3/proto3/models/app_ext_cp_data.proto b/AppGrantProto3/proto3/models/app_ext_cp_data.proto new file mode 100644 index 0000000..21bd886 --- /dev/null +++ b/AppGrantProto3/proto3/models/app_ext_cp_data.proto @@ -0,0 +1,27 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_ext_cp_config.proto"; + +message AppExtCpData { + + // List of instance data that need to be configured on the CP instances created from the respective CPD. + repeated AppExtCpConfig cpConfig = 378358258; + + // The identifier of the CPD in the AppD. + string cpdId = 94863634; + +} diff --git a/AppGrantProto3/proto3/models/cp_protocol_data.proto b/AppGrantProto3/proto3/models/cp_protocol_data.proto new file mode 100644 index 0000000..26f681c --- /dev/null +++ b/AppGrantProto3/proto3/models/cp_protocol_data.proto @@ -0,0 +1,27 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/ip_over_ethernet_address_data.proto"; + +message CpProtocolData { + + // 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. + repeated IpOverEthernetAddressData ipOverEthernet = 356170642; + + // Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET. See note. + repeated IpOverEthernetAddressData layerProtocol = 436659977; + +} diff --git a/AppGrantProto3/proto3/models/ext_link_port_data.proto b/AppGrantProto3/proto3/models/ext_link_port_data.proto new file mode 100644 index 0000000..0e2f0bc --- /dev/null +++ b/AppGrantProto3/proto3/models/ext_link_port_data.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/resource_handle.proto"; + +message ExtLinkPortData { + + // Identifier of this link port as provided by the entity that has created the link port. + string id = 3355; + + ResourceHandle resourceHandle = 372810794; + +} diff --git a/AppGrantProto3/proto3/models/ext_virtual_link_data.proto b/AppGrantProto3/proto3/models/ext_virtual_link_data.proto new file mode 100644 index 0000000..074b58e --- /dev/null +++ b/AppGrantProto3/proto3/models/ext_virtual_link_data.proto @@ -0,0 +1,37 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_ext_cp_data.proto"; +import public "models/ext_link_port_data.proto"; + +message ExtVirtualLinkData { + + // External CPs of the application instance to be connected to this external VL. + repeated AppExtCpData extCps = 215334973; + + // 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. + repeated ExtLinkPortData extLinkPorts = 77779180; + + // The identifier of the external VL instance. The identifier is assigned by the MEC entity that manages this VL instance. + string id = 3355; + + // The identifier of the resource in the scope of the VIM. + string resourceId = 271908409; + + // Identifier of the VIM connection to manage this resource. + string vimConnectionId = 424676819; + +} diff --git a/AppGrantProto3/proto3/models/grant.proto b/AppGrantProto3/proto3/models/grant.proto new file mode 100644 index 0000000..f364a81 --- /dev/null +++ b/AppGrantProto3/proto3/models/grant.proto @@ -0,0 +1,67 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/ext_virtual_link_data.proto"; +import public "models/grant_info.proto"; +import public "models/grant_links.proto"; +import public "models/key_value_pair.proto"; +import public "models/vim_assets.proto"; +import public "models/vim_connection_info.proto"; +import public "models/zone_group_info.proto"; +import public "models/zone_info.proto"; + +message Grant { + + // Identifier of the Grant. + string id = 3355; + + // Identifier of the application instance which this Grant is related to. + string appInstanceId = 301879922; + + // The identifier of the application lifecycle management operation occurrence associated to the Grant. + string appLcmOpOccId = 256077684; + + // 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. + repeated VimConnectionInfo vimConnections = 13699291; + + // Identifies resource zones where the resources are approved to be allocated by the MEPM. + repeated ZoneInfo zones = 116085319; + + // Information about groups of resource zones that are related and that the MEO has chosen to fulfil a zoneGroup constraint in the Grant request. + repeated ZoneGroupInfo zoneGroups = 169510754; + + // List of resources that are approved to be added, with one entry per resource. + repeated GrantInfo addResources = 510358911; + + // List of resources that are approved to be temporarily instantiated during the runtime of the lifecycle operation, with one entry per resource + repeated GrantInfo tempResources = 53848244; + + // List of resources that are approved to be removed, with one entry per resource. + repeated GrantInfo removeResources = 128530945; + + // List of resources that are approved to be modified, with one entry per resource + repeated GrantInfo updateResources = 240683173; + + VimAssets vimAssets = 295490499; + + // Information about external VLs to connect the application instance to. See note 3. + repeated ExtVirtualLinkData extVirtualLinks = 132752433; + + KeyValuePair additionalParams = 191489165; + + GrantLinks links = 102977465; + +} diff --git a/AppGrantProto3/proto3/models/grant_info.proto b/AppGrantProto3/proto3/models/grant_info.proto new file mode 100644 index 0000000..85d529d --- /dev/null +++ b/AppGrantProto3/proto3/models/grant_info.proto @@ -0,0 +1,39 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pair.proto"; + +message GrantInfo { + + // Identifier of the related \"ResourceDefinition\" structure from the related \"GrantRequest\" structure. + string resourceDefinitionId = 254585085; + + // 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. + string resourceGroupId = 391521293; + + // 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. + string vimConnectionId = 424676819; + + // 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. + string zoneId = 159452698; + + // 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. + string containerNamespace = 498357800; + + // \"'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'\" + repeated KeyValuePair mcioConstraints = 392502439; + +} diff --git a/AppGrantProto3/proto3/models/grant_links.proto b/AppGrantProto3/proto3/models/grant_links.proto new file mode 100644 index 0000000..272f374 --- /dev/null +++ b/AppGrantProto3/proto3/models/grant_links.proto @@ -0,0 +1,25 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message GrantLinks { + + LinkType appLcmOpOcc = 321495162; + + LinkType appInstance = 229294552; + +} diff --git a/AppGrantProto3/proto3/models/grant_request.proto b/AppGrantProto3/proto3/models/grant_request.proto new file mode 100644 index 0000000..668a355 --- /dev/null +++ b/AppGrantProto3/proto3/models/grant_request.proto @@ -0,0 +1,51 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/grant_request_links.proto"; +import public "models/grant_request_operation.proto"; +import public "models/key_value_pair.proto"; +import public "models/resource_definition.proto"; + +message GrantRequest { + + // Identifier of application instance. + string appInstanceId = 301879922; + + // Identifier of application lifecycle management operation occurrence. + string appLcmOpOccId = 256077684; + + // Identifier of this MEC application descriptor. This attribute shall be globally unique. + string appDId = 337359172; + + GrantRequestOperation operation = 52090218; + + // 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. + repeated ResourceDefinition addResources = 510358911; + + // 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. + repeated ResourceDefinition tempResources = 53848244; + + // Removed by the LCM operation which is related to this grant request, with one entry per resource. + repeated ResourceDefinition removeResources = 128530945; + + // Provides the definitions of resources to be modified by the LCM operation which is related to this grant request, with one entry per resource. + repeated ResourceDefinition updateResources = 240683173; + + KeyValuePair additionalParams = 191489165; + + GrantRequestLinks links = 102977465; + +} diff --git a/AppGrantProto3/proto3/models/grant_request_links.proto b/AppGrantProto3/proto3/models/grant_request_links.proto new file mode 100644 index 0000000..c556989 --- /dev/null +++ b/AppGrantProto3/proto3/models/grant_request_links.proto @@ -0,0 +1,25 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message GrantRequestLinks { + + LinkType appLcmOpOcc = 321495162; + + LinkType appInstance = 229294552; + +} diff --git a/AppGrantProto3/proto3/models/grant_request_operation.proto b/AppGrantProto3/proto3/models/grant_request_operation.proto new file mode 100644 index 0000000..f102cbe --- /dev/null +++ b/AppGrantProto3/proto3/models/grant_request_operation.proto @@ -0,0 +1,22 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum GrantRequestOperation { + INSTANTIATE = 0; + OPERATE = 1; + TERMINATE = 2; +} diff --git a/AppGrantProto3/proto3/models/ip_address.proto b/AppGrantProto3/proto3/models/ip_address.proto new file mode 100644 index 0000000..d308ed1 --- /dev/null +++ b/AppGrantProto3/proto3/models/ip_address.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/address_range.proto"; +import public "models/ip_address_type.proto"; + +message IpAddress { + + IpAddressType type = 3575610; + + // Fixed addresses to assign (from the subnet defined by subnetId if provided). + repeated string fixedAddresses = 64935568; + + // Number of dynamic addresses to assign (from the subnet defined by subnetId if provided) + int32 numDynamicAddresses = 83479096; + + AddressRange addressRange = 251725225; + + // Subnet defined by the identifier of the subnet resource in the VIM. + string subnetId = 455546539; + +} diff --git a/AppGrantProto3/proto3/models/ip_address_type.proto b/AppGrantProto3/proto3/models/ip_address_type.proto new file mode 100644 index 0000000..9ba3e35 --- /dev/null +++ b/AppGrantProto3/proto3/models/ip_address_type.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum IpAddressType { + IPV4 = 0; + IPV6 = 1; +} diff --git a/AppGrantProto3/proto3/models/ip_over_ethernet_address_data.proto b/AppGrantProto3/proto3/models/ip_over_ethernet_address_data.proto new file mode 100644 index 0000000..cb3535b --- /dev/null +++ b/AppGrantProto3/proto3/models/ip_over_ethernet_address_data.proto @@ -0,0 +1,27 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/ip_address.proto"; + +message IpOverEthernetAddressData { + + // \"'MAC address. If this attribute is not present, it shall be chosen by the VIM. See note 1.'\" + string macAddress = 471320488; + + // 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. + repeated IpAddress ipAddresses = 41850312; + +} diff --git a/AppGrantProto3/proto3/models/key_value_pair.proto b/AppGrantProto3/proto3/models/key_value_pair.proto new file mode 100644 index 0000000..facb7e2 --- /dev/null +++ b/AppGrantProto3/proto3/models/key_value_pair.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message KeyValuePair { + + string key = 106079; + + string value = 111972721; + +} diff --git a/AppGrantProto3/proto3/models/link_type.proto b/AppGrantProto3/proto3/models/link_type.proto new file mode 100644 index 0000000..9f828ad --- /dev/null +++ b/AppGrantProto3/proto3/models/link_type.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message LinkType { + + // URI referring to a resource + string href = 3211051; + +} diff --git a/AppGrantProto3/proto3/models/problem_details.proto b/AppGrantProto3/proto3/models/problem_details.proto new file mode 100644 index 0000000..1f11e75 --- /dev/null +++ b/AppGrantProto3/proto3/models/problem_details.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ProblemDetails { + + // A human-readable explanation specific to this occurrence of the problem + string detail = 261482417; + + // A URI reference that identifies the specific occurrence of the problem + string instance = 18257046; + + // The HTTP status code for this occurrence of the problem + int32 status = 355610639; + + // A short, human-readable summary of the problem type + string title = 110371416; + + // A URI reference according to IETF RFC 3986 that identifies the problem type + string type = 3575610; + +} diff --git a/AppGrantProto3/proto3/models/resource.proto b/AppGrantProto3/proto3/models/resource.proto new file mode 100644 index 0000000..7bf2414 --- /dev/null +++ b/AppGrantProto3/proto3/models/resource.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/vim_connection_info.proto"; + +message Resource { + + VimConnectionInfo vimConnectionInfo = 92542822; + + // Identifier of the resource in the scope of the VIM. + string resourceId = 271908409; + +} diff --git a/AppGrantProto3/proto3/models/resource_definition.proto b/AppGrantProto3/proto3/models/resource_definition.proto new file mode 100644 index 0000000..4bd35c5 --- /dev/null +++ b/AppGrantProto3/proto3/models/resource_definition.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/resource.proto"; +import public "models/resource_definition_type.proto"; + +message ResourceDefinition { + + // Identifier of the related ResourceDefinition structure from the related GrantRequest structure. + string id = 3355; + + ResourceDefinitionType type = 3575610; + + // Reference to the related VDU in the AppD applicable to this resource. + string vduId = 112069378; + + // 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. + repeated string resourceTemplateId = 204208672; + + Resource resource = 341064690; + +} diff --git a/AppGrantProto3/proto3/models/resource_definition_type.proto b/AppGrantProto3/proto3/models/resource_definition_type.proto new file mode 100644 index 0000000..19e6c21 --- /dev/null +++ b/AppGrantProto3/proto3/models/resource_definition_type.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum ResourceDefinitionType { + COMPUTE = 0; + STORAGE = 1; + LINKPORT = 2; + OSCONTAINER_SEE_NOTE_ = 3; +} diff --git a/AppGrantProto3/proto3/models/resource_handle.proto b/AppGrantProto3/proto3/models/resource_handle.proto new file mode 100644 index 0000000..7073fa6 --- /dev/null +++ b/AppGrantProto3/proto3/models/resource_handle.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ResourceHandle { + + // Identifier of the resource in the scope of the VIM or the CISM or the resource provider. See note 2. + string resourceId = 271908409; + + // 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. + string vimConnectionId = 424676819; + + // Type of the resource in the scope of the VIM. See note 1. + string vimLevelResourceType = 60864239; + +} diff --git a/AppGrantProto3/proto3/models/vim_assets.proto b/AppGrantProto3/proto3/models/vim_assets.proto new file mode 100644 index 0000000..46b5e39 --- /dev/null +++ b/AppGrantProto3/proto3/models/vim_assets.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/vim_software_image.proto"; + +message VimAssets { + + repeated VimSoftwareImage softwareImages = 372852994; + +} diff --git a/AppGrantProto3/proto3/models/vim_connection_info.proto b/AppGrantProto3/proto3/models/vim_connection_info.proto new file mode 100644 index 0000000..8f848f1 --- /dev/null +++ b/AppGrantProto3/proto3/models/vim_connection_info.proto @@ -0,0 +1,39 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pair.proto"; + +message VimConnectionInfo { + + // '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' + repeated KeyValuePair accessInfo = 68600784; + + // \"'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'\" + repeated KeyValuePair extra = 96965648; + + // The identifier of the VIM Connection. This identifier is managed by the MEO. + string id = 3355; + + // \"'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'\" + repeated KeyValuePair interfaceInfo = 515703175; + + // 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. + string vimId = 112210645; + + // 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. + string vimType = 460598900; + +} diff --git a/AppGrantProto3/proto3/models/vim_software_image.proto b/AppGrantProto3/proto3/models/vim_software_image.proto new file mode 100644 index 0000000..e2ede5d --- /dev/null +++ b/AppGrantProto3/proto3/models/vim_software_image.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message VimSoftwareImage { + + // Identifier which references the software image descriptor in the AppD. + string appDSoftwareImageId = 370467694; + + // Identifier of the VIM connection to access the software image referenced in this structure. + string vimConnectionId = 424676819; + + // Identifier of the software image in the resource management layer (i.e. VIM) See note. + string vimSoftwareImageId = 274162507; + +} diff --git a/AppGrantProto3/proto3/models/zone_group_info.proto b/AppGrantProto3/proto3/models/zone_group_info.proto new file mode 100644 index 0000000..d189c07 --- /dev/null +++ b/AppGrantProto3/proto3/models/zone_group_info.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ZoneGroupInfo { + + // References of identifiers of \"ZoneInfo\" structures, each of which provides information about a resource zone that belongs to this group. + repeated string zoneId = 159452698; + +} diff --git a/AppGrantProto3/proto3/models/zone_info.proto b/AppGrantProto3/proto3/models/zone_info.proto new file mode 100644 index 0000000..7d0e323 --- /dev/null +++ b/AppGrantProto3/proto3/models/zone_info.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ZoneInfo { + + // 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. + string id = 3355; + + // \"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.\" + string vimConnectionId = 424676819; + + // The identifier of the resource zone, as managed by the resource management layer (typically, the VIM). + string zoneId = 159452698; + +} diff --git a/AppGrantProto3/proto3/services/granting_service.proto b/AppGrantProto3/proto3/services/granting_service.proto new file mode 100644 index 0000000..d8d8032 --- /dev/null +++ b/AppGrantProto3/proto3/services/granting_service.proto @@ -0,0 +1,38 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102.services.grantingservice; + +import public "models/grant.proto"; +import public "models/grant_request.proto"; +import public "models/problem_details.proto"; + +service GrantingService { + rpc GrantGET (GrantGETRequest) returns (Grant); + + rpc GrantPOST (GrantPOSTRequest) returns (Grant); + +} + +message GrantGETRequest { + // Identifier of the individual grant. + string grantId = 1; + +} + +message GrantPOSTRequest { + GrantRequest grantRequest = 1; + +} + -- GitLab From ce25864b0b3d43545b5b6b45f5b5c8b6c38f967b Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Tue, 13 Jun 2023 16:39:30 +0500 Subject: [PATCH 32/50] add proto3 descriptors for AppLcm API --- AppLcmProto3/proto3/.openapi-generator-ignore | 23 +++ AppLcmProto3/proto3/.openapi-generator/FILES | 113 ++++++++++++ .../proto3/.openapi-generator/VERSION | 1 + AppLcmProto3/proto3/README.md | 32 ++++ AppLcmProto3/proto3/models/action.proto | 25 +++ ...p_inst_id_creation_subscription_info.proto | 35 ++++ ..._id_creation_subscription_info_links.proto | 23 +++ ...nst_id_creation_subscription_request.proto | 29 ++++ ...p_inst_id_deletion_subscription_info.proto | 35 ++++ ...nst_id_deletion_subscription_request.proto | 29 ++++ .../proto3/models/app_inst_notification.proto | 56 ++++++ .../models/app_inst_selector_type.proto | 24 +++ .../models/app_inst_subscription_info.proto | 44 +++++ .../app_inst_subscription_info_links.proto | 23 +++ .../app_inst_subscription_request.proto | 32 ++++ ...nce_identifier_creation_notification.proto | 38 ++++ ...nce_identifier_deletion_notification.proto | 38 ++++ .../proto3/models/app_instance_info.proto | 70 ++++++++ .../models/app_instance_info_links.proto | 31 ++++ .../app_instance_lcm_op_occ_links.proto | 25 +++ .../proto3/models/app_instance_state.proto | 22 +++ .../app_instance_subscription_filter.proto | 29 ++++ .../app_instance_subscription_link_list.proto | 23 +++ ...nstance_subscription_link_list_links.proto | 27 +++ ...iption_link_list_links_subscriptions.proto | 26 +++ .../app_instance_subscription_type.proto | 23 +++ .../proto3/models/app_lcm_op_occ.proto | 46 +++++ .../models/app_lcm_op_occ_notification.proto | 61 +++++++ .../app_lcm_op_occ_notification_links.proto | 27 +++ .../app_lcm_op_occ_subscription_filter.proto | 34 ++++ .../app_lcm_op_occ_subscription_info.proto | 35 ++++ ...p_lcm_op_occ_subscription_info_links.proto | 23 +++ .../app_lcm_op_occ_subscription_request.proto | 29 ++++ .../proto3/models/app_network_policy.proto | 23 +++ .../app_network_policy_steered_network.proto | 26 +++ AppLcmProto3/proto3/models/app_products.proto | 26 +++ .../proto3/models/app_products_versions.proto | 25 +++ .../models/app_term_cands_for_coord.proto | 24 +++ ..._cands_for_coord_termination_options.proto | 23 +++ .../proto3/models/apps_from_providers.proto | 27 +++ .../proto3/models/block_storage_data.proto | 33 ++++ AppLcmProto3/proto3/models/category_ref.proto | 32 ++++ .../proto3/models/change_state_to.proto | 21 +++ .../proto3/models/checksum_data.proto | 26 +++ .../proto3/models/civic_address_element.proto | 26 +++ .../models/communication_interface.proto | 24 +++ .../config_platform_for_app_request.proto | 51 ++++++ .../proto3/models/connectivity_type.proto | 36 ++++ .../models/create_app_instance_request.proto | 32 ++++ .../proto3/models/dns_rule_descriptor.proto | 35 ++++ .../proto3/models/feature_dependency.proto | 26 +++ .../proto3/models/file_storage_data.proto | 29 ++++ AppLcmProto3/proto3/models/filter_type.proto | 21 +++ .../models/instantiate_app_request.proto | 47 +++++ .../models/instantiated_app_state.proto | 30 ++++ .../proto3/models/instantiation_state.proto | 21 +++ .../proto3/models/interface_descriptor.proto | 35 ++++ .../proto3/models/interface_type.proto | 22 +++ .../proto3/models/ip_address_type.proto | 21 +++ AppLcmProto3/proto3/models/ip_addresses.proto | 26 +++ .../proto3/models/key_value_pairs.proto | 24 +++ .../proto3/models/latency_descriptor.proto | 23 +++ AppLcmProto3/proto3/models/link_type.proto | 23 +++ AppLcmProto3/proto3/models/links.proto | 23 +++ .../proto3/models/location_constraints.proto | 29 ++++ .../proto3/models/location_information.proto | 29 ++++ .../location_information_civic_address.proto | 24 +++ .../models/logical_node_requirements.proto | 26 +++ .../max_number_of_impacted_instances.proto | 26 +++ AppLcmProto3/proto3/models/mcio_info.proto | 47 +++++ .../proto3/models/mec_host_information.proto | 26 +++ .../proto3/models/mep_information.proto | 26 +++ .../min_number_of_preserved_instances.proto | 26 +++ .../proto3/models/monitoring_parameter.proto | 32 ++++ .../proto3/models/nfvi_maintenance_info.proto | 47 +++++ .../proto3/models/notification_links.proto | 25 +++ AppLcmProto3/proto3/models/o_auth2_info.proto | 30 ++++ .../proto3/models/object_storage_data.proto | 23 +++ .../proto3/models/operate_app_request.proto | 29 ++++ .../proto3/models/operation_params.proto | 64 +++++++ .../proto3/models/operation_state.proto | 24 +++ .../proto3/models/operation_types.proto | 22 +++ .../models/os_container_descriptor.proto | 67 +++++++ .../proto3/models/problem_details.proto | 35 ++++ AppLcmProto3/proto3/models/qo_s.proto | 29 ++++ ...requested_additional_capability_data.proto | 36 ++++ .../proto3/models/security_info.proto | 26 +++ .../proto3/models/serializer_type.proto | 22 +++ .../proto3/models/service_dependency.proto | 36 ++++ .../proto3/models/service_descriptor.proto | 32 ++++ AppLcmProto3/proto3/models/stop_type.proto | 21 +++ .../proto3/models/sw_image_desc.proto | 55 ++++++ .../proto3/models/terminate_app_request.proto | 26 +++ AppLcmProto3/proto3/models/time_stamp.proto | 26 +++ .../proto3/models/traffic_filter.proto | 63 +++++++ .../models/traffic_rule_descriptor.proto | 40 +++++ .../proto3/models/transport_dependency.proto | 30 ++++ .../proto3/models/transport_descriptor.proto | 40 +++++ .../proto3/models/transports_supported.proto | 27 +++ AppLcmProto3/proto3/models/tunnel_info.proto | 31 ++++ AppLcmProto3/proto3/models/tunnel_type.proto | 21 +++ .../user_context_transfer_capability.proto | 24 +++ .../proto3/models/vim_connection_info.proto | 36 ++++ .../models/virtual_compute_descriptor.proto | 44 +++++ .../proto3/models/virtual_cpu_data.proto | 39 +++++ .../models/virtual_cpu_pinning_data.proto | 31 ++++ .../models/virtual_link_desc_flavour.proto | 26 +++ .../proto3/models/virtual_memory_data.proto | 36 ++++ .../models/virtual_storage_descriptor.proto | 47 +++++ .../proto3/models/vnf_virtual_link_desc.proto | 51 ++++++ .../app_lcm_notifications_service.proto | 74 ++++++++ .../proto3/services/app_lcm_service.proto | 163 ++++++++++++++++++ 112 files changed, 3781 insertions(+) create mode 100644 AppLcmProto3/proto3/.openapi-generator-ignore create mode 100644 AppLcmProto3/proto3/.openapi-generator/FILES create mode 100644 AppLcmProto3/proto3/.openapi-generator/VERSION create mode 100644 AppLcmProto3/proto3/README.md create mode 100644 AppLcmProto3/proto3/models/action.proto create mode 100644 AppLcmProto3/proto3/models/app_inst_id_creation_subscription_info.proto create mode 100644 AppLcmProto3/proto3/models/app_inst_id_creation_subscription_info_links.proto create mode 100644 AppLcmProto3/proto3/models/app_inst_id_creation_subscription_request.proto create mode 100644 AppLcmProto3/proto3/models/app_inst_id_deletion_subscription_info.proto create mode 100644 AppLcmProto3/proto3/models/app_inst_id_deletion_subscription_request.proto create mode 100644 AppLcmProto3/proto3/models/app_inst_notification.proto create mode 100644 AppLcmProto3/proto3/models/app_inst_selector_type.proto create mode 100644 AppLcmProto3/proto3/models/app_inst_subscription_info.proto create mode 100644 AppLcmProto3/proto3/models/app_inst_subscription_info_links.proto create mode 100644 AppLcmProto3/proto3/models/app_inst_subscription_request.proto create mode 100644 AppLcmProto3/proto3/models/app_instance_identifier_creation_notification.proto create mode 100644 AppLcmProto3/proto3/models/app_instance_identifier_deletion_notification.proto create mode 100644 AppLcmProto3/proto3/models/app_instance_info.proto create mode 100644 AppLcmProto3/proto3/models/app_instance_info_links.proto create mode 100644 AppLcmProto3/proto3/models/app_instance_lcm_op_occ_links.proto create mode 100644 AppLcmProto3/proto3/models/app_instance_state.proto create mode 100644 AppLcmProto3/proto3/models/app_instance_subscription_filter.proto create mode 100644 AppLcmProto3/proto3/models/app_instance_subscription_link_list.proto create mode 100644 AppLcmProto3/proto3/models/app_instance_subscription_link_list_links.proto create mode 100644 AppLcmProto3/proto3/models/app_instance_subscription_link_list_links_subscriptions.proto create mode 100644 AppLcmProto3/proto3/models/app_instance_subscription_type.proto create mode 100644 AppLcmProto3/proto3/models/app_lcm_op_occ.proto create mode 100644 AppLcmProto3/proto3/models/app_lcm_op_occ_notification.proto create mode 100644 AppLcmProto3/proto3/models/app_lcm_op_occ_notification_links.proto create mode 100644 AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_filter.proto create mode 100644 AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_info.proto create mode 100644 AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_info_links.proto create mode 100644 AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_request.proto create mode 100644 AppLcmProto3/proto3/models/app_network_policy.proto create mode 100644 AppLcmProto3/proto3/models/app_network_policy_steered_network.proto create mode 100644 AppLcmProto3/proto3/models/app_products.proto create mode 100644 AppLcmProto3/proto3/models/app_products_versions.proto create mode 100644 AppLcmProto3/proto3/models/app_term_cands_for_coord.proto create mode 100644 AppLcmProto3/proto3/models/app_term_cands_for_coord_termination_options.proto create mode 100644 AppLcmProto3/proto3/models/apps_from_providers.proto create mode 100644 AppLcmProto3/proto3/models/block_storage_data.proto create mode 100644 AppLcmProto3/proto3/models/category_ref.proto create mode 100644 AppLcmProto3/proto3/models/change_state_to.proto create mode 100644 AppLcmProto3/proto3/models/checksum_data.proto create mode 100644 AppLcmProto3/proto3/models/civic_address_element.proto create mode 100644 AppLcmProto3/proto3/models/communication_interface.proto create mode 100644 AppLcmProto3/proto3/models/config_platform_for_app_request.proto create mode 100644 AppLcmProto3/proto3/models/connectivity_type.proto create mode 100644 AppLcmProto3/proto3/models/create_app_instance_request.proto create mode 100644 AppLcmProto3/proto3/models/dns_rule_descriptor.proto create mode 100644 AppLcmProto3/proto3/models/feature_dependency.proto create mode 100644 AppLcmProto3/proto3/models/file_storage_data.proto create mode 100644 AppLcmProto3/proto3/models/filter_type.proto create mode 100644 AppLcmProto3/proto3/models/instantiate_app_request.proto create mode 100644 AppLcmProto3/proto3/models/instantiated_app_state.proto create mode 100644 AppLcmProto3/proto3/models/instantiation_state.proto create mode 100644 AppLcmProto3/proto3/models/interface_descriptor.proto create mode 100644 AppLcmProto3/proto3/models/interface_type.proto create mode 100644 AppLcmProto3/proto3/models/ip_address_type.proto create mode 100644 AppLcmProto3/proto3/models/ip_addresses.proto create mode 100644 AppLcmProto3/proto3/models/key_value_pairs.proto create mode 100644 AppLcmProto3/proto3/models/latency_descriptor.proto create mode 100644 AppLcmProto3/proto3/models/link_type.proto create mode 100644 AppLcmProto3/proto3/models/links.proto create mode 100644 AppLcmProto3/proto3/models/location_constraints.proto create mode 100644 AppLcmProto3/proto3/models/location_information.proto create mode 100644 AppLcmProto3/proto3/models/location_information_civic_address.proto create mode 100644 AppLcmProto3/proto3/models/logical_node_requirements.proto create mode 100644 AppLcmProto3/proto3/models/max_number_of_impacted_instances.proto create mode 100644 AppLcmProto3/proto3/models/mcio_info.proto create mode 100644 AppLcmProto3/proto3/models/mec_host_information.proto create mode 100644 AppLcmProto3/proto3/models/mep_information.proto create mode 100644 AppLcmProto3/proto3/models/min_number_of_preserved_instances.proto create mode 100644 AppLcmProto3/proto3/models/monitoring_parameter.proto create mode 100644 AppLcmProto3/proto3/models/nfvi_maintenance_info.proto create mode 100644 AppLcmProto3/proto3/models/notification_links.proto create mode 100644 AppLcmProto3/proto3/models/o_auth2_info.proto create mode 100644 AppLcmProto3/proto3/models/object_storage_data.proto create mode 100644 AppLcmProto3/proto3/models/operate_app_request.proto create mode 100644 AppLcmProto3/proto3/models/operation_params.proto create mode 100644 AppLcmProto3/proto3/models/operation_state.proto create mode 100644 AppLcmProto3/proto3/models/operation_types.proto create mode 100644 AppLcmProto3/proto3/models/os_container_descriptor.proto create mode 100644 AppLcmProto3/proto3/models/problem_details.proto create mode 100644 AppLcmProto3/proto3/models/qo_s.proto create mode 100644 AppLcmProto3/proto3/models/requested_additional_capability_data.proto create mode 100644 AppLcmProto3/proto3/models/security_info.proto create mode 100644 AppLcmProto3/proto3/models/serializer_type.proto create mode 100644 AppLcmProto3/proto3/models/service_dependency.proto create mode 100644 AppLcmProto3/proto3/models/service_descriptor.proto create mode 100644 AppLcmProto3/proto3/models/stop_type.proto create mode 100644 AppLcmProto3/proto3/models/sw_image_desc.proto create mode 100644 AppLcmProto3/proto3/models/terminate_app_request.proto create mode 100644 AppLcmProto3/proto3/models/time_stamp.proto create mode 100644 AppLcmProto3/proto3/models/traffic_filter.proto create mode 100644 AppLcmProto3/proto3/models/traffic_rule_descriptor.proto create mode 100644 AppLcmProto3/proto3/models/transport_dependency.proto create mode 100644 AppLcmProto3/proto3/models/transport_descriptor.proto create mode 100644 AppLcmProto3/proto3/models/transports_supported.proto create mode 100644 AppLcmProto3/proto3/models/tunnel_info.proto create mode 100644 AppLcmProto3/proto3/models/tunnel_type.proto create mode 100644 AppLcmProto3/proto3/models/user_context_transfer_capability.proto create mode 100644 AppLcmProto3/proto3/models/vim_connection_info.proto create mode 100644 AppLcmProto3/proto3/models/virtual_compute_descriptor.proto create mode 100644 AppLcmProto3/proto3/models/virtual_cpu_data.proto create mode 100644 AppLcmProto3/proto3/models/virtual_cpu_pinning_data.proto create mode 100644 AppLcmProto3/proto3/models/virtual_link_desc_flavour.proto create mode 100644 AppLcmProto3/proto3/models/virtual_memory_data.proto create mode 100644 AppLcmProto3/proto3/models/virtual_storage_descriptor.proto create mode 100644 AppLcmProto3/proto3/models/vnf_virtual_link_desc.proto create mode 100644 AppLcmProto3/proto3/services/app_lcm_notifications_service.proto create mode 100644 AppLcmProto3/proto3/services/app_lcm_service.proto diff --git a/AppLcmProto3/proto3/.openapi-generator-ignore b/AppLcmProto3/proto3/.openapi-generator-ignore new file mode 100644 index 0000000..7484ee5 --- /dev/null +++ b/AppLcmProto3/proto3/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/AppLcmProto3/proto3/.openapi-generator/FILES b/AppLcmProto3/proto3/.openapi-generator/FILES new file mode 100644 index 0000000..4596fa1 --- /dev/null +++ b/AppLcmProto3/proto3/.openapi-generator/FILES @@ -0,0 +1,113 @@ +.openapi-generator-ignore +README.md +models/action.proto +models/app_inst_id_creation_subscription_info.proto +models/app_inst_id_creation_subscription_info_links.proto +models/app_inst_id_creation_subscription_request.proto +models/app_inst_id_deletion_subscription_info.proto +models/app_inst_id_deletion_subscription_request.proto +models/app_inst_notification.proto +models/app_inst_selector_type.proto +models/app_inst_subscription_info.proto +models/app_inst_subscription_info_links.proto +models/app_inst_subscription_request.proto +models/app_instance_identifier_creation_notification.proto +models/app_instance_identifier_deletion_notification.proto +models/app_instance_info.proto +models/app_instance_info_links.proto +models/app_instance_lcm_op_occ_links.proto +models/app_instance_state.proto +models/app_instance_subscription_filter.proto +models/app_instance_subscription_link_list.proto +models/app_instance_subscription_link_list_links.proto +models/app_instance_subscription_link_list_links_subscriptions.proto +models/app_instance_subscription_type.proto +models/app_lcm_op_occ.proto +models/app_lcm_op_occ_notification.proto +models/app_lcm_op_occ_notification_links.proto +models/app_lcm_op_occ_subscription_filter.proto +models/app_lcm_op_occ_subscription_info.proto +models/app_lcm_op_occ_subscription_info_links.proto +models/app_lcm_op_occ_subscription_request.proto +models/app_network_policy.proto +models/app_network_policy_steered_network.proto +models/app_products.proto +models/app_products_versions.proto +models/app_term_cands_for_coord.proto +models/app_term_cands_for_coord_termination_options.proto +models/apps_from_providers.proto +models/block_storage_data.proto +models/cancel_mode.proto +models/category_ref.proto +models/change_state_to.proto +models/checksum_data.proto +models/civic_address_element.proto +models/communication_interface.proto +models/config_platform_for_app_request.proto +models/connectivity_type.proto +models/create_app_instance_request.proto +models/dns_rule_descriptor.proto +models/feature_dependency.proto +models/file_storage_data.proto +models/filter_type.proto +models/instantiate_app_request.proto +models/instantiated_app_state.proto +models/instantiation_state.proto +models/interface_descriptor.proto +models/interface_type.proto +models/ip_address_type.proto +models/ip_addresses.proto +models/key_value_pairs.proto +models/latency_descriptor.proto +models/lcm_operation.proto +models/link_type.proto +models/links.proto +models/location_constraints.proto +models/location_information.proto +models/location_information_civic_address.proto +models/logical_node_requirements.proto +models/max_number_of_impacted_instances.proto +models/mcio_info.proto +models/mec_host_information.proto +models/mep_information.proto +models/min_number_of_preserved_instances.proto +models/monitoring_parameter.proto +models/nfvi_maintenance_info.proto +models/notification_links.proto +models/o_auth2_info.proto +models/object_storage_data.proto +models/operate_app_request.proto +models/operation_params.proto +models/operation_state.proto +models/operation_types.proto +models/os_container_descriptor.proto +models/problem_details.proto +models/qo_s.proto +models/requested_additional_capability_data.proto +models/security_info.proto +models/serializer_type.proto +models/service_dependency.proto +models/service_descriptor.proto +models/stop_type.proto +models/sw_image_desc.proto +models/terminate_app_request.proto +models/termination_type.proto +models/time_stamp.proto +models/traffic_filter.proto +models/traffic_rule_descriptor.proto +models/transport_dependency.proto +models/transport_descriptor.proto +models/transports_supported.proto +models/tunnel_info.proto +models/tunnel_type.proto +models/user_context_transfer_capability.proto +models/vim_connection_info.proto +models/virtual_compute_descriptor.proto +models/virtual_cpu_data.proto +models/virtual_cpu_pinning_data.proto +models/virtual_link_desc_flavour.proto +models/virtual_memory_data.proto +models/virtual_storage_descriptor.proto +models/vnf_virtual_link_desc.proto +services/app_lcm_notifications_service.proto +services/app_lcm_service.proto diff --git a/AppLcmProto3/proto3/.openapi-generator/VERSION b/AppLcmProto3/proto3/.openapi-generator/VERSION new file mode 100644 index 0000000..1e20ec3 --- /dev/null +++ b/AppLcmProto3/proto3/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.4.0 \ No newline at end of file diff --git a/AppLcmProto3/proto3/README.md b/AppLcmProto3/proto3/README.md new file mode 100644 index 0000000..4cae1e5 --- /dev/null +++ b/AppLcmProto3/proto3/README.md @@ -0,0 +1,32 @@ +# gPRC for mec0102 + +ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + +## Overview +These files were generated by the [OpenAPI Generator](https://openapi-generator.tech) project. + +- API version: 3.1.1 +- Package version: +- Build package: org.openapitools.codegen.languages.ProtobufSchemaCodegen +For more information, please visit [https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api](https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api) + +## Usage + +Below are some usage examples for Go and Ruby. For other languages, please refer to https://grpc.io/docs/quickstart/. + +### Go +``` +# assuming `protoc-gen-go` has been installed with `go get -u github.com/golang/protobuf/protoc-gen-go` +mkdir /var/tmp/go/ +protoc --go_out=/var/tmp/go/ services/* +protoc --go_out=/var/tmp/go/ models/* +``` + +### Ruby +``` +# assuming `grpc_tools_ruby_protoc` has been installed via `gem install grpc-tools` +RUBY_OUTPUT_DIR="/var/tmp/ruby/mec0102" +mkdir $RUBY_OUTPUT_DIR +grpc_tools_ruby_protoc --ruby_out=$RUBY_OUTPUT_DIR --grpc_out=$RUBY_OUTPUT_DIR/lib services/* +grpc_tools_ruby_protoc --ruby_out=$RUBY_OUTPUT_DIR --grpc_out=$RUBY_OUTPUT_DIR/lib models/* +``` diff --git a/AppLcmProto3/proto3/models/action.proto b/AppLcmProto3/proto3/models/action.proto new file mode 100644 index 0000000..cf7c167 --- /dev/null +++ b/AppLcmProto3/proto3/models/action.proto @@ -0,0 +1,25 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum Action { + DROP = 0; + FORWARD_DECAPSULATED = 1; + FORWARD_ENCAPSULATED = 2; + PASSTHROUGH = 3; + DUPLICATE_DECAPSULATED = 4; + DUPLICATE_ENCAPSULATED = 5; +} diff --git a/AppLcmProto3/proto3/models/app_inst_id_creation_subscription_info.proto b/AppLcmProto3/proto3/models/app_inst_id_creation_subscription_info.proto new file mode 100644 index 0000000..006a49b --- /dev/null +++ b/AppLcmProto3/proto3/models/app_inst_id_creation_subscription_info.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_inst_id_creation_subscription_info_links.proto"; +import public "models/app_instance_subscription_filter.proto"; + +message AppInstIdCreationSubscriptionInfo { + + // Identifier of the subscription to application instance operational state change notification. + string id = 3355; + + // Shall be set to \"AppIdentifierCreationSubscription\". + string subscriptionType = 515734025; + + // The URI of the endpoint for the subscription related notification to be sent to. + string callbackUri = 259033834; + + AppInstanceSubscriptionFilter appInstanceSubscriptionFilter = 117439341; + + AppInstIdCreationSubscriptionInfoLinks links = 102977465; + +} diff --git a/AppLcmProto3/proto3/models/app_inst_id_creation_subscription_info_links.proto b/AppLcmProto3/proto3/models/app_inst_id_creation_subscription_info_links.proto new file mode 100644 index 0000000..6cd098e --- /dev/null +++ b/AppLcmProto3/proto3/models/app_inst_id_creation_subscription_info_links.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message AppInstIdCreationSubscriptionInfoLinks { + + LinkType self = 3526476; + +} diff --git a/AppLcmProto3/proto3/models/app_inst_id_creation_subscription_request.proto b/AppLcmProto3/proto3/models/app_inst_id_creation_subscription_request.proto new file mode 100644 index 0000000..cfa9f63 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_inst_id_creation_subscription_request.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_instance_subscription_filter.proto"; + +message AppInstIdCreationSubscriptionRequest { + + // Shall be set to \"AppIdentifierCreationSubscription\". + string subscriptionType = 515734025; + + // The URI of the endpoint for the subscription related notification to be sent to. + string callbackUri = 259033834; + + AppInstanceSubscriptionFilter appInstanceSubscriptionFilter = 117439341; + +} diff --git a/AppLcmProto3/proto3/models/app_inst_id_deletion_subscription_info.proto b/AppLcmProto3/proto3/models/app_inst_id_deletion_subscription_info.proto new file mode 100644 index 0000000..6042ff9 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_inst_id_deletion_subscription_info.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_inst_id_creation_subscription_info_links.proto"; +import public "models/app_instance_subscription_filter.proto"; + +message AppInstIdDeletionSubscriptionInfo { + + // Identifier of the subscription to application instance operational state change notification. + string id = 3355; + + // Shall be set to \"AppIdentifierDeletionSubscription\". + string subscriptionType = 515734025; + + // The URI of the endpoint for the subscription related notification to be sent to. + string callbackUri = 259033834; + + AppInstanceSubscriptionFilter appInstanceSubscriptionFilter = 117439341; + + AppInstIdCreationSubscriptionInfoLinks links = 102977465; + +} diff --git a/AppLcmProto3/proto3/models/app_inst_id_deletion_subscription_request.proto b/AppLcmProto3/proto3/models/app_inst_id_deletion_subscription_request.proto new file mode 100644 index 0000000..04b435b --- /dev/null +++ b/AppLcmProto3/proto3/models/app_inst_id_deletion_subscription_request.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_instance_subscription_filter.proto"; + +message AppInstIdDeletionSubscriptionRequest { + + // Shall be set to \"AppIdentifierDeletionSubscription\". + string subscriptionType = 515734025; + + // The URI of the endpoint for the subscription related notification to be sent to. + string callbackUri = 259033834; + + AppInstanceSubscriptionFilter appInstanceSubscriptionFilter = 117439341; + +} diff --git a/AppLcmProto3/proto3/models/app_inst_notification.proto b/AppLcmProto3/proto3/models/app_inst_notification.proto new file mode 100644 index 0000000..bbde331 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_inst_notification.proto @@ -0,0 +1,56 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/links.proto"; +import public "models/location_information.proto"; +import public "models/time_stamp.proto"; + +message AppInstNotification { + + Links links = 102977465; + + // The application descriptor identifier identifies the application package and the application descriptor in a globally unique way. + string appDId = 337359172; + + // Identifier of application instance. + string appInstanceId = 301879922; + + // Identifier of the onboarded application package. + string appPkgId = 79968872; + + // 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. + string id = 3355; + + // Discriminator for the different notification types. Shall be set to \"AppInstanceStateChangeSubscription\" for this notification type. + string notificationType = 925384; + + // Identifier of the subscription related to this notification. + string subscriptionId = 405049114; + + TimeStamp timeStamp = 25573622; + + LocationInformation appInstLocation = 476747557; + + // Application instance state + enum AppInstanceStateEnum { + NOT_INSTANTIATED_1 = 0; + STARTED_1 = 1; + STOPPED_1 = 2; + } + + AppInstanceStateEnum appInstanceState = 366659678; + +} diff --git a/AppLcmProto3/proto3/models/app_inst_selector_type.proto b/AppLcmProto3/proto3/models/app_inst_selector_type.proto new file mode 100644 index 0000000..ec6d28f --- /dev/null +++ b/AppLcmProto3/proto3/models/app_inst_selector_type.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum AppInstSelectorType { + VOID = 0; + APP_IDENTITY = 1; + APP_NAME = 2; + APP_D_ID = 3; + APP_FROM_PROVIDER = 4; +} diff --git a/AppLcmProto3/proto3/models/app_inst_subscription_info.proto b/AppLcmProto3/proto3/models/app_inst_subscription_info.proto new file mode 100644 index 0000000..f8bdf83 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_inst_subscription_info.proto @@ -0,0 +1,44 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_inst_subscription_info_links.proto"; +import public "models/app_instance_subscription_filter.proto"; + +message AppInstSubscriptionInfo { + + // 'Identifier of the subscription to application instance operational state change notification.' + string id = 3355; + + // Shall be set to \"AppInstanceStateChangeSubscription\". + string subscriptionType = 515734025; + + // Application instance state subscribed to. + enum AppInstanceStateEnum { + NOT_INSTANTIATED_2 = 0; + STARTED_2 = 1; + STOPPED_2 = 2; + } + + AppInstanceStateEnum appInstanceState = 366659678; + + AppInstanceSubscriptionFilter appInstanceSubscriptionFilter = 117439341; + + // The URI of the endpoint for the subscription related notification to be sent to. + string callbackUri = 259033834; + + AppInstSubscriptionInfoLinks links = 102977465; + +} diff --git a/AppLcmProto3/proto3/models/app_inst_subscription_info_links.proto b/AppLcmProto3/proto3/models/app_inst_subscription_info_links.proto new file mode 100644 index 0000000..90a22ee --- /dev/null +++ b/AppLcmProto3/proto3/models/app_inst_subscription_info_links.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message AppInstSubscriptionInfoLinks { + + LinkType self = 3526476; + +} diff --git a/AppLcmProto3/proto3/models/app_inst_subscription_request.proto b/AppLcmProto3/proto3/models/app_inst_subscription_request.proto new file mode 100644 index 0000000..8baba76 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_inst_subscription_request.proto @@ -0,0 +1,32 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_instance_state.proto"; +import public "models/app_instance_subscription_filter.proto"; + +message AppInstSubscriptionRequest { + + // Shall be set to \"AppInstanceStateChangeSubscription\". + string subscriptionType = 515734025; + + // The URI of the endpoint for the notification to be sent to. + string callbackUri = 259033834; + + AppInstanceState appInstanceState = 366659678; + + AppInstanceSubscriptionFilter appInstanceSubscriptionFilter = 117439341; + +} diff --git a/AppLcmProto3/proto3/models/app_instance_identifier_creation_notification.proto b/AppLcmProto3/proto3/models/app_instance_identifier_creation_notification.proto new file mode 100644 index 0000000..95eeaf0 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_identifier_creation_notification.proto @@ -0,0 +1,38 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/notification_links.proto"; +import public "models/time_stamp.proto"; + +message AppInstanceIdentifierCreationNotification { + + // 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. + string id = 3355; + + // Discriminator for the different notification types. Shall be set to \"AppIdentifierCreationSubscription\" for this notification type. + string notificationType = 925384; + + // Identifier of the subscription related to this notification. + string subscriptionId = 405049114; + + TimeStamp timeStamp = 25573622; + + // The created application instance Identifier. + string appInstanceId = 301879922; + + NotificationLinks links = 102977465; + +} diff --git a/AppLcmProto3/proto3/models/app_instance_identifier_deletion_notification.proto b/AppLcmProto3/proto3/models/app_instance_identifier_deletion_notification.proto new file mode 100644 index 0000000..a330599 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_identifier_deletion_notification.proto @@ -0,0 +1,38 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/notification_links.proto"; +import public "models/time_stamp.proto"; + +message AppInstanceIdentifierDeletionNotification { + + // 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. + string id = 3355; + + // Discriminator for the different notification types. Shall be set to \"AppIdentifierDeletionSubscription\" for this notification type. + string notificationType = 925384; + + // Identifier of the subscription related to this notification. + string subscriptionId = 405049114; + + TimeStamp timeStamp = 25573622; + + // The deleted application instance Identifier. + string appInstanceId = 301879922; + + NotificationLinks links = 102977465; + +} diff --git a/AppLcmProto3/proto3/models/app_instance_info.proto b/AppLcmProto3/proto3/models/app_instance_info.proto new file mode 100644 index 0000000..8cafc09 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_info.proto @@ -0,0 +1,70 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_instance_info_links.proto"; +import public "models/communication_interface.proto"; +import public "models/instantiated_app_state.proto"; +import public "models/instantiation_state.proto"; +import public "models/vim_connection_info.proto"; + +message AppInstanceInfo { + + // Identifier of application instance. + string id = 3355; + + // Name of the application instance. + string appInstanceName = 340710785; + + // Human-readable description of the application instance to be created. + string appInstanceDescription = 52295612; + + // Identifier of this MEC application descriptor. This attribute shall be globally unique. + string appDId = 337359172; + + // Provider of the application and of the AppD. + string appProvider = 239586510; + + // Identifier of the NS instance created by NFVO in which the MEC application has been instantiated as a VNF instance. See note 2 + string nsInstanceId = 39386060; + + // Identifier of the VNF instance created by VNFM that the MEC application has been instantiated as. See note 2. + string vnfInstanceId = 510586847; + + // Interface for communication with other application instances. See clause 7.5.2 of ETSI GS MEC 021 [13] for the data type definition. + repeated CommunicationInterface communicationInterface = 507129349; + + // Name to identify the MEC application. + string appName = 257265589; + + // Identifies the version of software of the MEC application. + string appSoftVersion = 462216301; + + // Identifies the version of the application descriptor. + string appDVersion = 414673174; + + // Identifier of the onboarded application package. + string appPkgId = 79968872; + + // 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. + repeated VimConnectionInfo vimConnectionInfo = 92542822; + + InstantiationState instantiationState = 18182332; + + InstantiatedAppState instantiatedAppState = 307522509; + + AppInstanceInfoLinks links = 102977465; + +} diff --git a/AppLcmProto3/proto3/models/app_instance_info_links.proto b/AppLcmProto3/proto3/models/app_instance_info_links.proto new file mode 100644 index 0000000..3a2286a --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_info_links.proto @@ -0,0 +1,31 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message AppInstanceInfoLinks { + + LinkType self = 3526476; + + LinkType instantiate = 475561241; + + LinkType terminate = 425377380; + + LinkType operate = 189331070; + + LinkType configureUnderscoreplatformUnderscoreforUnderscoreapp = 522443436; + +} diff --git a/AppLcmProto3/proto3/models/app_instance_lcm_op_occ_links.proto b/AppLcmProto3/proto3/models/app_instance_lcm_op_occ_links.proto new file mode 100644 index 0000000..c32bef0 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_lcm_op_occ_links.proto @@ -0,0 +1,25 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message AppInstanceLcmOpOccLinks { + + LinkType self = 3526476; + + LinkType appInstance = 229294552; + +} diff --git a/AppLcmProto3/proto3/models/app_instance_state.proto b/AppLcmProto3/proto3/models/app_instance_state.proto new file mode 100644 index 0000000..5884b93 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_state.proto @@ -0,0 +1,22 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum AppInstanceState { + NOT_INSTANTIATED_3 = 0; + STARTED_3 = 1; + STOPPED_3 = 2; +} diff --git a/AppLcmProto3/proto3/models/app_instance_subscription_filter.proto b/AppLcmProto3/proto3/models/app_instance_subscription_filter.proto new file mode 100644 index 0000000..60b2544 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_subscription_filter.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_inst_selector_type.proto"; +import public "models/apps_from_providers.proto"; + +message AppInstanceSubscriptionFilter { + + AppInstSelectorType appInstSelectorType = 60935523; + + // 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. + repeated string appInstances = 128809312; + + repeated AppsFromProviders appsFromProviders = 184865085; + +} diff --git a/AppLcmProto3/proto3/models/app_instance_subscription_link_list.proto b/AppLcmProto3/proto3/models/app_instance_subscription_link_list.proto new file mode 100644 index 0000000..029da17 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_subscription_link_list.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_instance_subscription_link_list_links.proto"; + +message AppInstanceSubscriptionLinkList { + + AppInstanceSubscriptionLinkListLinks links = 102977465; + +} diff --git a/AppLcmProto3/proto3/models/app_instance_subscription_link_list_links.proto b/AppLcmProto3/proto3/models/app_instance_subscription_link_list_links.proto new file mode 100644 index 0000000..c09626d --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_subscription_link_list_links.proto @@ -0,0 +1,27 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_instance_subscription_link_list_links_subscriptions.proto"; + +message AppInstanceSubscriptionLinkListLinks { + + // URI referring to a resource + string self = 3526476; + + // A link list to the subscriptions. + repeated AppInstanceSubscriptionLinkListLinksSubscriptions subscriptions = 376752889; + +} diff --git a/AppLcmProto3/proto3/models/app_instance_subscription_link_list_links_subscriptions.proto b/AppLcmProto3/proto3/models/app_instance_subscription_link_list_links_subscriptions.proto new file mode 100644 index 0000000..f98dbfb --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_subscription_link_list_links_subscriptions.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_instance_subscription_type.proto"; + +message AppInstanceSubscriptionLinkListLinksSubscriptions { + + // The URI referring to the subscription. + string href = 3211051; + + AppInstanceSubscriptionType subscriptionType = 515734025; + +} diff --git a/AppLcmProto3/proto3/models/app_instance_subscription_type.proto b/AppLcmProto3/proto3/models/app_instance_subscription_type.proto new file mode 100644 index 0000000..f48647c --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_subscription_type.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum AppInstanceSubscriptionType { + APPINSTANCESTATECHANGESUBSCRIPTION = 0; + APPLCMOPOCCSTATECHANGESUBSCRIPTION = 1; + APPIDENTIFIERCREATIONSUBSCRIPTION = 2; + APPIDENTIFIERDELETIONSUBSCRIPTION = 3; +} diff --git a/AppLcmProto3/proto3/models/app_lcm_op_occ.proto b/AppLcmProto3/proto3/models/app_lcm_op_occ.proto new file mode 100644 index 0000000..a0335f5 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_lcm_op_occ.proto @@ -0,0 +1,46 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_instance_lcm_op_occ_links.proto"; +import public "models/stop_type.proto"; +import public "models/operation_types.proto"; +import public "models/operation_params.proto"; +import public "models/operation_state.proto"; +import public "models/time_stamp.proto"; + +message AppLcmOpOcc { + + // 'Identifier of the subscription to application LCM operation occurrence notification' + string id = 3355; + + OperationState operationState = 370325656; + + TimeStamp stateEnteredTime = 33947541; + + TimeStamp startTime = 518682036; + + OperationTypes lcmOperation = 248183761; + + OperationParams operationParams = 308751926; + + // 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. + bool isCancelPending = 412226383; + + StopType cancelMode = 277811008; + + AppInstanceLcmOpOccLinks links = 102977465; + +} diff --git a/AppLcmProto3/proto3/models/app_lcm_op_occ_notification.proto b/AppLcmProto3/proto3/models/app_lcm_op_occ_notification.proto new file mode 100644 index 0000000..05ec6fe --- /dev/null +++ b/AppLcmProto3/proto3/models/app_lcm_op_occ_notification.proto @@ -0,0 +1,61 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_lcm_op_occ_notification_links.proto"; +import public "models/time_stamp.proto"; + +message AppLcmOpOccNotification { + + // 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. + string id = 3355; + + // Discriminator for the different notification types. Shall be set to \"AppLcmOpOccStateChangeSubscription\" for this notification type. + string notificationType = 925384; + + // Type of the LCM operation represented by this application instance LCM operation occurrence. + enum OperationTypeEnum { + INSTANTIATE = 0; + OPERATE = 1; + TERMINATE = 2; + } + + OperationTypeEnum operationType = 91999553; + + // Operation state. + enum OperationStateEnum { + STARTING = 0; + PROCESSING = 1; + COMPLETED = 2; + FAILED = 3; + FAILED_TEMP = 4; + } + + OperationStateEnum operationState = 370325656; + + // Identifier of the subscription related to this notification. + string subscriptionId = 405049114; + + TimeStamp timeStamp = 25573622; + + // Identifier of application lifecycle management operation occurrence. + string appLcmOpOccId = 256077684; + + // Identifier of application instance. + string appInstanceId = 301879922; + + AppLcmOpOccNotificationLinks links = 102977465; + +} diff --git a/AppLcmProto3/proto3/models/app_lcm_op_occ_notification_links.proto b/AppLcmProto3/proto3/models/app_lcm_op_occ_notification_links.proto new file mode 100644 index 0000000..f4cc74c --- /dev/null +++ b/AppLcmProto3/proto3/models/app_lcm_op_occ_notification_links.proto @@ -0,0 +1,27 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message AppLcmOpOccNotificationLinks { + + LinkType appInstance = 229294552; + + LinkType subscription = 341203229; + + LinkType appLcmOpOcc = 321495162; + +} diff --git a/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_filter.proto b/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_filter.proto new file mode 100644 index 0000000..9e4f2b4 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_filter.proto @@ -0,0 +1,34 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_instance_subscription_filter.proto"; +import public "models/operation_state.proto"; +import public "models/operation_types.proto"; + +message AppLcmOpOccSubscriptionFilter { + + AppInstanceSubscriptionFilter appInstanceSubscriptionFilter = 117439341; + + // Match particular notification types. + string notificationTypes = 508183988; + + // Type of the LCM operation state represented by this application instance LCM operation occurrence. + repeated OperationState operationStates = 205806010; + + // Type of the LCM operation represented by this application instance LCM operation occurrence. + repeated OperationTypes operationTypes = 369239216; + +} diff --git a/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_info.proto b/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_info.proto new file mode 100644 index 0000000..ca09aa5 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_info.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_lcm_op_occ_subscription_filter.proto"; +import public "models/app_lcm_op_occ_subscription_info_links.proto"; + +message AppLcmOpOccSubscriptionInfo { + + // Identifier of this subscription resource. + string id = 3355; + + // Shall be set to \"AppLcmOpOccStateChangeSubscription\". + string subscriptionType = 515734025; + + // The URI of the endpoint for the notification to be sent to. + string callbackUri = 259033834; + + AppLcmOpOccSubscriptionFilter appLcmOpOccSubscriptionFilter = 46164148; + + AppLcmOpOccSubscriptionInfoLinks links = 102977465; + +} diff --git a/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_info_links.proto b/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_info_links.proto new file mode 100644 index 0000000..0d107c9 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_info_links.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message AppLcmOpOccSubscriptionInfoLinks { + + LinkType self = 3526476; + +} diff --git a/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_request.proto b/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_request.proto new file mode 100644 index 0000000..21c7267 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_request.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_lcm_op_occ_subscription_filter.proto"; + +message AppLcmOpOccSubscriptionRequest { + + AppLcmOpOccSubscriptionFilter appLcmOpOccSubscriptionFilter = 46164148; + + // The URI of the endpoint for the subscription related notification to be sent to. + string callbackUri = 259033834; + + // Shall be set to \"AppLcmOpOccStateChangeSubscription\". + string subscriptionType = 515734025; + +} diff --git a/AppLcmProto3/proto3/models/app_network_policy.proto b/AppLcmProto3/proto3/models/app_network_policy.proto new file mode 100644 index 0000000..3f4bf25 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_network_policy.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_network_policy_steered_network.proto"; + +message AppNetworkPolicy { + + AppNetworkPolicySteeredNetwork steeredNetwork = 32182818; + +} diff --git a/AppLcmProto3/proto3/models/app_network_policy_steered_network.proto b/AppLcmProto3/proto3/models/app_network_policy_steered_network.proto new file mode 100644 index 0000000..00cffa0 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_network_policy_steered_network.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message AppNetworkPolicySteeredNetwork { + + bool cellularNetwork = 392334692; + + bool wiMinusfiNetwork = 282209517; + + bool fixedAccessNetwork = 113322265; + +} diff --git a/AppLcmProto3/proto3/models/app_products.proto b/AppLcmProto3/proto3/models/app_products.proto new file mode 100644 index 0000000..c00ac3c --- /dev/null +++ b/AppLcmProto3/proto3/models/app_products.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_products_versions.proto"; + +message AppProducts { + + // Name to identify the MEC application. + string appName = 257265589; + + repeated AppProductsVersions versions = 374440296; + +} diff --git a/AppLcmProto3/proto3/models/app_products_versions.proto b/AppLcmProto3/proto3/models/app_products_versions.proto new file mode 100644 index 0000000..4963e35 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_products_versions.proto @@ -0,0 +1,25 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message AppProductsVersions { + + // Identifies the version of software of the MEC application. + string appSoftVersion = 462216301; + + repeated string appDVersion = 414673174; + +} diff --git a/AppLcmProto3/proto3/models/app_term_cands_for_coord.proto b/AppLcmProto3/proto3/models/app_term_cands_for_coord.proto new file mode 100644 index 0000000..f9444f5 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_term_cands_for_coord.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_term_cands_for_coord_termination_options.proto"; + +message AppTermCandsForCoord { + + // 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. + repeated AppTermCandsForCoordTerminationOptions terminationOptions = 335620860; + +} diff --git a/AppLcmProto3/proto3/models/app_term_cands_for_coord_termination_options.proto b/AppLcmProto3/proto3/models/app_term_cands_for_coord_termination_options.proto new file mode 100644 index 0000000..ec42007 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_term_cands_for_coord_termination_options.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message AppTermCandsForCoordTerminationOptions { + + // List of application instance identifiers, constituting a candidate set for termination. + repeated string appInstIdTerminationCands = 119235422; + +} diff --git a/AppLcmProto3/proto3/models/apps_from_providers.proto b/AppLcmProto3/proto3/models/apps_from_providers.proto new file mode 100644 index 0000000..2440565 --- /dev/null +++ b/AppLcmProto3/proto3/models/apps_from_providers.proto @@ -0,0 +1,27 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_products.proto"; + +message AppsFromProviders { + + // Provider of the application and of the AppD. + string appProvider = 239586510; + + // If present, match application instances that belong to application products with certain product names, from one particular provider. + repeated AppProducts appProducts = 255852891; + +} diff --git a/AppLcmProto3/proto3/models/block_storage_data.proto b/AppLcmProto3/proto3/models/block_storage_data.proto new file mode 100644 index 0000000..f2537fd --- /dev/null +++ b/AppLcmProto3/proto3/models/block_storage_data.proto @@ -0,0 +1,33 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; +import public "models/sw_image_desc.proto"; + +message BlockStorageData { + + // Size of virtualised storage resource in GB. + float sizeOfStorage = 93418079; + + // An array of key-value pairs that articulate the storage deployment requirements. + repeated KeyValuePairs vduStorageRequirements = 425848926; + + // Indicate if the storage support RDMA. + bool rdmaEnabled = 457519388; + + SwImageDesc swImageDesc = 202180474; + +} diff --git a/AppLcmProto3/proto3/models/category_ref.proto b/AppLcmProto3/proto3/models/category_ref.proto new file mode 100644 index 0000000..398f56c --- /dev/null +++ b/AppLcmProto3/proto3/models/category_ref.proto @@ -0,0 +1,32 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message CategoryRef { + + // Reference of the catalogue. + string href = 3211051; + + // Unique identifier of the category. + string id = 3355; + + // Name of the category. + string name = 3373707; + + // Category version. + string version = 351608024; + +} diff --git a/AppLcmProto3/proto3/models/change_state_to.proto b/AppLcmProto3/proto3/models/change_state_to.proto new file mode 100644 index 0000000..c9e5101 --- /dev/null +++ b/AppLcmProto3/proto3/models/change_state_to.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum ChangeStateTo { + STARTED_4 = 0; + STOPPED_4 = 1; +} diff --git a/AppLcmProto3/proto3/models/checksum_data.proto b/AppLcmProto3/proto3/models/checksum_data.proto new file mode 100644 index 0000000..03b4a52 --- /dev/null +++ b/AppLcmProto3/proto3/models/checksum_data.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ChecksumData { + + // Specifies the algorithm used to obtain the checksum value. See note. + string algorithm = 225490031; + + // Contains the result of applying the algorithm indicated by the algorithm attribute to the data to which this ChecksumData refers. + string hash = 3195150; + +} diff --git a/AppLcmProto3/proto3/models/civic_address_element.proto b/AppLcmProto3/proto3/models/civic_address_element.proto new file mode 100644 index 0000000..761ca4e --- /dev/null +++ b/AppLcmProto3/proto3/models/civic_address_element.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message CivicAddressElement { + + // 'Describe the content type of caValue. The value of caType shall comply with section 3.4 of IETF RFC 4776.' + int32 caType = 294735690; + + // 'Content of civic address element corresponding to the caType. The format caValue shall comply with section 3.4 of IETF RFC 4776.' + string caValue = 527998899; + +} diff --git a/AppLcmProto3/proto3/models/communication_interface.proto b/AppLcmProto3/proto3/models/communication_interface.proto new file mode 100644 index 0000000..b7b07f5 --- /dev/null +++ b/AppLcmProto3/proto3/models/communication_interface.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/ip_addresses.proto"; + +message CommunicationInterface { + + // Entry point information of the service as one or more pairs of IP address and port. + repeated IpAddresses ipAddresses = 41850312; + +} diff --git a/AppLcmProto3/proto3/models/config_platform_for_app_request.proto b/AppLcmProto3/proto3/models/config_platform_for_app_request.proto new file mode 100644 index 0000000..a750b1f --- /dev/null +++ b/AppLcmProto3/proto3/models/config_platform_for_app_request.proto @@ -0,0 +1,51 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_network_policy.proto"; +import public "models/dns_rule_descriptor.proto"; +import public "models/feature_dependency.proto"; +import public "models/latency_descriptor.proto"; +import public "models/service_dependency.proto"; +import public "models/service_descriptor.proto"; +import public "models/traffic_rule_descriptor.proto"; +import public "models/transport_dependency.proto"; +import public "models/user_context_transfer_capability.proto"; + +message ConfigPlatformForAppRequest { + + repeated ServiceDependency appServiceRequired = 199715094; + + repeated ServiceDependency appServiceOptional = 513837271; + + repeated ServiceDescriptor appServiceProduced = 125963514; + + repeated FeatureDependency appFeatureRequired = 11684950; + + repeated FeatureDependency appFeatureOptional = 325807127; + + repeated TransportDependency transportDependencies = 237579534; + + repeated TrafficRuleDescriptor appTrafficRule = 234628538; + + repeated DNSRuleDescriptor appDNSRule = 390231655; + + LatencyDescriptor appLatency = 12186527; + + UserContextTransferCapability userContextTransferCapability = 306228764; + + AppNetworkPolicy appNetworkPolicy = 351140772; + +} diff --git a/AppLcmProto3/proto3/models/connectivity_type.proto b/AppLcmProto3/proto3/models/connectivity_type.proto new file mode 100644 index 0000000..09bbcc1 --- /dev/null +++ b/AppLcmProto3/proto3/models/connectivity_type.proto @@ -0,0 +1,36 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ConnectivityType { + + // Specifies the protocols that the VL uses See note 1 and note 2. + enum LayerProtocolEnum { + ETHERNET = 0; + MPLS = 1; + ODU2 = 2; + IPV4 = 3; + IPV6 = 4; + PSEUDO_WIRE = 5; + ETC = 6; + } + + LayerProtocolEnum layerProtocol = 436659977; + + // Specifies the flow pattern of the connectivity (Line, Tree, Mesh, etc.). + string flowPattern = 159675011; + +} diff --git a/AppLcmProto3/proto3/models/create_app_instance_request.proto b/AppLcmProto3/proto3/models/create_app_instance_request.proto new file mode 100644 index 0000000..e1d72c7 --- /dev/null +++ b/AppLcmProto3/proto3/models/create_app_instance_request.proto @@ -0,0 +1,32 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/mep_information.proto"; + +message CreateAppInstanceRequest { + + // The application descriptor identifier. It is managed by the application provider to identify the application descriptor in a globally unique way. + string appDId = 337359172; + + // Human-readable description of the application instance to be created. + string appInstanceDescription = 52295612; + + // Human-readable name of the application instance to be created. + string appInstanceName = 340710785; + + MepInformation appPlacementInfo = 13769585; + +} diff --git a/AppLcmProto3/proto3/models/dns_rule_descriptor.proto b/AppLcmProto3/proto3/models/dns_rule_descriptor.proto new file mode 100644 index 0000000..800a5d8 --- /dev/null +++ b/AppLcmProto3/proto3/models/dns_rule_descriptor.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/ip_address_type.proto"; + +message DNSRuleDescriptor { + + // Identifies the DNS Rule + string dnsRuleId = 478543936; + + // FQDN of the DNS rule + string domainName = 170344083; + + // IP address given by the DNS rule + string ipAddress = 23420112; + + IpAddressType ipAddressType = 46674345; + + // Time-to-live value + int32 ttl = 115180; + +} diff --git a/AppLcmProto3/proto3/models/feature_dependency.proto b/AppLcmProto3/proto3/models/feature_dependency.proto new file mode 100644 index 0000000..f9d89bf --- /dev/null +++ b/AppLcmProto3/proto3/models/feature_dependency.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message FeatureDependency { + + // The name of the feature, for example, UserApps, UEIdentity, etc. + string featureName = 377160031; + + // The version of the feature. + string version = 351608024; + +} diff --git a/AppLcmProto3/proto3/models/file_storage_data.proto b/AppLcmProto3/proto3/models/file_storage_data.proto new file mode 100644 index 0000000..cb8fad3 --- /dev/null +++ b/AppLcmProto3/proto3/models/file_storage_data.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/vnf_virtual_link_desc.proto"; + +message FileStorageData { + + // Size of virtualised storage resource in GB. + float sizeOfStorage = 93418079; + + // The shared file system protocol (e.g. NFS, CIFS). + string fileSystemProtocol = 321732228; + + VnfVirtualLinkDesc intVirtualLinkDesc = 430588394; + +} diff --git a/AppLcmProto3/proto3/models/filter_type.proto b/AppLcmProto3/proto3/models/filter_type.proto new file mode 100644 index 0000000..e598a15 --- /dev/null +++ b/AppLcmProto3/proto3/models/filter_type.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum FilterType { + FLOW = 0; + PACKET = 1; +} diff --git a/AppLcmProto3/proto3/models/instantiate_app_request.proto b/AppLcmProto3/proto3/models/instantiate_app_request.proto new file mode 100644 index 0000000..096ca38 --- /dev/null +++ b/AppLcmProto3/proto3/models/instantiate_app_request.proto @@ -0,0 +1,47 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_term_cands_for_coord.proto"; +import public "models/location_constraints.proto"; +import public "models/mec_host_information.proto"; +import public "models/os_container_descriptor.proto"; +import public "models/vim_connection_info.proto"; +import public "models/virtual_compute_descriptor.proto"; +import public "models/virtual_storage_descriptor.proto"; + +message InstantiateAppRequest { + + LocationConstraints locationConstraints = 515491008; + + // Describes the information of selected host for the application instance. See note 2. + repeated MECHostInformation selectedMECHostInfo = 349742141; + + // 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. + repeated VimConnectionInfo vimConnectionInfo = 92542822; + + // 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. + repeated VirtualComputeDescriptor virtualComputeDescriptor = 284710718; + + // 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. + repeated OsContainerDescriptor osContainerDescriptor = 528520781; + + // Defines descriptors of virtual storage resources to be used by the application instance to be created. See note 1. + repeated VirtualStorageDescriptor virtualStorageDescriptor = 346033281; + + // 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. + repeated AppTermCandsForCoord appTermCandsForCoord = 96638979; + +} diff --git a/AppLcmProto3/proto3/models/instantiated_app_state.proto b/AppLcmProto3/proto3/models/instantiated_app_state.proto new file mode 100644 index 0000000..1f9fe7c --- /dev/null +++ b/AppLcmProto3/proto3/models/instantiated_app_state.proto @@ -0,0 +1,30 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/location_information.proto"; +import public "models/mcio_info.proto"; +import public "models/change_state_to.proto"; + +message InstantiatedAppState { + + ChangeStateTo operationalState = 102480931; + + LocationInformation appInstLocation = 476747557; + + // Information on the MCIO(s) representing application instance realized by one or a set of OS containers. See note 7. + repeated McioInfo mcioInfo = 156559373; + +} diff --git a/AppLcmProto3/proto3/models/instantiation_state.proto b/AppLcmProto3/proto3/models/instantiation_state.proto new file mode 100644 index 0000000..4becf56 --- /dev/null +++ b/AppLcmProto3/proto3/models/instantiation_state.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum InstantiationState { + NOT_INSTANTIATED_5 = 0; + INSTANTIATED = 1; +} diff --git a/AppLcmProto3/proto3/models/interface_descriptor.proto b/AppLcmProto3/proto3/models/interface_descriptor.proto new file mode 100644 index 0000000..66f307f --- /dev/null +++ b/AppLcmProto3/proto3/models/interface_descriptor.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/interface_type.proto"; +import public "models/tunnel_info.proto"; + +message InterfaceDescriptor { + + // If the interface type is IP, the destination address identifies the IP address of the destination. Only used for dstInterface. + string dstIPAddress = 303696043; + + // If the interface type is MAC, the destination address identifies the MAC address of the destination. Only used for dstInterface. + string dstMACAddress = 439157945; + + InterfaceType interfaceType = 516041747; + + // If the interface type is MAC, the source address identifies the MAC address of the interface. + string srcMACAddress = 190916442; + + TunnelInfo tunnelInfo = 458558157; + +} diff --git a/AppLcmProto3/proto3/models/interface_type.proto b/AppLcmProto3/proto3/models/interface_type.proto new file mode 100644 index 0000000..d5ed2b5 --- /dev/null +++ b/AppLcmProto3/proto3/models/interface_type.proto @@ -0,0 +1,22 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum InterfaceType { + TUNNEL = 0; + MAC = 1; + IP = 2; +} diff --git a/AppLcmProto3/proto3/models/ip_address_type.proto b/AppLcmProto3/proto3/models/ip_address_type.proto new file mode 100644 index 0000000..a4d29a9 --- /dev/null +++ b/AppLcmProto3/proto3/models/ip_address_type.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum IpAddressType { + V6 = 0; + V4 = 1; +} diff --git a/AppLcmProto3/proto3/models/ip_addresses.proto b/AppLcmProto3/proto3/models/ip_addresses.proto new file mode 100644 index 0000000..502c857 --- /dev/null +++ b/AppLcmProto3/proto3/models/ip_addresses.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message IpAddresses { + + // Host portion of the address. + string host = 3208616; + + // Port portion of the address. + int32 port = 3446913; + +} diff --git a/AppLcmProto3/proto3/models/key_value_pairs.proto b/AppLcmProto3/proto3/models/key_value_pairs.proto new file mode 100644 index 0000000..f4a6565 --- /dev/null +++ b/AppLcmProto3/proto3/models/key_value_pairs.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message KeyValuePairs { + + string key = 106079; + + string value = 111972721; + +} diff --git a/AppLcmProto3/proto3/models/latency_descriptor.proto b/AppLcmProto3/proto3/models/latency_descriptor.proto new file mode 100644 index 0000000..d2aa4cd --- /dev/null +++ b/AppLcmProto3/proto3/models/latency_descriptor.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message LatencyDescriptor { + + // The value of the maximum latency in nano seconds tolerated by the MEC application. See note. + int32 maxLatency = 53618428; + +} diff --git a/AppLcmProto3/proto3/models/link_type.proto b/AppLcmProto3/proto3/models/link_type.proto new file mode 100644 index 0000000..9f828ad --- /dev/null +++ b/AppLcmProto3/proto3/models/link_type.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message LinkType { + + // URI referring to a resource + string href = 3211051; + +} diff --git a/AppLcmProto3/proto3/models/links.proto b/AppLcmProto3/proto3/models/links.proto new file mode 100644 index 0000000..9dbb866 --- /dev/null +++ b/AppLcmProto3/proto3/models/links.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message Links { + + LinkType subscription = 341203229; + +} diff --git a/AppLcmProto3/proto3/models/location_constraints.proto b/AppLcmProto3/proto3/models/location_constraints.proto new file mode 100644 index 0000000..a2e416f --- /dev/null +++ b/AppLcmProto3/proto3/models/location_constraints.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/civic_address_element.proto"; + +message LocationConstraints { + + // The two-letter ISO 3166 country code in capital letters. See note. + string countryCode = 403325279; + + repeated CivicAddressElement civicAddressElement = 359220466; + + // 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. + string area = 3002509; + +} diff --git a/AppLcmProto3/proto3/models/location_information.proto b/AppLcmProto3/proto3/models/location_information.proto new file mode 100644 index 0000000..f67cdae --- /dev/null +++ b/AppLcmProto3/proto3/models/location_information.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/location_information_civic_address.proto"; + +message LocationInformation { + + // The two-letter ISO 3166 country code in capital letters where an instance is deployed. + string countryCode = 403325279; + + LocationInformationCivicAddress civicAddress = 531595607; + + // 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 + string geographicalPosition = 79150125; + +} diff --git a/AppLcmProto3/proto3/models/location_information_civic_address.proto b/AppLcmProto3/proto3/models/location_information_civic_address.proto new file mode 100644 index 0000000..8e8a111 --- /dev/null +++ b/AppLcmProto3/proto3/models/location_information_civic_address.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/civic_address_element.proto"; + +message LocationInformationCivicAddress { + + // Provides elements comprising a single civic address as described in section 3.4, with accompanying example in section 5 of IETF RFC 4776. + repeated CivicAddressElement civicAddressElement = 359220466; + +} diff --git a/AppLcmProto3/proto3/models/logical_node_requirements.proto b/AppLcmProto3/proto3/models/logical_node_requirements.proto new file mode 100644 index 0000000..2524171 --- /dev/null +++ b/AppLcmProto3/proto3/models/logical_node_requirements.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message LogicalNodeRequirements { + + // Identifies this set of logical node requirements + string id = 3355; + + // 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. + repeated string logicalNodeRequirementDetail = 330382346; + +} diff --git a/AppLcmProto3/proto3/models/max_number_of_impacted_instances.proto b/AppLcmProto3/proto3/models/max_number_of_impacted_instances.proto new file mode 100644 index 0000000..b1f24cf --- /dev/null +++ b/AppLcmProto3/proto3/models/max_number_of_impacted_instances.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message MaxNumberOfImpactedInstances { + + // Determines the size of the group for which the maxNumberOfImpactedInstances is specified. + int32 groupSize = 409275618; + + // The maximum number of instances that can be impacted simultaneously within the group of the specified size. + int32 maxNumberOfImpactedInstances = 28742796; + +} diff --git a/AppLcmProto3/proto3/models/mcio_info.proto b/AppLcmProto3/proto3/models/mcio_info.proto new file mode 100644 index 0000000..06c409e --- /dev/null +++ b/AppLcmProto3/proto3/models/mcio_info.proto @@ -0,0 +1,47 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message McioInfo { + + // Identifier of this MCIO, created by the CISM. + string mcioId = 5982347; + + // Human readable name of this MCIO. + string mcioName = 156696042; + + // Namespace of this MCIO + string mcioNamespace = 121080705; + + // Reference to the applicable Vdu information element in the VNFD. + string vduId = 112069378; + + // Identifier of the CISM managing this MCIO. + string cismId = 286436743; + + // The type of MCIO. See note 1. + string mcioType = 156897945; + + // Number of desired MCIO instances. + int32 desiredInstances = 333492988; + + // Number of available MCIO instances + int32 availableInstances = 45196727; + + // Additional information which is specific to the MCIO, its type, and which is available from the CISM. See note 2 + string additionalInfo = 437426828; + +} diff --git a/AppLcmProto3/proto3/models/mec_host_information.proto b/AppLcmProto3/proto3/models/mec_host_information.proto new file mode 100644 index 0000000..9a34bd3 --- /dev/null +++ b/AppLcmProto3/proto3/models/mec_host_information.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; + +message MECHostInformation { + + KeyValuePairs hostId = 137743135; + + // Human-readable name of MEC host. + string hostName = 300756909; + +} diff --git a/AppLcmProto3/proto3/models/mep_information.proto b/AppLcmProto3/proto3/models/mep_information.proto new file mode 100644 index 0000000..9f62dd3 --- /dev/null +++ b/AppLcmProto3/proto3/models/mep_information.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message MepInformation { + + // Deployment-specific identifier of MEC platform. + string mepId = 103782675; + + // Human-readable name of MEC platform + string mepName = 414181508; + +} diff --git a/AppLcmProto3/proto3/models/min_number_of_preserved_instances.proto b/AppLcmProto3/proto3/models/min_number_of_preserved_instances.proto new file mode 100644 index 0000000..67c70e3 --- /dev/null +++ b/AppLcmProto3/proto3/models/min_number_of_preserved_instances.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message MinNumberOfPreservedInstances { + + // When present, determines the size of the group for which the minNumberOfPreservedInstances is specified. Otherwise, the size is not limited. + int32 groupSize = 409275618; + + // The minimum number of instances which need to be preserved simultaneously within the group of the specified size. + int32 minNumberOfPreservedInstances = 9969448; + +} diff --git a/AppLcmProto3/proto3/models/monitoring_parameter.proto b/AppLcmProto3/proto3/models/monitoring_parameter.proto new file mode 100644 index 0000000..92a24da --- /dev/null +++ b/AppLcmProto3/proto3/models/monitoring_parameter.proto @@ -0,0 +1,32 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message MonitoringParameter { + + // Unique identifier of the monitoring parameter. + string monitoringParameterId = 369982780; + + // Human readable name of the monitoring parameter. + string name = 3373707; + + // Specifies the virtualised resource performance metric. + string performanceMetric = 26021379; + + // An attribute that describes the periodicity at which to collect the performance information. + string collectionPeriod = 316923396; + +} diff --git a/AppLcmProto3/proto3/models/nfvi_maintenance_info.proto b/AppLcmProto3/proto3/models/nfvi_maintenance_info.proto new file mode 100644 index 0000000..4e8822d --- /dev/null +++ b/AppLcmProto3/proto3/models/nfvi_maintenance_info.proto @@ -0,0 +1,47 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/max_number_of_impacted_instances.proto"; +import public "models/min_number_of_preserved_instances.proto"; + +message NfviMaintenanceInfo { + + // The minimum notification lead time requested for upcoming impact of the virtualised resource or their group. + float impactNotificationLeadTime = 253443258; + + // When set to True, it is requested that at the time of the notification of an upcoming change that is expected to have an impact on the VNF, virtualised resource(s) of the same characteristics as the impacted ones is/are provided to compensate for the impact. + bool isImpactMitigationRequested = 86005185; + + // Applicable to VirtualComputeDesc and VirtualStorageDesc. When present, specifies the allowed migration types in the order of preference in case of an impact starting with the most preferred type. For LIVE_MIGRATION, see note 1. + enum SupportedMigrationTypeEnum { + NO_MIGRATION = 0; + OFFLINE_MIGRATION = 1; + LIVE_MIGRATION = 2; + } + + SupportedMigrationTypeEnum supportedMigrationType = 125270503; + + // 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) + float maxUndetectableInterruptionTime = 181342039; + + // When present, it specifies the time required by the group to recover from an impact, thus, the minimum time requested between consecutive impacts of the group. (see note 2.) + float minRecoveryTimeBetweenImpacts = 110146394; + + MaxNumberOfImpactedInstances maxNumberOfImpactedInstances = 28742796; + + MinNumberOfPreservedInstances minNumberOfPreservedInstances = 9969448; + +} diff --git a/AppLcmProto3/proto3/models/notification_links.proto b/AppLcmProto3/proto3/models/notification_links.proto new file mode 100644 index 0000000..0bc68dc --- /dev/null +++ b/AppLcmProto3/proto3/models/notification_links.proto @@ -0,0 +1,25 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message NotificationLinks { + + LinkType subscription = 341203229; + + LinkType appInstance = 229294552; + +} diff --git a/AppLcmProto3/proto3/models/o_auth2_info.proto b/AppLcmProto3/proto3/models/o_auth2_info.proto new file mode 100644 index 0000000..265860f --- /dev/null +++ b/AppLcmProto3/proto3/models/o_auth2_info.proto @@ -0,0 +1,30 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message OAuth2Info { + + // \"List of supported OAuth 2.0 grant types.\\nEach entry shall be one of the following permitted values:\\nOAUTH2_AUTHORIZATION_CODE (Authorization code grant type)\\nOAUTH2_IMPLICIT_GRANT\\n \\t(Implicit grant type)\\nOAUTH2_RESOURCE_OWNER\\n\\t(Resource owner password credentials grant type) \\nOAUTH2_CLIENT_CREDENTIALS\\n\\t(Client credentials grant type)\\nOnly the value \\\"OAUTH2_CLIENT_CREDENTIALS\\\" is supported in the present document. \" + enum GrantTypesEnum { + SEE_DESCRIPTION = 0; + } + + GrantTypesEnum grantTypes = 303036606; + + // The token endpoint. Shall be present unless the grant type is OAUTH2_IMPLICIT_GRANT. + string tokenEndpoint = 117387951; + +} diff --git a/AppLcmProto3/proto3/models/object_storage_data.proto b/AppLcmProto3/proto3/models/object_storage_data.proto new file mode 100644 index 0000000..99a11dd --- /dev/null +++ b/AppLcmProto3/proto3/models/object_storage_data.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ObjectStorageData { + + // Max size of virtualised storage resource in GB. + float maxSizeOfStorage = 515704161; + +} diff --git a/AppLcmProto3/proto3/models/operate_app_request.proto b/AppLcmProto3/proto3/models/operate_app_request.proto new file mode 100644 index 0000000..96bf92d --- /dev/null +++ b/AppLcmProto3/proto3/models/operate_app_request.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/change_state_to.proto"; +import public "models/stop_type.proto"; + +message OperateAppRequest { + + ChangeStateTo changeStateTo = 345042206; + + // 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. + int32 gracefulStopTimeout = 275656969; + + StopType stopType = 104217183; + +} diff --git a/AppLcmProto3/proto3/models/operation_params.proto b/AppLcmProto3/proto3/models/operation_params.proto new file mode 100644 index 0000000..6860a52 --- /dev/null +++ b/AppLcmProto3/proto3/models/operation_params.proto @@ -0,0 +1,64 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_term_cands_for_coord.proto"; +import public "models/change_state_to.proto"; +import public "models/instantiate_app_request.proto"; +import public "models/location_constraints.proto"; +import public "models/mec_host_information.proto"; +import public "models/operate_app_request.proto"; +import public "models/os_container_descriptor.proto"; +import public "models/stop_type.proto"; +import public "models/terminate_app_request.proto"; +import public "models/vim_connection_info.proto"; +import public "models/virtual_compute_descriptor.proto"; +import public "models/virtual_storage_descriptor.proto"; + +message OperationParams { + + LocationConstraints locationConstraints = 515491008; + + // Describes the information of selected host for the application instance. See note 2. + repeated MECHostInformation selectedMECHostInfo = 349742141; + + // 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. + repeated VimConnectionInfo vimConnectionInfo = 92542822; + + // 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. + repeated VirtualComputeDescriptor virtualComputeDescriptor = 284710718; + + // 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. + repeated OsContainerDescriptor osContainerDescriptor = 528520781; + + // Defines descriptors of virtual storage resources to be used by the application instance to be created. See note 1. + repeated VirtualStorageDescriptor virtualStorageDescriptor = 346033281; + + // 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. + repeated AppTermCandsForCoord appTermCandsForCoord = 96638979; + + ChangeStateTo changeStateTo = 345042206; + + // 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. + int32 gracefulStopTimeout = 275656969; + + StopType stopType = 104217183; + + // 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. + int32 gracefulTerminationTimeout = 3307876; + + repeated StopType terminationType = 273262686; + +} diff --git a/AppLcmProto3/proto3/models/operation_state.proto b/AppLcmProto3/proto3/models/operation_state.proto new file mode 100644 index 0000000..77e5042 --- /dev/null +++ b/AppLcmProto3/proto3/models/operation_state.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum OperationState { + STARTING = 0; + PROCESSING = 1; + COMPLETED = 2; + FAILED = 3; + FAILED_TEMP = 4; +} diff --git a/AppLcmProto3/proto3/models/operation_types.proto b/AppLcmProto3/proto3/models/operation_types.proto new file mode 100644 index 0000000..d60545c --- /dev/null +++ b/AppLcmProto3/proto3/models/operation_types.proto @@ -0,0 +1,22 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum OperationTypes { + INSTANTIATE = 0; + OPERATE = 1; + TERMINATE = 2; +} diff --git a/AppLcmProto3/proto3/models/os_container_descriptor.proto b/AppLcmProto3/proto3/models/os_container_descriptor.proto new file mode 100644 index 0000000..2cc11e8 --- /dev/null +++ b/AppLcmProto3/proto3/models/os_container_descriptor.proto @@ -0,0 +1,67 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; +import public "models/monitoring_parameter.proto"; +import public "models/sw_image_desc.proto"; +import public "models/virtual_cpu_pinning_data.proto"; + +message OsContainerDescriptor { + + // Unique identifier of this OsContainerDesc in the VNFD. + string osContainerDescId = 283861225; + + // Human readable name of this OS container. + string name = 3373707; + + // Human readable description of this OS container. + string description = 113933319; + + // Number of CPU resources requested for the container (e.g. in milli-CPU-s). + int32 requestedCpuResources = 220532760; + + // Amount of memory resources requested for the container (e.g. in MB). + float requestedMemoryResources = 382519511; + + // Size of ephemeral storage resources requested for the container (e.g. in GB). + float requestedEphemeralStorageResources = 155608615; + + // An array of key-value pairs of extended resources required by the container see note. + repeated KeyValuePairs extendedResourceRequests = 442743117; + + // Number of CPU resources the container can maximally use (e.g. in milli-CPU). + int32 cpuResourceLimit = 246845318; + + // Amount of memory resources the container can maximally use (e.g. in MB). + float memoryResourceLimit = 338185423; + + // Size of ephemeral storage resources the container can maximally use (e.g. in GB). + float ephemeralStorageResourceLimit = 179231441; + + // Specifies HugePages resources requested for the container, which the container can maximally use. + map hugePageResources = 34406550; + + VirtualCpuPinningData cpuPinningRequirements = 144271412; + + SwImageDesc swImageDesc = 202180474; + + // 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. + string bootData = 401855935; + + // Specifies the virtualized resource related performance metrics on the OsContainerDesc level to be tracked by the VNFM. + repeated MonitoringParameter monitoringParameters = 161249200; + +} diff --git a/AppLcmProto3/proto3/models/problem_details.proto b/AppLcmProto3/proto3/models/problem_details.proto new file mode 100644 index 0000000..1f11e75 --- /dev/null +++ b/AppLcmProto3/proto3/models/problem_details.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ProblemDetails { + + // A human-readable explanation specific to this occurrence of the problem + string detail = 261482417; + + // A URI reference that identifies the specific occurrence of the problem + string instance = 18257046; + + // The HTTP status code for this occurrence of the problem + int32 status = 355610639; + + // A short, human-readable summary of the problem type + string title = 110371416; + + // A URI reference according to IETF RFC 3986 that identifies the problem type + string type = 3575610; + +} diff --git a/AppLcmProto3/proto3/models/qo_s.proto b/AppLcmProto3/proto3/models/qo_s.proto new file mode 100644 index 0000000..07374cc --- /dev/null +++ b/AppLcmProto3/proto3/models/qo_s.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message QoS { + + // Latency of the VL in milliseconds. + float latency = 46576386; + + // Packet delay variation of the VL in milliseconds. + float packetDelayVariation = 20616827; + + // Packet loss ratio of the VL in percentage. + float packetLossRatio = 63177475; + +} diff --git a/AppLcmProto3/proto3/models/requested_additional_capability_data.proto b/AppLcmProto3/proto3/models/requested_additional_capability_data.proto new file mode 100644 index 0000000..3ae93e7 --- /dev/null +++ b/AppLcmProto3/proto3/models/requested_additional_capability_data.proto @@ -0,0 +1,36 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; + +message RequestedAdditionalCapabilityData { + + // Specifies a requested additional capability for the VDU + string requestedAdditionalCapabilityName = 251694426; + + // Indicates whether the requested additional capability is mandatory for successful operation + bool supportMandatory = 89498316; + + // Specifies the minimum version of the requested additional capability + string minRequestedAdditionalCapabilityVersion = 367700901; + + // Specifies the preferred version of the requested additional capability + string preferredRequestedAdditionalCapabilityVersion = 210210575; + + // Specifies specific attributes, dependent on the requested additional capability type. + repeated KeyValuePairs targetPerformanceParameters = 226256172; + +} diff --git a/AppLcmProto3/proto3/models/security_info.proto b/AppLcmProto3/proto3/models/security_info.proto new file mode 100644 index 0000000..8d8714d --- /dev/null +++ b/AppLcmProto3/proto3/models/security_info.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/o_auth2_info.proto"; + +message SecurityInfo { + + OAuth2Info oAuth2Info = 137361497; + + // '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 TLSbased authorization defined for alternative transports (see ETSI GS MEC 009 [5] for more information).' + repeated string Left_ParenthesisextensionsRight_Parenthesis = 403455488; + +} diff --git a/AppLcmProto3/proto3/models/serializer_type.proto b/AppLcmProto3/proto3/models/serializer_type.proto new file mode 100644 index 0000000..7cbd2cd --- /dev/null +++ b/AppLcmProto3/proto3/models/serializer_type.proto @@ -0,0 +1,22 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum SerializerType { + JSON = 0; + XML = 1; + PROTOBUF3 = 2; +} diff --git a/AppLcmProto3/proto3/models/service_dependency.proto b/AppLcmProto3/proto3/models/service_dependency.proto new file mode 100644 index 0000000..77abb53 --- /dev/null +++ b/AppLcmProto3/proto3/models/service_dependency.proto @@ -0,0 +1,36 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/category_ref.proto"; +import public "models/transport_dependency.proto"; + +message ServiceDependency { + + // Requested permissions regarding the access of the application to the service. See clause 8.2 of ETSI GS MEC 009. The format of this attribute is left for the data model design stage. + repeated string requestedPermissions = 50377785; + + CategoryRef serCategory = 286031232; + + // The name of the service, for example, RNIS, LocationService, etc. + string serName = 372341518; + + // Indicates transport and serialization format dependencies of consuming the service. Defaults to REST + JSON if absent. See note. + repeated TransportDependency serTransportDependencies = 527834511; + + // The version of the service. + string version = 351608024; + +} diff --git a/AppLcmProto3/proto3/models/service_descriptor.proto b/AppLcmProto3/proto3/models/service_descriptor.proto new file mode 100644 index 0000000..8974844 --- /dev/null +++ b/AppLcmProto3/proto3/models/service_descriptor.proto @@ -0,0 +1,32 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/category_ref.proto"; +import public "models/transports_supported.proto"; + +message ServiceDescriptor { + + // The name of the service, for example, RNIS, LocationService, etc. + string serName = 372341518; + + CategoryRef serCategory = 286031232; + + // The version of the service. + string version = 351608024; + + repeated TransportsSupported transportsSupported = 392389276; + +} diff --git a/AppLcmProto3/proto3/models/stop_type.proto b/AppLcmProto3/proto3/models/stop_type.proto new file mode 100644 index 0000000..856de94 --- /dev/null +++ b/AppLcmProto3/proto3/models/stop_type.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum StopType { + FORCEFUL = 0; + GRACEFUL = 1; +} diff --git a/AppLcmProto3/proto3/models/sw_image_desc.proto b/AppLcmProto3/proto3/models/sw_image_desc.proto new file mode 100644 index 0000000..ebffd6e --- /dev/null +++ b/AppLcmProto3/proto3/models/sw_image_desc.proto @@ -0,0 +1,55 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/checksum_data.proto"; + +message SwImageDesc { + + // The identifier of this software image. + string id = 3355; + + // The name of this software image. + string name = 3373707; + + // The version of this software image. + string version = 351608024; + + ChecksumData checksum = 463166533; + + // The container format describes the container file format in which software image is provided. + string containerFormat = 35720152; + + // The disk format of a software image is the format of the underlying disk image. See note 1. + string diskFormat = 521631759; + + // 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. + float minDisk = 526561040; + + // 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. + float minRam = 319382; + + // The size of this software image file. See note 3. + float size = 3530753; + + SwImageDesc swImage = 223016620; + + // 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. + string operatingSystem = 102924594; + + // Specifies the virtualisation environments (e.g. hypervisor) compatible with this software image. + repeated string supportedVirtualisationEnvironment = 306169277; + +} diff --git a/AppLcmProto3/proto3/models/terminate_app_request.proto b/AppLcmProto3/proto3/models/terminate_app_request.proto new file mode 100644 index 0000000..dc0207d --- /dev/null +++ b/AppLcmProto3/proto3/models/terminate_app_request.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/stop_type.proto"; + +message TerminateAppRequest { + + // 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. + int32 gracefulTerminationTimeout = 3307876; + + StopType terminationType = 273262686; + +} diff --git a/AppLcmProto3/proto3/models/time_stamp.proto b/AppLcmProto3/proto3/models/time_stamp.proto new file mode 100644 index 0000000..6286f72 --- /dev/null +++ b/AppLcmProto3/proto3/models/time_stamp.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message TimeStamp { + + // The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. + int32 nanoSeconds = 46708012; + + // The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. + int32 seconds = 359484034; + +} diff --git a/AppLcmProto3/proto3/models/traffic_filter.proto b/AppLcmProto3/proto3/models/traffic_filter.proto new file mode 100644 index 0000000..a1493f2 --- /dev/null +++ b/AppLcmProto3/proto3/models/traffic_filter.proto @@ -0,0 +1,63 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message TrafficFilter { + + // Used to match all IPv4 packets that have the same DSCP. + int32 dSCP = 3061020; + + // A 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. + repeated string dstAddress = 407279216; + + // A port or a range of ports. + repeated string dstPort = 347416553; + + // Used for GTP tunnel based traffic rule. + repeated string dstTunnelPort = 320657582; + + // Specify the protocol of the traffic filter. + repeated string protocol = 452292969; + + // Used to match all packets that have the same QCI. + int32 qCI = 110743; + + // 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. + repeated string srcAddress = 240897392; + + // A port or a range of ports. + repeated string srcPort = 343000958; + + // Used for GTP tunnel based traffic rule. + repeated string srcTunnelAddress = 86899993; + + // Used for GTP tunnel based traffic rule. + repeated string srcTunnelPort = 32028174; + + // Used to match all IPv6 packets that have the same TC. + int32 tC = 3663; + + // Used for tag based traffic rule. + repeated string tag = 114586; + + // Used for GTP tunnel based traffic rule. + repeated string tgtTunnelAddress = 5196918; + + repeated string uri = 116076; + + repeated string packetLabel = 513464140; + +} diff --git a/AppLcmProto3/proto3/models/traffic_rule_descriptor.proto b/AppLcmProto3/proto3/models/traffic_rule_descriptor.proto new file mode 100644 index 0000000..d9ea271 --- /dev/null +++ b/AppLcmProto3/proto3/models/traffic_rule_descriptor.proto @@ -0,0 +1,40 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/action.proto"; +import public "models/filter_type.proto"; +import public "models/interface_descriptor.proto"; +import public "models/traffic_filter.proto"; + +message TrafficRuleDescriptor { + + Action action = 349209036; + + // Describes the destination interface information, . Some applications (e.g. inline/tap) _DECAPSULATED, FORWARD_ENCAPSULATED or PASSTHROUGH, one value shall be provided. If the action is onDUPLICATE_DECAPSULATED or DUPLICATE_ENCAPSULATED, two values shall be provided. See note 2. + repeated InterfaceDescriptor dstInterface = 181384437; + + FilterType filterType = 479309104; + + // 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. + int32 priority = 91719262; + + // The filter used to identify specific flow/packets that need to be handled by the MEC host. + repeated TrafficFilter trafficFilter = 511989803; + + // Identifies the traffic rule. + string trafficRuleId = 157373036; + +} diff --git a/AppLcmProto3/proto3/models/transport_dependency.proto b/AppLcmProto3/proto3/models/transport_dependency.proto new file mode 100644 index 0000000..0377ead --- /dev/null +++ b/AppLcmProto3/proto3/models/transport_dependency.proto @@ -0,0 +1,30 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/serializer_type.proto"; +import public "models/transport_descriptor.proto"; + +message TransportDependency { + + // Set of labels that allow to define groups of transport bindings. The mechanism of the grouping is defined below this table. + repeated string labels = 36675587; + + // Information about the serializers in this transport binding, as defined in the SerializerTypes type in ETSI GS MEC 011 [i.4]. Support for at least one of the entries is required in conjunction with the transport. + repeated SerializerType serializers = 283951841; + + TransportDescriptor transport = 516093738; + +} diff --git a/AppLcmProto3/proto3/models/transport_descriptor.proto b/AppLcmProto3/proto3/models/transport_descriptor.proto new file mode 100644 index 0000000..17ecc54 --- /dev/null +++ b/AppLcmProto3/proto3/models/transport_descriptor.proto @@ -0,0 +1,40 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/security_info.proto"; + +message TransportDescriptor { + + // The name of this transport. + string name = 3373707; + + // Human-readable description of this transport. + string description = 113933319; + + // The name of the protocol used. Shall be set to HTTP for a REST API. + string protocol = 452292969; + + SecurityInfo security = 412251969; + + string type = 3575610; + + // The version of the protocol used. + string version = 351608024; + + // Additional implementation specific details of the transport. + string implSpecificInfo = 109027520; + +} diff --git a/AppLcmProto3/proto3/models/transports_supported.proto b/AppLcmProto3/proto3/models/transports_supported.proto new file mode 100644 index 0000000..6bba150 --- /dev/null +++ b/AppLcmProto3/proto3/models/transports_supported.proto @@ -0,0 +1,27 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/serializer_type.proto"; +import public "models/transport_descriptor.proto"; + +message TransportsSupported { + + TransportDescriptor transport = 516093738; + + // Information about the serializers in this binding, as defined in the SerializerTypes type in ETSI GS MEC 011. + repeated SerializerType serializers = 283951841; + +} diff --git a/AppLcmProto3/proto3/models/tunnel_info.proto b/AppLcmProto3/proto3/models/tunnel_info.proto new file mode 100644 index 0000000..79bbe4f --- /dev/null +++ b/AppLcmProto3/proto3/models/tunnel_info.proto @@ -0,0 +1,31 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/tunnel_type.proto"; + +message TunnelInfo { + + // Destination address of the tunnel. + string tunnelDstAddress = 430153977; + + string tunnelSpecificData = 160961404; + + // Source address of the tunnel. + string tunnelSrcAddress = 263772153; + + TunnelType tunnelType = 458219585; + +} diff --git a/AppLcmProto3/proto3/models/tunnel_type.proto b/AppLcmProto3/proto3/models/tunnel_type.proto new file mode 100644 index 0000000..ee94e01 --- /dev/null +++ b/AppLcmProto3/proto3/models/tunnel_type.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum TunnelType { + GTP_U = 0; + GRE = 1; +} diff --git a/AppLcmProto3/proto3/models/user_context_transfer_capability.proto b/AppLcmProto3/proto3/models/user_context_transfer_capability.proto new file mode 100644 index 0000000..8313638 --- /dev/null +++ b/AppLcmProto3/proto3/models/user_context_transfer_capability.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message UserContextTransferCapability { + + bool statefulApplication = 286608798; + + bool userContextTransferSupport = 348003682; + +} diff --git a/AppLcmProto3/proto3/models/vim_connection_info.proto b/AppLcmProto3/proto3/models/vim_connection_info.proto new file mode 100644 index 0000000..99178fb --- /dev/null +++ b/AppLcmProto3/proto3/models/vim_connection_info.proto @@ -0,0 +1,36 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; + +message VimConnectionInfo { + + KeyValuePairs accessInfo = 68600784; + + KeyValuePairs extra = 96965648; + + // The identifier of the VIM Connection. This identifier is managed by the MEO. + string id = 3355; + + KeyValuePairs interfaceInfo = 515703175; + + // 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. + string vimId = 112210645; + + // 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. + string vimType = 460598900; + +} diff --git a/AppLcmProto3/proto3/models/virtual_compute_descriptor.proto b/AppLcmProto3/proto3/models/virtual_compute_descriptor.proto new file mode 100644 index 0000000..283a648 --- /dev/null +++ b/AppLcmProto3/proto3/models/virtual_compute_descriptor.proto @@ -0,0 +1,44 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/block_storage_data.proto"; +import public "models/logical_node_requirements.proto"; +import public "models/requested_additional_capability_data.proto"; +import public "models/virtual_cpu_data.proto"; +import public "models/virtual_memory_data.proto"; + +message VirtualComputeDescriptor { + + // Unique identifier of this VirtualComputeDesc in the VNFD. + string virtualComputeDescId = 124849833; + + // The logical node requirements. + repeated LogicalNodeRequirements logicalNode = 534614443; + + // 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. + repeated RequestedAdditionalCapabilityData requestAdditionalCapabilities = 387050772; + + // Specifies compute requirements. + repeated string computeRequirements = 117445017; + + VirtualMemoryData virtualMemory = 289543148; + + VirtualCpuData virtualCpu = 297044640; + + // The local or ephemeral disk(s) of the virtualised compute. See clause 7.1.9.4.3. + repeated BlockStorageData virtualDisk = 455269561; + +} diff --git a/AppLcmProto3/proto3/models/virtual_cpu_data.proto b/AppLcmProto3/proto3/models/virtual_cpu_data.proto new file mode 100644 index 0000000..7fe4126 --- /dev/null +++ b/AppLcmProto3/proto3/models/virtual_cpu_data.proto @@ -0,0 +1,39 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; +import public "models/virtual_cpu_pinning_data.proto"; + +message VirtualCpuData { + + // CPU architecture type. Examples are x86, ARM. + string cpuArchitecture = 291765478; + + // Number of virtual CPUs. + int32 numVirtualCpu = 241427141; + + // Minimum virtual CPU clock rate (e.g. in MHz). + float virtualCpuClock = 190675825; + + // The CPU core oversubscription policy, e.g. the relation of virtual CPU cores to physical CPU cores/threads. + string virtualCpuOversubscriptionPolicy = 309214339; + + // Array of key-value pair requirements on the Compute (CPU) for the VDU. + repeated KeyValuePairs vduCpuRequirements = 366499794; + + VirtualCpuPinningData virtualCpuPinning = 343263854; + +} diff --git a/AppLcmProto3/proto3/models/virtual_cpu_pinning_data.proto b/AppLcmProto3/proto3/models/virtual_cpu_pinning_data.proto new file mode 100644 index 0000000..4eec366 --- /dev/null +++ b/AppLcmProto3/proto3/models/virtual_cpu_pinning_data.proto @@ -0,0 +1,31 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message VirtualCpuPinningData { + + // Indicates the policy for CPU pinning. + enum VirtualCpuPinningPolicyEnum { + STATIC = 0; + DYNAMIC = 1; + } + + VirtualCpuPinningPolicyEnum virtualCpuPinningPolicy = 211166530; + + // List of rules that should be considered during the allocation of the virtual CPUs to logical CPUs in case of \"STATIC\" virtualCpuPinningPolicy. + repeated string virtualCpuPinningRule = 379174793; + +} diff --git a/AppLcmProto3/proto3/models/virtual_link_desc_flavour.proto b/AppLcmProto3/proto3/models/virtual_link_desc_flavour.proto new file mode 100644 index 0000000..929efc8 --- /dev/null +++ b/AppLcmProto3/proto3/models/virtual_link_desc_flavour.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/qo_s.proto"; + +message VirtualLinkDescFlavour { + + // Identifies a flavour within a VnfVirtualLinkDesc. + string flavourId = 517043477; + + QoS qos = 112149; + +} diff --git a/AppLcmProto3/proto3/models/virtual_memory_data.proto b/AppLcmProto3/proto3/models/virtual_memory_data.proto new file mode 100644 index 0000000..3b0e775 --- /dev/null +++ b/AppLcmProto3/proto3/models/virtual_memory_data.proto @@ -0,0 +1,36 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; + +message VirtualMemoryData { + + // Amount of virtual memory in MB. + float virtualMemSize = 385060331; + + // 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. + string virtualMemOversubscriptionPolicy = 237578262; + + // Array of key-value pair requirements on the memory for the VDU. + repeated KeyValuePairs vduMemRequirements = 271933317; + + // Specifies the memory allocation to be cognisant of the relevant process/core allocation. + bool numaEnabled = 9627943; + + // Specifies requirements on the huge pages resources for the virtual memory. + string hugePagesRequirements = 124971785; + +} diff --git a/AppLcmProto3/proto3/models/virtual_storage_descriptor.proto b/AppLcmProto3/proto3/models/virtual_storage_descriptor.proto new file mode 100644 index 0000000..0a7bbea --- /dev/null +++ b/AppLcmProto3/proto3/models/virtual_storage_descriptor.proto @@ -0,0 +1,47 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/block_storage_data.proto"; +import public "models/file_storage_data.proto"; +import public "models/nfvi_maintenance_info.proto"; +import public "models/object_storage_data.proto"; + +message VirtualStorageDescriptor { + + // Unique identifier of this VirtualStorageDesc in the VNFD. + string id = 3355; + + // Type of virtualised storage resource. + enum TypeOfStorageEnum { + BLOCK = 0; + OBJECT = 1; + FILE = 2; + } + + TypeOfStorageEnum typeOfStorage = 320663180; + + BlockStorageData blockStorageData = 376673800; + + ObjectStorageData objectStorageData = 502151164; + + FileStorageData fileStorageData = 500145579; + + NfviMaintenanceInfo nfviMaintenanceInfo = 376778873; + + // Indicates whether the virtual storage resource shall be instantiated per VNFC instance. + bool perVnfcInstance = 58016487; + +} diff --git a/AppLcmProto3/proto3/models/vnf_virtual_link_desc.proto b/AppLcmProto3/proto3/models/vnf_virtual_link_desc.proto new file mode 100644 index 0000000..8abba06 --- /dev/null +++ b/AppLcmProto3/proto3/models/vnf_virtual_link_desc.proto @@ -0,0 +1,51 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/connectivity_type.proto"; +import public "models/monitoring_parameter.proto"; +import public "models/nfvi_maintenance_info.proto"; +import public "models/virtual_link_desc_flavour.proto"; + +message VnfVirtualLinkDesc { + + // Unique identifier of this internal VLD in VNFD. + string virtualLinkDescId = 447465875; + + // Describes a specific flavour of the VL with specific bitrate requirements. + repeated VirtualLinkDescFlavour virtualLinkDescFlavour = 37410619; + + ConnectivityType connectivityType = 453097874; + + // Specifies test access facilities expected on the VL. + repeated string testAccess = 122531992; + + // Provides human-readable information on the purpose of the VL. + string description = 113933319; + + // Specifies the virtualised resource related performance metrics on VLD level to be tracked by the VNFM. + repeated MonitoringParameter monitoringParameter = 254574658; + + NfviMaintenanceInfo nfviMaintenanceInfo = 376778873; + + // Specifies the intent of the VNF designer with respect to the internal VL instances created from this descriptor being externally managed. + enum ExternallyManagedEnum { + REQUIRED = 0; + ALLOWED = 1; + } + + ExternallyManagedEnum externallyManaged = 51289628; + +} diff --git a/AppLcmProto3/proto3/services/app_lcm_notifications_service.proto b/AppLcmProto3/proto3/services/app_lcm_notifications_service.proto new file mode 100644 index 0000000..b56e067 --- /dev/null +++ b/AppLcmProto3/proto3/services/app_lcm_notifications_service.proto @@ -0,0 +1,74 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102.services.applcmnotificationsservice; + +import "google/protobuf/empty.proto"; +import public "models/app_inst_id_creation_subscription_info.proto"; +import public "models/app_inst_id_creation_subscription_request.proto"; +import public "models/app_inst_id_deletion_subscription_info.proto"; +import public "models/app_inst_id_deletion_subscription_request.proto"; +import public "models/app_inst_notification.proto"; +import public "models/app_inst_subscription_info.proto"; +import public "models/app_inst_subscription_request.proto"; +import public "models/app_instance_identifier_creation_notification.proto"; +import public "models/app_instance_identifier_deletion_notification.proto"; +import public "models/app_instance_subscription_link_list.proto"; +import public "models/app_instance_subscription_type.proto"; +import public "models/app_lcm_op_occ_notification.proto"; +import public "models/app_lcm_op_occ_subscription_info.proto"; +import public "models/app_lcm_op_occ_subscription_request.proto"; +import public "models/problem_details.proto"; + +service AppLcmNotificationsService { + rpc AppInstNotificationPOST (AppInstNotificationPOSTRequest) returns (google.protobuf.Empty); + + rpc AppLcmSubscriptionsGET (AppLcmSubscriptionsGETRequest) returns (AppInstanceSubscriptionLinkList); + + rpc AppLcmSubscriptionsPOST (AppLcmSubscriptionsPOSTRequest) returns (AppInstSubscriptionRequest); + + rpc IndividualSubscriptionDELETE (IndividualSubscriptionDELETERequest) returns (google.protobuf.Empty); + + rpc IndividualSubscriptionGET (IndividualSubscriptionGETRequest) returns (AppInstSubscriptionInfo); + +} + +message AppInstNotificationPOSTRequest { + AppInstNotification appInstNotification = 1; + +} + +message AppLcmSubscriptionsGETRequest { + // Query parameter to filter on a specific subscription type. + AppInstanceSubscriptionType subscriptionType = 1; + +} + +message AppLcmSubscriptionsPOSTRequest { + AppInstSubscriptionRequest appInstSubscriptionRequest = 1; + +} + +message IndividualSubscriptionDELETERequest { + // Represents an individual subscription to notification related to an application instance + string subscriptionId = 1; + +} + +message IndividualSubscriptionGETRequest { + // Represents an individual subscription to notification related to an application instance + AppInstSubscriptionInfo appInstSubscriptionInfo = 1; + +} + diff --git a/AppLcmProto3/proto3/services/app_lcm_service.proto b/AppLcmProto3/proto3/services/app_lcm_service.proto new file mode 100644 index 0000000..c1603a5 --- /dev/null +++ b/AppLcmProto3/proto3/services/app_lcm_service.proto @@ -0,0 +1,163 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102.services.applcmservice; + +import "google/protobuf/empty.proto"; +import public "models/app_instance_info.proto"; +import public "models/app_lcm_op_occ.proto"; +import public "models/config_platform_for_app_request.proto"; +import public "models/create_app_instance_request.proto"; +import public "models/instantiate_app_request.proto"; +import public "models/operate_app_request.proto"; +import public "models/problem_details.proto"; +import public "models/terminate_app_request.proto"; + +service AppLcmService { + rpc AppInstanceGET (AppInstanceGETRequest) returns (AppInstanceGETResponse); + + rpc AppInstanceIdDELETE (AppInstanceIdDELETERequest) returns (google.protobuf.Empty); + + rpc AppInstanceIdGET (AppInstanceIdGETRequest) returns (AppInstanceInfo); + + rpc AppInstancePOST (AppInstancePOSTRequest) returns (AppInstanceInfo); + + rpc AppInstancesConfigPlatformPOST (AppInstancesConfigPlatformPOSTRequest) returns (google.protobuf.Empty); + + rpc AppLcmCancelPOST (AppLcmCancelPOSTRequest) returns (google.protobuf.Empty); + + rpc AppLcmFailPOST (AppLcmFailPOSTRequest) returns (AppLcmOpOcc); + + rpc AppLcmInstanciatePOST (AppLcmInstanciatePOSTRequest) returns (google.protobuf.Empty); + + rpc AppLcmOpOccsGET (AppLcmOpOccsGETRequest) returns (AppLcmOpOccsGETResponse); + + rpc AppLcmOpOccsbyIdGET (AppLcmOpOccsbyIdGETRequest) returns (AppLcmOpOcc); + + rpc AppLcmOperatePOST (AppLcmOperatePOSTRequest) returns (google.protobuf.Empty); + + rpc AppLcmRetryPOST (AppLcmRetryPOSTRequest) returns (google.protobuf.Empty); + + rpc AppLcmTerminatePOST (AppLcmTerminatePOSTRequest) returns (google.protobuf.Empty); + +} + +message AppInstanceGETRequest { + // Attribute-based filtering parameters according to ETSI GS MEC 009 + string filter = 1; + // Include all complex attributes in the response. + string allFields = 2; + // Complex attributes of AppPkgInfo to be included into the response + string fields = 3; + // Complex attributes of AppPkgInfo to be excluded from the response. + string excludeFields = 4; + // Indicates to exclude the following complex attributes of AppPkgInfo from the response. + string excludeDefault = 5; + +} + +message AppInstanceGETResponse { + repeated AppInstanceInfo data = 1; +} + +message AppInstanceIdDELETERequest { + // Identifier of an individual application instance + string appInstanceId = 1; + +} + +message AppInstanceIdGETRequest { + // Identifier of an individual application instance + string appInstanceId = 1; + +} + +message AppInstancePOSTRequest { + // The POST method is used to create an application instance resource. + CreateAppInstanceRequest createAppInstanceRequest = 1; + +} + +message AppInstancesConfigPlatformPOSTRequest { + // The identifier of the application instance. + string appInstanceId = 1; + // The message content in the request contains the information necessary to provide configuration information in AppD + ConfigPlatformForAppRequest configPlatformForAppRequest = 2; + +} + +message AppLcmCancelPOSTRequest { + // Identifies an individual application LCM operation occurrence + string appLcmOpOccId = 1; + string body = 2; + +} + +message AppLcmFailPOSTRequest { + // Identifies an individual application LCM operation occurrence + string appLcmOpOccId = 1; + +} + +message AppLcmInstanciatePOSTRequest { + // Identifier of an individual application instance + string appInstanceId = 1; + InstantiateAppRequest instantiateAppRequest = 2; + +} + +message AppLcmOpOccsGETRequest { + // Attribute-based filtering parameters according to ETSI GS MEC 009 + string filter = 1; + // Include all complex attributes in the response. + string allFields = 2; + // Complex attributes of AppLcmOpOcc to be excluded from the response. + string fields = 3; + // Complex attributes of AppLcmOpOcc to be excluded from the response. + string excludeFields = 4; + // Indicates to exclude the following complex attributes of AppLcmOpOcc from the response. + string excludeDefault = 5; + +} + +message AppLcmOpOccsGETResponse { + repeated AppLcmOpOcc data = 1; +} + +message AppLcmOpOccsbyIdGETRequest { + // Identifies an individual application LCM operation occurrence + string appLcmOpOccId = 1; + +} + +message AppLcmOperatePOSTRequest { + // Identifier of an individual application instance + string appInstanceId = 1; + OperateAppRequest operateAppRequest = 2; + +} + +message AppLcmRetryPOSTRequest { + // Identifies an individual application LCM operation occurrence + string appLcmOpOccId = 1; + +} + +message AppLcmTerminatePOSTRequest { + // Identifier of an individual application instance + string appInstanceId = 1; + TerminateAppRequest terminateAppRequest = 2; + +} + -- GitLab From 16faa1a6c25f3f6cca17017d6210af3068e08e95 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Tue, 13 Jun 2023 16:39:49 +0500 Subject: [PATCH 33/50] add proto3 descriptors for AppPkgMgmt API --- .../proto3/.openapi-generator-ignore | 23 ++ .../proto3/.openapi-generator/FILES | 70 +++++ .../proto3/.openapi-generator/VERSION | 1 + AppPkgMgmtProto3/proto3/README.md | 32 +++ AppPkgMgmtProto3/proto3/models/action.proto | 25 ++ .../models/additional_service_data.proto | 26 ++ AppPkgMgmtProto3/proto3/models/app_d.proto | 118 +++++++++ .../proto3/models/app_external_cpd.proto | 31 +++ .../proto3/models/app_pkg_filter.proto | 49 ++++ .../proto3/models/app_pkg_info.proto | 71 +++++ .../proto3/models/app_pkg_info_links.proto | 29 +++ .../models/app_pkg_info_modifications.proto | 23 ++ .../proto3/models/app_pkg_notification.proto | 44 ++++ .../models/app_pkg_notification_links.proto | 23 ++ .../models/app_pkg_notification_type.proto | 23 ++ .../proto3/models/app_pkg_subscription.proto | 30 +++ .../models/app_pkg_subscription_info.proto | 32 +++ .../app_pkg_subscription_info_links.proto | 23 ++ .../app_pkg_subscription_link_list.proto | 23 ++ ...app_pkg_subscription_link_list_links.proto | 26 ++ .../models/app_pkg_subscription_type.proto | 22 ++ .../proto3/models/block_storage_data.proto | 33 +++ .../proto3/models/category_ref.proto | 32 +++ .../change_app_instance_state_op_config.proto | 29 +++ AppPkgMgmtProto3/proto3/models/checksum.proto | 26 ++ .../proto3/models/checksum_data.proto | 26 ++ .../proto3/models/create_app_pkg.proto | 38 +++ .../proto3/models/dns_rule_descriptor.proto | 35 +++ .../proto3/models/feature_dependency.proto | 26 ++ .../proto3/models/filter_type.proto | 21 ++ .../proto3/models/interface_descriptor.proto | 35 +++ .../proto3/models/interface_type.proto | 22 ++ .../proto3/models/ip_address_type.proto | 21 ++ .../proto3/models/key_value_pairs.proto | 24 ++ .../proto3/models/latency_descriptor.proto | 23 ++ .../proto3/models/link_type.proto | 23 ++ .../models/logical_node_requirements.proto | 26 ++ .../models/mcio_constraint_params.proto | 28 ++ .../models/mcio_identification_data.proto | 26 ++ .../proto3/models/monitoring_parameter.proto | 32 +++ .../proto3/models/o_auth2_info.proto | 30 +++ .../proto3/models/onboarding_state.proto | 23 ++ .../proto3/models/operational_state.proto | 21 ++ .../models/os_container_descriptor.proto | 70 +++++ .../proto3/models/problem_details.proto | 35 +++ ...requested_additional_capability_data.proto | 35 +++ .../proto3/models/security_info.proto | 26 ++ .../proto3/models/serializer_type.proto | 22 ++ .../proto3/models/service_dependency.proto | 36 +++ .../proto3/models/service_descriptor.proto | 32 +++ .../proto3/models/service_port_data.proto | 38 +++ .../subscriptions_app_pkg_subscription.proto | 26 ++ .../proto3/models/sw_image_desc.proto | 55 ++++ .../proto3/models/sw_image_descriptor.proto | 58 +++++ .../terminate_app_instance_op_config.proto | 29 +++ .../proto3/models/time_stamp.proto | 26 ++ .../proto3/models/traffic_filter.proto | 63 +++++ .../models/traffic_rule_descriptor.proto | 40 +++ .../proto3/models/transport_dependency.proto | 30 +++ .../proto3/models/transport_descriptor.proto | 40 +++ .../proto3/models/transports_supported.proto | 27 ++ .../proto3/models/tunnel_info.proto | 31 +++ .../proto3/models/tunnel_type.proto | 21 ++ .../proto3/models/usage_state.proto | 21 ++ AppPkgMgmtProto3/proto3/models/version.proto | 29 +++ .../models/virtual_compute_descriptor.proto | 41 +++ .../proto3/models/virtual_cpu_data.proto | 39 +++ .../models/virtual_cpu_pinning_data.proto | 31 +++ .../proto3/models/virtual_memory_data.proto | 36 +++ ...rtual_network_interface_requirements.proto | 36 +++ .../app_pkgm_notifications_service.proto | 31 +++ .../proto3/services/app_pkgm_service.proto | 243 ++++++++++++++++++ 72 files changed, 2591 insertions(+) create mode 100644 AppPkgMgmtProto3/proto3/.openapi-generator-ignore create mode 100644 AppPkgMgmtProto3/proto3/.openapi-generator/FILES create mode 100644 AppPkgMgmtProto3/proto3/.openapi-generator/VERSION create mode 100644 AppPkgMgmtProto3/proto3/README.md create mode 100644 AppPkgMgmtProto3/proto3/models/action.proto create mode 100644 AppPkgMgmtProto3/proto3/models/additional_service_data.proto create mode 100644 AppPkgMgmtProto3/proto3/models/app_d.proto create mode 100644 AppPkgMgmtProto3/proto3/models/app_external_cpd.proto create mode 100644 AppPkgMgmtProto3/proto3/models/app_pkg_filter.proto create mode 100644 AppPkgMgmtProto3/proto3/models/app_pkg_info.proto create mode 100644 AppPkgMgmtProto3/proto3/models/app_pkg_info_links.proto create mode 100644 AppPkgMgmtProto3/proto3/models/app_pkg_info_modifications.proto create mode 100644 AppPkgMgmtProto3/proto3/models/app_pkg_notification.proto create mode 100644 AppPkgMgmtProto3/proto3/models/app_pkg_notification_links.proto create mode 100644 AppPkgMgmtProto3/proto3/models/app_pkg_notification_type.proto create mode 100644 AppPkgMgmtProto3/proto3/models/app_pkg_subscription.proto create mode 100644 AppPkgMgmtProto3/proto3/models/app_pkg_subscription_info.proto create mode 100644 AppPkgMgmtProto3/proto3/models/app_pkg_subscription_info_links.proto create mode 100644 AppPkgMgmtProto3/proto3/models/app_pkg_subscription_link_list.proto create mode 100644 AppPkgMgmtProto3/proto3/models/app_pkg_subscription_link_list_links.proto create mode 100644 AppPkgMgmtProto3/proto3/models/app_pkg_subscription_type.proto create mode 100644 AppPkgMgmtProto3/proto3/models/block_storage_data.proto create mode 100644 AppPkgMgmtProto3/proto3/models/category_ref.proto create mode 100644 AppPkgMgmtProto3/proto3/models/change_app_instance_state_op_config.proto create mode 100644 AppPkgMgmtProto3/proto3/models/checksum.proto create mode 100644 AppPkgMgmtProto3/proto3/models/checksum_data.proto create mode 100644 AppPkgMgmtProto3/proto3/models/create_app_pkg.proto create mode 100644 AppPkgMgmtProto3/proto3/models/dns_rule_descriptor.proto create mode 100644 AppPkgMgmtProto3/proto3/models/feature_dependency.proto create mode 100644 AppPkgMgmtProto3/proto3/models/filter_type.proto create mode 100644 AppPkgMgmtProto3/proto3/models/interface_descriptor.proto create mode 100644 AppPkgMgmtProto3/proto3/models/interface_type.proto create mode 100644 AppPkgMgmtProto3/proto3/models/ip_address_type.proto create mode 100644 AppPkgMgmtProto3/proto3/models/key_value_pairs.proto create mode 100644 AppPkgMgmtProto3/proto3/models/latency_descriptor.proto create mode 100644 AppPkgMgmtProto3/proto3/models/link_type.proto create mode 100644 AppPkgMgmtProto3/proto3/models/logical_node_requirements.proto create mode 100644 AppPkgMgmtProto3/proto3/models/mcio_constraint_params.proto create mode 100644 AppPkgMgmtProto3/proto3/models/mcio_identification_data.proto create mode 100644 AppPkgMgmtProto3/proto3/models/monitoring_parameter.proto create mode 100644 AppPkgMgmtProto3/proto3/models/o_auth2_info.proto create mode 100644 AppPkgMgmtProto3/proto3/models/onboarding_state.proto create mode 100644 AppPkgMgmtProto3/proto3/models/operational_state.proto create mode 100644 AppPkgMgmtProto3/proto3/models/os_container_descriptor.proto create mode 100644 AppPkgMgmtProto3/proto3/models/problem_details.proto create mode 100644 AppPkgMgmtProto3/proto3/models/requested_additional_capability_data.proto create mode 100644 AppPkgMgmtProto3/proto3/models/security_info.proto create mode 100644 AppPkgMgmtProto3/proto3/models/serializer_type.proto create mode 100644 AppPkgMgmtProto3/proto3/models/service_dependency.proto create mode 100644 AppPkgMgmtProto3/proto3/models/service_descriptor.proto create mode 100644 AppPkgMgmtProto3/proto3/models/service_port_data.proto create mode 100644 AppPkgMgmtProto3/proto3/models/subscriptions_app_pkg_subscription.proto create mode 100644 AppPkgMgmtProto3/proto3/models/sw_image_desc.proto create mode 100644 AppPkgMgmtProto3/proto3/models/sw_image_descriptor.proto create mode 100644 AppPkgMgmtProto3/proto3/models/terminate_app_instance_op_config.proto create mode 100644 AppPkgMgmtProto3/proto3/models/time_stamp.proto create mode 100644 AppPkgMgmtProto3/proto3/models/traffic_filter.proto create mode 100644 AppPkgMgmtProto3/proto3/models/traffic_rule_descriptor.proto create mode 100644 AppPkgMgmtProto3/proto3/models/transport_dependency.proto create mode 100644 AppPkgMgmtProto3/proto3/models/transport_descriptor.proto create mode 100644 AppPkgMgmtProto3/proto3/models/transports_supported.proto create mode 100644 AppPkgMgmtProto3/proto3/models/tunnel_info.proto create mode 100644 AppPkgMgmtProto3/proto3/models/tunnel_type.proto create mode 100644 AppPkgMgmtProto3/proto3/models/usage_state.proto create mode 100644 AppPkgMgmtProto3/proto3/models/version.proto create mode 100644 AppPkgMgmtProto3/proto3/models/virtual_compute_descriptor.proto create mode 100644 AppPkgMgmtProto3/proto3/models/virtual_cpu_data.proto create mode 100644 AppPkgMgmtProto3/proto3/models/virtual_cpu_pinning_data.proto create mode 100644 AppPkgMgmtProto3/proto3/models/virtual_memory_data.proto create mode 100644 AppPkgMgmtProto3/proto3/models/virtual_network_interface_requirements.proto create mode 100644 AppPkgMgmtProto3/proto3/services/app_pkgm_notifications_service.proto create mode 100644 AppPkgMgmtProto3/proto3/services/app_pkgm_service.proto diff --git a/AppPkgMgmtProto3/proto3/.openapi-generator-ignore b/AppPkgMgmtProto3/proto3/.openapi-generator-ignore new file mode 100644 index 0000000..7484ee5 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/AppPkgMgmtProto3/proto3/.openapi-generator/FILES b/AppPkgMgmtProto3/proto3/.openapi-generator/FILES new file mode 100644 index 0000000..e551fcf --- /dev/null +++ b/AppPkgMgmtProto3/proto3/.openapi-generator/FILES @@ -0,0 +1,70 @@ +.openapi-generator-ignore +README.md +models/action.proto +models/additional_service_data.proto +models/app_d.proto +models/app_external_cpd.proto +models/app_pkg_filter.proto +models/app_pkg_info.proto +models/app_pkg_info_links.proto +models/app_pkg_info_modifications.proto +models/app_pkg_notification.proto +models/app_pkg_notification_links.proto +models/app_pkg_notification_type.proto +models/app_pkg_subscription.proto +models/app_pkg_subscription_info.proto +models/app_pkg_subscription_info_links.proto +models/app_pkg_subscription_link_list.proto +models/app_pkg_subscription_link_list_links.proto +models/app_pkg_subscription_type.proto +models/block_storage_data.proto +models/category_ref.proto +models/change_app_instance_state_op_config.proto +models/checksum.proto +models/checksum_data.proto +models/create_app_pkg.proto +models/dns_rule_descriptor.proto +models/feature_dependency.proto +models/filter_type.proto +models/interface_descriptor.proto +models/interface_type.proto +models/ip_address_type.proto +models/key_value_pairs.proto +models/latency_descriptor.proto +models/link_type.proto +models/logical_node_requirements.proto +models/mcio_constraint_params.proto +models/mcio_identification_data.proto +models/monitoring_parameter.proto +models/o_auth2_info.proto +models/onboarding_state.proto +models/operational_state.proto +models/os_container_descriptor.proto +models/problem_details.proto +models/requested_additional_capability_data.proto +models/security_info.proto +models/serializer_type.proto +models/service_dependency.proto +models/service_descriptor.proto +models/service_port_data.proto +models/subscriptions_app_pkg_subscription.proto +models/sw_image_desc.proto +models/sw_image_descriptor.proto +models/terminate_app_instance_op_config.proto +models/time_stamp.proto +models/traffic_filter.proto +models/traffic_rule_descriptor.proto +models/transport_dependency.proto +models/transport_descriptor.proto +models/transports_supported.proto +models/tunnel_info.proto +models/tunnel_type.proto +models/usage_state.proto +models/version.proto +models/virtual_compute_descriptor.proto +models/virtual_cpu_data.proto +models/virtual_cpu_pinning_data.proto +models/virtual_memory_data.proto +models/virtual_network_interface_requirements.proto +services/app_pkgm_notifications_service.proto +services/app_pkgm_service.proto diff --git a/AppPkgMgmtProto3/proto3/.openapi-generator/VERSION b/AppPkgMgmtProto3/proto3/.openapi-generator/VERSION new file mode 100644 index 0000000..1e20ec3 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.4.0 \ No newline at end of file diff --git a/AppPkgMgmtProto3/proto3/README.md b/AppPkgMgmtProto3/proto3/README.md new file mode 100644 index 0000000..4cae1e5 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/README.md @@ -0,0 +1,32 @@ +# gPRC for mec0102 + +ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + +## Overview +These files were generated by the [OpenAPI Generator](https://openapi-generator.tech) project. + +- API version: 3.1.1 +- Package version: +- Build package: org.openapitools.codegen.languages.ProtobufSchemaCodegen +For more information, please visit [https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api](https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api) + +## Usage + +Below are some usage examples for Go and Ruby. For other languages, please refer to https://grpc.io/docs/quickstart/. + +### Go +``` +# assuming `protoc-gen-go` has been installed with `go get -u github.com/golang/protobuf/protoc-gen-go` +mkdir /var/tmp/go/ +protoc --go_out=/var/tmp/go/ services/* +protoc --go_out=/var/tmp/go/ models/* +``` + +### Ruby +``` +# assuming `grpc_tools_ruby_protoc` has been installed via `gem install grpc-tools` +RUBY_OUTPUT_DIR="/var/tmp/ruby/mec0102" +mkdir $RUBY_OUTPUT_DIR +grpc_tools_ruby_protoc --ruby_out=$RUBY_OUTPUT_DIR --grpc_out=$RUBY_OUTPUT_DIR/lib services/* +grpc_tools_ruby_protoc --ruby_out=$RUBY_OUTPUT_DIR --grpc_out=$RUBY_OUTPUT_DIR/lib models/* +``` diff --git a/AppPkgMgmtProto3/proto3/models/action.proto b/AppPkgMgmtProto3/proto3/models/action.proto new file mode 100644 index 0000000..cf7c167 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/action.proto @@ -0,0 +1,25 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum Action { + DROP = 0; + FORWARD_DECAPSULATED = 1; + FORWARD_ENCAPSULATED = 2; + PASSTHROUGH = 3; + DUPLICATE_DECAPSULATED = 4; + DUPLICATE_ENCAPSULATED = 5; +} diff --git a/AppPkgMgmtProto3/proto3/models/additional_service_data.proto b/AppPkgMgmtProto3/proto3/models/additional_service_data.proto new file mode 100644 index 0000000..97eaab4 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/additional_service_data.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/service_port_data.proto"; + +message AdditionalServiceData { + + repeated ServicePortData portData = 191026124; + + // Service matching information exposed by the VirtualCp. See note. + string serviceData = 318257156; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_d.proto b/AppPkgMgmtProto3/proto3/models/app_d.proto new file mode 100644 index 0000000..3b9f065 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_d.proto @@ -0,0 +1,118 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_external_cpd.proto"; +import public "models/change_app_instance_state_op_config.proto"; +import public "models/dns_rule_descriptor.proto"; +import public "models/feature_dependency.proto"; +import public "models/latency_descriptor.proto"; +import public "models/logical_node_requirements.proto"; +import public "models/mcio_constraint_params.proto"; +import public "models/mcio_identification_data.proto"; +import public "models/os_container_descriptor.proto"; +import public "models/requested_additional_capability_data.proto"; +import public "models/service_dependency.proto"; +import public "models/service_descriptor.proto"; +import public "models/sw_image_descriptor.proto"; +import public "models/terminate_app_instance_op_config.proto"; +import public "models/traffic_rule_descriptor.proto"; +import public "models/transport_dependency.proto"; +import public "models/virtual_compute_descriptor.proto"; + +message AppD { + + // Identifier of this MEC application descriptor. This attribute shall be globally unique. See note 1. + string appDId = 337359172; + + // Describes DNS rules the MEC application requires. + repeated DNSRuleDescriptor appDNSRule = 390231655; + + // The logical node requirements. See note 6 and note 7. + repeated LogicalNodeRequirements logicalNode = 534614443; + + // 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. + repeated RequestedAdditionalCapabilityData requestAdditionalCapabilities = 387050772; + + // 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. + repeated McioConstraintParams mcioConstraintParams = 119651105; + + // Identifies the version of the application descriptor. + string appDVersion = 414673174; + + // Human readable description of the MEC application. + string appDescription = 145998621; + + // Describes external interface(s) exposed by this MEC application. See note 4. + repeated AppExternalCpd appExtCpd = 29018425; + + // Describes features a MEC application may use if available. + repeated FeatureDependency appFeatureOptional = 325807127; + + // Describes features a MEC application requires to run. + repeated FeatureDependency appFeatureRequired = 11684950; + + // Human readable name for the MEC application. + string appInfoName = 388790683; + + LatencyDescriptor appLatency = 12186527; + + // Name to identify the MEC application. + string appName = 257265589; + + // Provider of the application and of the AppD. + string appProvider = 239586510; + + // Describes services a MEC application may use if available. + repeated ServiceDependency appServiceOptional = 513837271; + + // Describes services a MEC application is able to produce to the platform or other MEC applications. Only relevant for service-producing apps. + repeated ServiceDescriptor appServiceProduced = 125963514; + + // Describes services a MEC application requires to run. + repeated ServiceDependency appServiceRequired = 199715094; + + // Identifies the version of software of the MEC application. + string appSoftVersion = 462216301; + + // 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. + string mciopId = 351454960; + + // 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. + repeated McioIdentificationData mcioIdentificationData = 61394540; + + // Describes traffic rules the MEC application requires. + repeated TrafficRuleDescriptor appTrafficRule = 234628538; + + ChangeAppInstanceStateOpConfig changeAppInstanceStateOpConfig = 55744975; + + // 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. + repeated string mecVersion = 109511822; + + // Describes the descriptors of the software image to be used by the virtualisation container used to realize this MEC application. See note 5. + repeated SwImageDescriptor swImageDescriptor = 44906537; + + TerminateAppInstanceOpConfig terminateAppInstanceOpConfig = 386907050; + + // 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. + repeated TransportDependency transportDependencies = 237579534; + + // 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. + repeated VirtualComputeDescriptor virtualComputeDescriptor = 284710718; + + // 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. + repeated OsContainerDescriptor osContainerDescriptor = 528520781; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_external_cpd.proto b/AppPkgMgmtProto3/proto3/models/app_external_cpd.proto new file mode 100644 index 0000000..28cd02b --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_external_cpd.proto @@ -0,0 +1,31 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/additional_service_data.proto"; +import public "models/virtual_network_interface_requirements.proto"; + +message AppExternalCpd { + + // All attributes inherited from Cpd. See note 2. + string inheritedAttributes = 295143377; + + // Specifies requirements on a virtual network interface realizing the CPs instantiated from this CPD. See note 1. + repeated VirtualNetworkInterfaceRequirements virtualNetworkInterfaceRequirements = 388670342; + + // 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]. + repeated AdditionalServiceData additionalServiceData = 69883561; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_filter.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_filter.proto new file mode 100644 index 0000000..b3ea14c --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_filter.proto @@ -0,0 +1,49 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/operational_state.proto"; + +message AppPkgFilter { + + // 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. + string appPkgInfoId = 443648567; + + // 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. + string appDId = 337359172; + + // Match the provider's name of the onboarded application. + string appProvider = 239586510; + + // Match the name of the onboarded application. + string appName = 257265589; + + // Match the software version of the application package. + string appSoftwareVersion = 202051794; + + // Match the version of the application descriptor. + string appDVersion = 414673174; + + OperationalState operationalState = 102480931; + + // Match particular usage state of the application package. 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. + enum UsageStateEnum { + IN_USE = 0; + NOT_IN_USE = 1; + } + + UsageStateEnum usageState = 161238163; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_info.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_info.proto new file mode 100644 index 0000000..dc6eddf --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_info.proto @@ -0,0 +1,71 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_pkg_info_links.proto"; +import public "models/checksum.proto"; +import public "models/key_value_pairs.proto"; +import public "models/onboarding_state.proto"; +import public "models/operational_state.proto"; +import public "models/problem_details.proto"; +import public "models/usage_state.proto"; + +message AppPkgInfo { + + // Identifier of the onboarded application package. + string id = 3355; + + // Identifier of this MEC application descriptor. This attribute shall be globally unique. + string appDId = 337359172; + + // Provider of the application and of the AppD. + string appProvider = 239586510; + + // Name to identify the MEC application. + string appName = 257265589; + + // Software version of the application. This is updated when there is any change to the software in the onboarded application package. + string appSoftwareVersion = 202051794; + + // Identifies the version of the application descriptor. + string appDVersion = 414673174; + + Checksum checksum = 463166533; + + // The singleton signing certificate if it is included as a file in the AppD archive. + string signingCertificate = 239894703; + + // Information of application software image in application package. Type is TBD. See note 1. + repeated string softwareImages = 372852994; + + // Additional information of application package artifacts that are not application software images. Type is TBD. See note 2. + repeated string additionalArtifacts = 455665542; + + OnboardingState onboardingState = 259377355; + + OperationalState operationalState = 102480931; + + UsageState usageState = 161238163; + + // The MEC version that compatible with this application. This information is copied from the AppD. + repeated string mecInfo = 402039066; + + ProblemDetails onBoardingFailureDetails = 439209075; + + KeyValuePairs userDefinedData = 402101384; + + AppPkgInfoLinks links = 102977465; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_info_links.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_info_links.proto new file mode 100644 index 0000000..61d9b74 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_info_links.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message AppPkgInfoLinks { + + LinkType self = 3526476; + + LinkType appD = 3000899; + + LinkType appPkgContent = 125657589; + + LinkType vnfPkgInfo = 145681396; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_info_modifications.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_info_modifications.proto new file mode 100644 index 0000000..a0cfbce --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_info_modifications.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/operational_state.proto"; + +message AppPkgInfoModifications { + + OperationalState OperationalState = 408385540; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_notification.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_notification.proto new file mode 100644 index 0000000..e27dcc0 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_notification.proto @@ -0,0 +1,44 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_pkg_notification_links.proto"; +import public "models/app_pkg_notification_type.proto"; +import public "models/operational_state.proto"; +import public "models/time_stamp.proto"; + +message AppPkgNotification { + + // 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. + string id = 3355; + + AppPkgNotificationType notificationType = 925384; + + // Identifier of the subscription related to this notification. + string subscriptionId = 405049114; + + TimeStamp timeStamp = 25573622; + + // Identifier of the onboarded application package. + string appPkgId = 79968872; + + // Identifier of this MEC application descriptor. This attribute shall be globally unique. + string appDId = 337359172; + + OperationalState operationalState = 102480931; + + AppPkgNotificationLinks links = 102977465; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_notification_links.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_notification_links.proto new file mode 100644 index 0000000..8e6afde --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_notification_links.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message AppPkgNotificationLinks { + + LinkType subscription = 341203229; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_notification_type.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_notification_type.proto new file mode 100644 index 0000000..8cdcb87 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_notification_type.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum AppPkgNotificationType { + APPPACKAGEONBOARDED = 0; + APPPACAKGEENABLED = 1; + APPPACAKGEDISABLED = 2; + APPPACKAGEDELETED = 3; +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_subscription.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription.proto new file mode 100644 index 0000000..2879f9c --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription.proto @@ -0,0 +1,30 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_pkg_filter.proto"; +import public "models/app_pkg_subscription_type.proto"; + +message AppPkgSubscription { + + // The URI of the endpoint for the notification to be sent to. + string callbackUri = 259033834; + + AppPkgSubscriptionType subscriptionType = 515734025; + + // The attribute-based filter is to filter application packages on which the query applies + repeated AppPkgFilter appPkgFilter = 353327942; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_info.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_info.proto new file mode 100644 index 0000000..2c457a8 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_info.proto @@ -0,0 +1,32 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_pkg_subscription_info_links.proto"; +import public "models/app_pkg_subscription_type.proto"; + +message AppPkgSubscriptionInfo { + + // Identifier of the subscription to application package notification. + string id = 3355; + + AppPkgSubscriptionType subscriptionType = 515734025; + + // The URI of the endpoint for the notification to be sent to. + string callbackUri = 259033834; + + AppPkgSubscriptionInfoLinks links = 102977465; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_info_links.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_info_links.proto new file mode 100644 index 0000000..d74f318 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_info_links.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message AppPkgSubscriptionInfoLinks { + + LinkType self = 3526476; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_link_list.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_link_list.proto new file mode 100644 index 0000000..f09a997 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_link_list.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_pkg_subscription_link_list_links.proto"; + +message AppPkgSubscriptionLinkList { + + AppPkgSubscriptionLinkListLinks links = 102977465; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_link_list_links.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_link_list_links.proto new file mode 100644 index 0000000..85f8a03 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_link_list_links.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; +import public "models/subscriptions_app_pkg_subscription.proto"; + +message AppPkgSubscriptionLinkListLinks { + + LinkType self = 3526476; + + repeated SubscriptionsAppPkgSubscription subscriptions = 376752889; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_type.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_type.proto new file mode 100644 index 0000000..e660141 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_type.proto @@ -0,0 +1,22 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum AppPkgSubscriptionType { + APPPACKAGEONBOARDINGSUBSCRIPTION = 0; + APPPACKAGECHANGESUBSCRIPTION = 1; + APPPACKAGEDELETIONSUBSCRIPTION = 2; +} diff --git a/AppPkgMgmtProto3/proto3/models/block_storage_data.proto b/AppPkgMgmtProto3/proto3/models/block_storage_data.proto new file mode 100644 index 0000000..f2537fd --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/block_storage_data.proto @@ -0,0 +1,33 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; +import public "models/sw_image_desc.proto"; + +message BlockStorageData { + + // Size of virtualised storage resource in GB. + float sizeOfStorage = 93418079; + + // An array of key-value pairs that articulate the storage deployment requirements. + repeated KeyValuePairs vduStorageRequirements = 425848926; + + // Indicate if the storage support RDMA. + bool rdmaEnabled = 457519388; + + SwImageDesc swImageDesc = 202180474; + +} diff --git a/AppPkgMgmtProto3/proto3/models/category_ref.proto b/AppPkgMgmtProto3/proto3/models/category_ref.proto new file mode 100644 index 0000000..398f56c --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/category_ref.proto @@ -0,0 +1,32 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message CategoryRef { + + // Reference of the catalogue. + string href = 3211051; + + // Unique identifier of the category. + string id = 3355; + + // Name of the category. + string name = 3373707; + + // Category version. + string version = 351608024; + +} diff --git a/AppPkgMgmtProto3/proto3/models/change_app_instance_state_op_config.proto b/AppPkgMgmtProto3/proto3/models/change_app_instance_state_op_config.proto new file mode 100644 index 0000000..8fe6140 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/change_app_instance_state_op_config.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ChangeAppInstanceStateOpConfig { + + // Minimum timeout value for graceful stop of a VNF instance. + float minGracefulStopTimeout = 209921209; + + // 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. + float maxRecommendedGracefulStopTimeout = 181741791; + + // Array of KVP requirements for VNF-specific parameters to be passed when invoking the OperateVnf operation. See note. + repeated string parameter = 343847852; + +} diff --git a/AppPkgMgmtProto3/proto3/models/checksum.proto b/AppPkgMgmtProto3/proto3/models/checksum.proto new file mode 100644 index 0000000..12b6771 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/checksum.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message Checksum { + + // Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512. + string algorithm = 225490031; + + // 'String 1 The hexadecimal value of the checksum' + string hash = 3195150; + +} diff --git a/AppPkgMgmtProto3/proto3/models/checksum_data.proto b/AppPkgMgmtProto3/proto3/models/checksum_data.proto new file mode 100644 index 0000000..061ac79 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/checksum_data.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ChecksumData { + + // Specifies the algorithm used to obtain the checksum value see note. + string algorithm = 225490031; + + // Contains the result of applying the algorithm indicated by the algorithm attribute to the data to which this ChecksumData refers. + string hash = 3195150; + +} diff --git a/AppPkgMgmtProto3/proto3/models/create_app_pkg.proto b/AppPkgMgmtProto3/proto3/models/create_app_pkg.proto new file mode 100644 index 0000000..7169e33 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/create_app_pkg.proto @@ -0,0 +1,38 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/checksum.proto"; +import public "models/key_value_pairs.proto"; + +message CreateAppPkg { + + // Name of the application package to be onboarded. + string appPkgName = 77693207; + + // Address information of the application package. See note. + string appPkgPath = 77753009; + + // Version of the application package to be onboarded.The appPkgName with appPkgVersion can be used to uniquely identify the application package. + string appPkgVersion = 348161648; + + // The provider's name of the application package to be onboarded. + string appProvider = 239586510; + + Checksum checksum = 463166533; + + KeyValuePairs userDefinedData = 402101384; + +} diff --git a/AppPkgMgmtProto3/proto3/models/dns_rule_descriptor.proto b/AppPkgMgmtProto3/proto3/models/dns_rule_descriptor.proto new file mode 100644 index 0000000..800a5d8 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/dns_rule_descriptor.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/ip_address_type.proto"; + +message DNSRuleDescriptor { + + // Identifies the DNS Rule + string dnsRuleId = 478543936; + + // FQDN of the DNS rule + string domainName = 170344083; + + // IP address given by the DNS rule + string ipAddress = 23420112; + + IpAddressType ipAddressType = 46674345; + + // Time-to-live value + int32 ttl = 115180; + +} diff --git a/AppPkgMgmtProto3/proto3/models/feature_dependency.proto b/AppPkgMgmtProto3/proto3/models/feature_dependency.proto new file mode 100644 index 0000000..f9d89bf --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/feature_dependency.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message FeatureDependency { + + // The name of the feature, for example, UserApps, UEIdentity, etc. + string featureName = 377160031; + + // The version of the feature. + string version = 351608024; + +} diff --git a/AppPkgMgmtProto3/proto3/models/filter_type.proto b/AppPkgMgmtProto3/proto3/models/filter_type.proto new file mode 100644 index 0000000..e598a15 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/filter_type.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum FilterType { + FLOW = 0; + PACKET = 1; +} diff --git a/AppPkgMgmtProto3/proto3/models/interface_descriptor.proto b/AppPkgMgmtProto3/proto3/models/interface_descriptor.proto new file mode 100644 index 0000000..66f307f --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/interface_descriptor.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/interface_type.proto"; +import public "models/tunnel_info.proto"; + +message InterfaceDescriptor { + + // If the interface type is IP, the destination address identifies the IP address of the destination. Only used for dstInterface. + string dstIPAddress = 303696043; + + // If the interface type is MAC, the destination address identifies the MAC address of the destination. Only used for dstInterface. + string dstMACAddress = 439157945; + + InterfaceType interfaceType = 516041747; + + // If the interface type is MAC, the source address identifies the MAC address of the interface. + string srcMACAddress = 190916442; + + TunnelInfo tunnelInfo = 458558157; + +} diff --git a/AppPkgMgmtProto3/proto3/models/interface_type.proto b/AppPkgMgmtProto3/proto3/models/interface_type.proto new file mode 100644 index 0000000..d5ed2b5 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/interface_type.proto @@ -0,0 +1,22 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum InterfaceType { + TUNNEL = 0; + MAC = 1; + IP = 2; +} diff --git a/AppPkgMgmtProto3/proto3/models/ip_address_type.proto b/AppPkgMgmtProto3/proto3/models/ip_address_type.proto new file mode 100644 index 0000000..a4d29a9 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/ip_address_type.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum IpAddressType { + V6 = 0; + V4 = 1; +} diff --git a/AppPkgMgmtProto3/proto3/models/key_value_pairs.proto b/AppPkgMgmtProto3/proto3/models/key_value_pairs.proto new file mode 100644 index 0000000..f4a6565 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/key_value_pairs.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message KeyValuePairs { + + string key = 106079; + + string value = 111972721; + +} diff --git a/AppPkgMgmtProto3/proto3/models/latency_descriptor.proto b/AppPkgMgmtProto3/proto3/models/latency_descriptor.proto new file mode 100644 index 0000000..d2aa4cd --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/latency_descriptor.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message LatencyDescriptor { + + // The value of the maximum latency in nano seconds tolerated by the MEC application. See note. + int32 maxLatency = 53618428; + +} diff --git a/AppPkgMgmtProto3/proto3/models/link_type.proto b/AppPkgMgmtProto3/proto3/models/link_type.proto new file mode 100644 index 0000000..9f828ad --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/link_type.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message LinkType { + + // URI referring to a resource + string href = 3211051; + +} diff --git a/AppPkgMgmtProto3/proto3/models/logical_node_requirements.proto b/AppPkgMgmtProto3/proto3/models/logical_node_requirements.proto new file mode 100644 index 0000000..9673ae9 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/logical_node_requirements.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message LogicalNodeRequirements { + + // Identifies this set of logical node requirements + string id = 3355; + + // 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. + repeated string logicalNodeRequirementDetail = 330382346; + +} diff --git a/AppPkgMgmtProto3/proto3/models/mcio_constraint_params.proto b/AppPkgMgmtProto3/proto3/models/mcio_constraint_params.proto new file mode 100644 index 0000000..2754979 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/mcio_constraint_params.proto @@ -0,0 +1,28 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum McioConstraintParams { + LOCALAFFINITYCISNODE = 0; + NODEADDITIONALCAPABILITYSSD = 1; + NODEADDITIONALCAPABILITYDPDK = 2; + NODEADDITIONALCAPABILITYSRIOV = 3; + NODEADDITIONALCAPABILITYGPU = 4; + NODEADDITIONALCAPABILITYFPGA = 5; + NODEADDITIONALCAPABILITYCPUPIN = 6; + NODECAPABILITYLOGICALNUMA = 7; + NODEPOOL = 8; +} diff --git a/AppPkgMgmtProto3/proto3/models/mcio_identification_data.proto b/AppPkgMgmtProto3/proto3/models/mcio_identification_data.proto new file mode 100644 index 0000000..a748d13 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/mcio_identification_data.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message McioIdentificationData { + + // The name of the mcio. See note 1. + string name = 3373707; + + // The type of the mcio. See note 2. + string type = 3575610; + +} diff --git a/AppPkgMgmtProto3/proto3/models/monitoring_parameter.proto b/AppPkgMgmtProto3/proto3/models/monitoring_parameter.proto new file mode 100644 index 0000000..92a24da --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/monitoring_parameter.proto @@ -0,0 +1,32 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message MonitoringParameter { + + // Unique identifier of the monitoring parameter. + string monitoringParameterId = 369982780; + + // Human readable name of the monitoring parameter. + string name = 3373707; + + // Specifies the virtualised resource performance metric. + string performanceMetric = 26021379; + + // An attribute that describes the periodicity at which to collect the performance information. + string collectionPeriod = 316923396; + +} diff --git a/AppPkgMgmtProto3/proto3/models/o_auth2_info.proto b/AppPkgMgmtProto3/proto3/models/o_auth2_info.proto new file mode 100644 index 0000000..265860f --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/o_auth2_info.proto @@ -0,0 +1,30 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message OAuth2Info { + + // \"List of supported OAuth 2.0 grant types.\\nEach entry shall be one of the following permitted values:\\nOAUTH2_AUTHORIZATION_CODE (Authorization code grant type)\\nOAUTH2_IMPLICIT_GRANT\\n \\t(Implicit grant type)\\nOAUTH2_RESOURCE_OWNER\\n\\t(Resource owner password credentials grant type) \\nOAUTH2_CLIENT_CREDENTIALS\\n\\t(Client credentials grant type)\\nOnly the value \\\"OAUTH2_CLIENT_CREDENTIALS\\\" is supported in the present document. \" + enum GrantTypesEnum { + SEE_DESCRIPTION = 0; + } + + GrantTypesEnum grantTypes = 303036606; + + // The token endpoint. Shall be present unless the grant type is OAUTH2_IMPLICIT_GRANT. + string tokenEndpoint = 117387951; + +} diff --git a/AppPkgMgmtProto3/proto3/models/onboarding_state.proto b/AppPkgMgmtProto3/proto3/models/onboarding_state.proto new file mode 100644 index 0000000..e2b5085 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/onboarding_state.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum OnboardingState { + CREATED = 0; + UPLOADING = 1; + PROCESSING = 2; + ONBOARDED = 3; +} diff --git a/AppPkgMgmtProto3/proto3/models/operational_state.proto b/AppPkgMgmtProto3/proto3/models/operational_state.proto new file mode 100644 index 0000000..069ee4b --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/operational_state.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum OperationalState { + DISABLED = 0; + ENABLED = 1; +} diff --git a/AppPkgMgmtProto3/proto3/models/os_container_descriptor.proto b/AppPkgMgmtProto3/proto3/models/os_container_descriptor.proto new file mode 100644 index 0000000..8a62d7e --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/os_container_descriptor.proto @@ -0,0 +1,70 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; +import public "models/monitoring_parameter.proto"; +import public "models/sw_image_desc.proto"; +import public "models/virtual_cpu_pinning_data.proto"; + +message OsContainerDescriptor { + + // Unique identifier of this OsContainerDesc in the VNFD. + string osContainerDescId = 283861225; + + // Human readable name of this OS container. + string name = 3373707; + + // Human readable description of this OS container. + string description = 113933319; + + // Number of CPU resources requested for the container (e.g. in milli-CPU-s). + int32 requestedCpuResources = 220532760; + + // Amount of memory resources requested for the container (e.g. in MB). + float requestedMemoryResources = 382519511; + + // Size of ephemeral storage resources requested for the container (e.g. in GB). + float requestedEphemeralStorageResources = 155608615; + + // An array of key-value pairs of extended resources required by the container see note. + repeated KeyValuePairs extendedResourceRequests = 442743117; + + // See note. + string additionalProperties = 276929725; + + // Number of CPU resources the container can maximally use (e.g. in milli-CPU). + int32 cpuResourceLimit = 246845318; + + // Amount of memory resources the container can maximally use (e.g. in MB). + float memoryResourceLimit = 338185423; + + // Size of ephemeral storage resources the container can maximally use (e.g. in GB). + float ephemeralStorageResourceLimit = 179231441; + + // Specifies HugePages resources requested for the container, which the container can maximally use. + map hugePageResources = 34406550; + + VirtualCpuPinningData cpuPinningRequirements = 144271412; + + SwImageDesc swImageDesc = 202180474; + + // 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. + string bootData = 401855935; + + // Specifies the virtualized resource related performance metrics on the OsContainerDesc level to be tracked by the VNFM. + repeated MonitoringParameter monitoringParameters = 161249200; + +} diff --git a/AppPkgMgmtProto3/proto3/models/problem_details.proto b/AppPkgMgmtProto3/proto3/models/problem_details.proto new file mode 100644 index 0000000..1f11e75 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/problem_details.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ProblemDetails { + + // A human-readable explanation specific to this occurrence of the problem + string detail = 261482417; + + // A URI reference that identifies the specific occurrence of the problem + string instance = 18257046; + + // The HTTP status code for this occurrence of the problem + int32 status = 355610639; + + // A short, human-readable summary of the problem type + string title = 110371416; + + // A URI reference according to IETF RFC 3986 that identifies the problem type + string type = 3575610; + +} diff --git a/AppPkgMgmtProto3/proto3/models/requested_additional_capability_data.proto b/AppPkgMgmtProto3/proto3/models/requested_additional_capability_data.proto new file mode 100644 index 0000000..e4466a5 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/requested_additional_capability_data.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; + +message RequestedAdditionalCapabilityData { + + // Specifies a requested additional capability for the VDU + string requestedAdditionalCapabilityName = 251694426; + + // Indicates whether the requested additional capability is mandatory for successful operation + bool supportMandatory = 89498316; + + // Specifies the minimum version of the requested additional capability + string minRequestedAdditionalCapabilityVersion = 367700901; + + // Specifies the preferred version of the requested additional capability + string preferredRequestedAdditionalCapabilityVersion = 210210575; + + repeated KeyValuePairs targetPerformanceParameters = 226256172; + +} diff --git a/AppPkgMgmtProto3/proto3/models/security_info.proto b/AppPkgMgmtProto3/proto3/models/security_info.proto new file mode 100644 index 0000000..8d8714d --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/security_info.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/o_auth2_info.proto"; + +message SecurityInfo { + + OAuth2Info oAuth2Info = 137361497; + + // '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 TLSbased authorization defined for alternative transports (see ETSI GS MEC 009 [5] for more information).' + repeated string Left_ParenthesisextensionsRight_Parenthesis = 403455488; + +} diff --git a/AppPkgMgmtProto3/proto3/models/serializer_type.proto b/AppPkgMgmtProto3/proto3/models/serializer_type.proto new file mode 100644 index 0000000..7cbd2cd --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/serializer_type.proto @@ -0,0 +1,22 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum SerializerType { + JSON = 0; + XML = 1; + PROTOBUF3 = 2; +} diff --git a/AppPkgMgmtProto3/proto3/models/service_dependency.proto b/AppPkgMgmtProto3/proto3/models/service_dependency.proto new file mode 100644 index 0000000..77abb53 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/service_dependency.proto @@ -0,0 +1,36 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/category_ref.proto"; +import public "models/transport_dependency.proto"; + +message ServiceDependency { + + // Requested permissions regarding the access of the application to the service. See clause 8.2 of ETSI GS MEC 009. The format of this attribute is left for the data model design stage. + repeated string requestedPermissions = 50377785; + + CategoryRef serCategory = 286031232; + + // The name of the service, for example, RNIS, LocationService, etc. + string serName = 372341518; + + // Indicates transport and serialization format dependencies of consuming the service. Defaults to REST + JSON if absent. See note. + repeated TransportDependency serTransportDependencies = 527834511; + + // The version of the service. + string version = 351608024; + +} diff --git a/AppPkgMgmtProto3/proto3/models/service_descriptor.proto b/AppPkgMgmtProto3/proto3/models/service_descriptor.proto new file mode 100644 index 0000000..8974844 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/service_descriptor.proto @@ -0,0 +1,32 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/category_ref.proto"; +import public "models/transports_supported.proto"; + +message ServiceDescriptor { + + // The name of the service, for example, RNIS, LocationService, etc. + string serName = 372341518; + + CategoryRef serCategory = 286031232; + + // The version of the service. + string version = 351608024; + + repeated TransportsSupported transportsSupported = 392389276; + +} diff --git a/AppPkgMgmtProto3/proto3/models/service_port_data.proto b/AppPkgMgmtProto3/proto3/models/service_port_data.proto new file mode 100644 index 0000000..8e0f7cd --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/service_port_data.proto @@ -0,0 +1,38 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ServicePortData { + + // The name of the port exposed by the VirtualCp. + string name = 3373707; + + // The L4 protocol for this port exposed by the VirtualCp. + enum ProtocolEnum { + TCP = 0; + UDP = 1; + SCTP = 2; + } + + ProtocolEnum protocol = 452292969; + + // The L4 port number exposed by the VirtualCp. + int32 port = 3446913; + + // Specifies whether the port attribute value is allowed to be configurable. + bool portConfigurable = 39204265; + +} diff --git a/AppPkgMgmtProto3/proto3/models/subscriptions_app_pkg_subscription.proto b/AppPkgMgmtProto3/proto3/models/subscriptions_app_pkg_subscription.proto new file mode 100644 index 0000000..a1fa43e --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/subscriptions_app_pkg_subscription.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_pkg_subscription_type.proto"; + +message SubscriptionsAppPkgSubscription { + + // The URI referring to the subscription. + string href = 3211051; + + AppPkgSubscriptionType subscriptionType = 515734025; + +} diff --git a/AppPkgMgmtProto3/proto3/models/sw_image_desc.proto b/AppPkgMgmtProto3/proto3/models/sw_image_desc.proto new file mode 100644 index 0000000..9e4f568 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/sw_image_desc.proto @@ -0,0 +1,55 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/checksum_data.proto"; + +message SwImageDesc { + + // The identifier of this software image. + string id = 3355; + + // The name of this software image. + string name = 3373707; + + // The version of this software image. + string version = 351608024; + + ChecksumData checksum = 463166533; + + // The container format describes the container file format in which software image is provided. + string containerFormat = 35720152; + + // The disk format of a software image is the format of the underlying disk image. See note 1 + string diskFormat = 521631759; + + // 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 + float minDisk = 526561040; + + // 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 + float minRam = 319382; + + // The size of this software image file. See note 3 + float size = 3530753; + + SwImageDesc swImage = 223016620; + + // 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. + string operatingSystem = 102924594; + + // Specifies the virtualisation environments (e.g. hypervisor) compatible with this software image. + repeated string supportedVirtualisationEnvironment = 306169277; + +} diff --git a/AppPkgMgmtProto3/proto3/models/sw_image_descriptor.proto b/AppPkgMgmtProto3/proto3/models/sw_image_descriptor.proto new file mode 100644 index 0000000..314fe6b --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/sw_image_descriptor.proto @@ -0,0 +1,58 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/checksum_data.proto"; +import public "models/sw_image_desc.proto"; +import public "models/version.proto"; + +message SwImageDescriptor { + + // The identifier of this software image. + string id = 3355; + + // The name of this software image. + string name = 3373707; + + // The version of this software image. + repeated Version version = 351608024; + + ChecksumData checksum = 463166533; + + // The container format describes the container file format in which software image is provided. + string containerFormat = 35720152; + + // The disk format of a software image is the format of the underlying disk image. See note 1. + string diskFormat = 521631759; + + // The minimal disk size requirement for this software image. See note 1. + float minDisk = 526561040; + + // The minimal RAM requirement for this software image. See note 2. + float minRam = 319382; + + // The size of this software image file. See note 3. + float size = 3530753; + + // A reference to the actual software image. + repeated SwImageDesc swImage = 223016620; + + // Specifies the operating system used in the software image. + string operatingSystem = 102924594; + + // Specifies the virtualisation environments (e.g. hypervisor) compatible with this software image. + repeated string supportedVirtualisationEnvironment = 306169277; + +} diff --git a/AppPkgMgmtProto3/proto3/models/terminate_app_instance_op_config.proto b/AppPkgMgmtProto3/proto3/models/terminate_app_instance_op_config.proto new file mode 100644 index 0000000..11f2c00 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/terminate_app_instance_op_config.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message TerminateAppInstanceOpConfig { + + // Minimum timeout value for graceful stop of a VNF instance. + float minGracefulTerminationTimeout = 43882836; + + // 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. + float maxRecommendedGracefulTerminationTimeout = 118447847; + + // Array of KVP requirements for VNF-specific parameters to be passed when invoking the TerminateVnf operation. See note. + repeated string parameter = 343847852; + +} diff --git a/AppPkgMgmtProto3/proto3/models/time_stamp.proto b/AppPkgMgmtProto3/proto3/models/time_stamp.proto new file mode 100644 index 0000000..5344955 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/time_stamp.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message TimeStamp { + + // The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. + int32 nanoSeconds = 46708012; + + // The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. + int32 seconds = 359484034; + +} diff --git a/AppPkgMgmtProto3/proto3/models/traffic_filter.proto b/AppPkgMgmtProto3/proto3/models/traffic_filter.proto new file mode 100644 index 0000000..a1493f2 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/traffic_filter.proto @@ -0,0 +1,63 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message TrafficFilter { + + // Used to match all IPv4 packets that have the same DSCP. + int32 dSCP = 3061020; + + // A 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. + repeated string dstAddress = 407279216; + + // A port or a range of ports. + repeated string dstPort = 347416553; + + // Used for GTP tunnel based traffic rule. + repeated string dstTunnelPort = 320657582; + + // Specify the protocol of the traffic filter. + repeated string protocol = 452292969; + + // Used to match all packets that have the same QCI. + int32 qCI = 110743; + + // 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. + repeated string srcAddress = 240897392; + + // A port or a range of ports. + repeated string srcPort = 343000958; + + // Used for GTP tunnel based traffic rule. + repeated string srcTunnelAddress = 86899993; + + // Used for GTP tunnel based traffic rule. + repeated string srcTunnelPort = 32028174; + + // Used to match all IPv6 packets that have the same TC. + int32 tC = 3663; + + // Used for tag based traffic rule. + repeated string tag = 114586; + + // Used for GTP tunnel based traffic rule. + repeated string tgtTunnelAddress = 5196918; + + repeated string uri = 116076; + + repeated string packetLabel = 513464140; + +} diff --git a/AppPkgMgmtProto3/proto3/models/traffic_rule_descriptor.proto b/AppPkgMgmtProto3/proto3/models/traffic_rule_descriptor.proto new file mode 100644 index 0000000..d9ea271 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/traffic_rule_descriptor.proto @@ -0,0 +1,40 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/action.proto"; +import public "models/filter_type.proto"; +import public "models/interface_descriptor.proto"; +import public "models/traffic_filter.proto"; + +message TrafficRuleDescriptor { + + Action action = 349209036; + + // Describes the destination interface information, . Some applications (e.g. inline/tap) _DECAPSULATED, FORWARD_ENCAPSULATED or PASSTHROUGH, one value shall be provided. If the action is onDUPLICATE_DECAPSULATED or DUPLICATE_ENCAPSULATED, two values shall be provided. See note 2. + repeated InterfaceDescriptor dstInterface = 181384437; + + FilterType filterType = 479309104; + + // 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. + int32 priority = 91719262; + + // The filter used to identify specific flow/packets that need to be handled by the MEC host. + repeated TrafficFilter trafficFilter = 511989803; + + // Identifies the traffic rule. + string trafficRuleId = 157373036; + +} diff --git a/AppPkgMgmtProto3/proto3/models/transport_dependency.proto b/AppPkgMgmtProto3/proto3/models/transport_dependency.proto new file mode 100644 index 0000000..0377ead --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/transport_dependency.proto @@ -0,0 +1,30 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/serializer_type.proto"; +import public "models/transport_descriptor.proto"; + +message TransportDependency { + + // Set of labels that allow to define groups of transport bindings. The mechanism of the grouping is defined below this table. + repeated string labels = 36675587; + + // Information about the serializers in this transport binding, as defined in the SerializerTypes type in ETSI GS MEC 011 [i.4]. Support for at least one of the entries is required in conjunction with the transport. + repeated SerializerType serializers = 283951841; + + TransportDescriptor transport = 516093738; + +} diff --git a/AppPkgMgmtProto3/proto3/models/transport_descriptor.proto b/AppPkgMgmtProto3/proto3/models/transport_descriptor.proto new file mode 100644 index 0000000..17ecc54 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/transport_descriptor.proto @@ -0,0 +1,40 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/security_info.proto"; + +message TransportDescriptor { + + // The name of this transport. + string name = 3373707; + + // Human-readable description of this transport. + string description = 113933319; + + // The name of the protocol used. Shall be set to HTTP for a REST API. + string protocol = 452292969; + + SecurityInfo security = 412251969; + + string type = 3575610; + + // The version of the protocol used. + string version = 351608024; + + // Additional implementation specific details of the transport. + string implSpecificInfo = 109027520; + +} diff --git a/AppPkgMgmtProto3/proto3/models/transports_supported.proto b/AppPkgMgmtProto3/proto3/models/transports_supported.proto new file mode 100644 index 0000000..6bba150 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/transports_supported.proto @@ -0,0 +1,27 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/serializer_type.proto"; +import public "models/transport_descriptor.proto"; + +message TransportsSupported { + + TransportDescriptor transport = 516093738; + + // Information about the serializers in this binding, as defined in the SerializerTypes type in ETSI GS MEC 011. + repeated SerializerType serializers = 283951841; + +} diff --git a/AppPkgMgmtProto3/proto3/models/tunnel_info.proto b/AppPkgMgmtProto3/proto3/models/tunnel_info.proto new file mode 100644 index 0000000..79bbe4f --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/tunnel_info.proto @@ -0,0 +1,31 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/tunnel_type.proto"; + +message TunnelInfo { + + // Destination address of the tunnel. + string tunnelDstAddress = 430153977; + + string tunnelSpecificData = 160961404; + + // Source address of the tunnel. + string tunnelSrcAddress = 263772153; + + TunnelType tunnelType = 458219585; + +} diff --git a/AppPkgMgmtProto3/proto3/models/tunnel_type.proto b/AppPkgMgmtProto3/proto3/models/tunnel_type.proto new file mode 100644 index 0000000..ee94e01 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/tunnel_type.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum TunnelType { + GTP_U = 0; + GRE = 1; +} diff --git a/AppPkgMgmtProto3/proto3/models/usage_state.proto b/AppPkgMgmtProto3/proto3/models/usage_state.proto new file mode 100644 index 0000000..f7024eb --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/usage_state.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum UsageState { + IN_USE = 0; + NOT_IN_USE = 1; +} diff --git a/AppPkgMgmtProto3/proto3/models/version.proto b/AppPkgMgmtProto3/proto3/models/version.proto new file mode 100644 index 0000000..7cfda5d --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/version.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message Version { + + // Identifier of the source VNFD and the source VNF package. See note 1. + string srcVnfdId = 351567819; + + // Identifier of the destination VNFD and the destination VNF package. See note 1. + string dstVnfdId = 104078167; + + // Identifier of the deployment flavour in the source VNF package for which this modification applies. See note 2. + string srcFlavourId = 330059115; + +} diff --git a/AppPkgMgmtProto3/proto3/models/virtual_compute_descriptor.proto b/AppPkgMgmtProto3/proto3/models/virtual_compute_descriptor.proto new file mode 100644 index 0000000..6c202fb --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/virtual_compute_descriptor.proto @@ -0,0 +1,41 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/block_storage_data.proto"; +import public "models/logical_node_requirements.proto"; +import public "models/requested_additional_capability_data.proto"; +import public "models/virtual_cpu_data.proto"; +import public "models/virtual_memory_data.proto"; + +message VirtualComputeDescriptor { + + // Unique identifier of this VirtualComputeDesc in the VNFD. + string virtualComputeDescId = 124849833; + + repeated LogicalNodeRequirements logicalNode = 534614443; + + repeated RequestedAdditionalCapabilityData requestAdditionalCapabilities = 387050772; + + // Specifies compute requirements. + repeated string computeRequirements = 117445017; + + VirtualMemoryData virtualMemory = 289543148; + + VirtualCpuData virtualCpu = 297044640; + + repeated BlockStorageData virtualDisk = 455269561; + +} diff --git a/AppPkgMgmtProto3/proto3/models/virtual_cpu_data.proto b/AppPkgMgmtProto3/proto3/models/virtual_cpu_data.proto new file mode 100644 index 0000000..7fe4126 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/virtual_cpu_data.proto @@ -0,0 +1,39 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; +import public "models/virtual_cpu_pinning_data.proto"; + +message VirtualCpuData { + + // CPU architecture type. Examples are x86, ARM. + string cpuArchitecture = 291765478; + + // Number of virtual CPUs. + int32 numVirtualCpu = 241427141; + + // Minimum virtual CPU clock rate (e.g. in MHz). + float virtualCpuClock = 190675825; + + // The CPU core oversubscription policy, e.g. the relation of virtual CPU cores to physical CPU cores/threads. + string virtualCpuOversubscriptionPolicy = 309214339; + + // Array of key-value pair requirements on the Compute (CPU) for the VDU. + repeated KeyValuePairs vduCpuRequirements = 366499794; + + VirtualCpuPinningData virtualCpuPinning = 343263854; + +} diff --git a/AppPkgMgmtProto3/proto3/models/virtual_cpu_pinning_data.proto b/AppPkgMgmtProto3/proto3/models/virtual_cpu_pinning_data.proto new file mode 100644 index 0000000..4eec366 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/virtual_cpu_pinning_data.proto @@ -0,0 +1,31 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message VirtualCpuPinningData { + + // Indicates the policy for CPU pinning. + enum VirtualCpuPinningPolicyEnum { + STATIC = 0; + DYNAMIC = 1; + } + + VirtualCpuPinningPolicyEnum virtualCpuPinningPolicy = 211166530; + + // List of rules that should be considered during the allocation of the virtual CPUs to logical CPUs in case of \"STATIC\" virtualCpuPinningPolicy. + repeated string virtualCpuPinningRule = 379174793; + +} diff --git a/AppPkgMgmtProto3/proto3/models/virtual_memory_data.proto b/AppPkgMgmtProto3/proto3/models/virtual_memory_data.proto new file mode 100644 index 0000000..3b0e775 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/virtual_memory_data.proto @@ -0,0 +1,36 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; + +message VirtualMemoryData { + + // Amount of virtual memory in MB. + float virtualMemSize = 385060331; + + // 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. + string virtualMemOversubscriptionPolicy = 237578262; + + // Array of key-value pair requirements on the memory for the VDU. + repeated KeyValuePairs vduMemRequirements = 271933317; + + // Specifies the memory allocation to be cognisant of the relevant process/core allocation. + bool numaEnabled = 9627943; + + // Specifies requirements on the huge pages resources for the virtual memory. + string hugePagesRequirements = 124971785; + +} diff --git a/AppPkgMgmtProto3/proto3/models/virtual_network_interface_requirements.proto b/AppPkgMgmtProto3/proto3/models/virtual_network_interface_requirements.proto new file mode 100644 index 0000000..e057794 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/virtual_network_interface_requirements.proto @@ -0,0 +1,36 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/logical_node_requirements.proto"; + +message VirtualNetworkInterfaceRequirements { + + // Provides a human readable name for the requirement. + string name = 3373707; + + // Provides a human readable description of the requirement. + string description = 113933319; + + // The requirements on standardized network interface capabilities, e.g. SR-IOV or secondary container cluster network interface deployment requirements.See note + string standardizedNetworkInterfaceRequirements = 73447241; + + // 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. + string networkInterfaceRequirements = 102228263; + + // 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 + repeated LogicalNodeRequirements nicIoRequirements = 167234817; + +} diff --git a/AppPkgMgmtProto3/proto3/services/app_pkgm_notifications_service.proto b/AppPkgMgmtProto3/proto3/services/app_pkgm_notifications_service.proto new file mode 100644 index 0000000..69d1be9 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/services/app_pkgm_notifications_service.proto @@ -0,0 +1,31 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102.services.apppkgmnotificationsservice; + +import "google/protobuf/empty.proto"; +import public "models/app_pkg_notification.proto"; +import public "models/problem_details.proto"; + +service AppPkgmNotificationsService { + rpc AppPkgNotificationPOST (AppPkgNotificationPOSTRequest) returns (google.protobuf.Empty); + +} + +message AppPkgNotificationPOSTRequest { + // Notification endpoint to be created + AppPkgNotification appPkgNotification = 1; + +} + diff --git a/AppPkgMgmtProto3/proto3/services/app_pkgm_service.proto b/AppPkgMgmtProto3/proto3/services/app_pkgm_service.proto new file mode 100644 index 0000000..d2a4f25 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/services/app_pkgm_service.proto @@ -0,0 +1,243 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102.services.apppkgmservice; + +import "google/protobuf/empty.proto"; +import public "models/app_d.proto"; +import public "models/app_pkg_info.proto"; +import public "models/app_pkg_info_modifications.proto"; +import public "models/app_pkg_subscription.proto"; +import public "models/app_pkg_subscription_info.proto"; +import public "models/app_pkg_subscription_link_list.proto"; +import public "models/create_app_pkg.proto"; +import public "models/problem_details.proto"; + +service AppPkgmService { + rpc AppDGET (AppDGETRequest) returns (AppD); + + rpc AppDIdGET (AppDIdGETRequest) returns (google.protobuf.Empty); + + rpc AppDIdPUT (AppDIdPUTRequest) returns (google.protobuf.Empty); + + rpc AppPackageDELETE (AppPackageDELETERequest) returns (google.protobuf.Empty); + + rpc AppPackageGET (AppPackageGETRequest) returns (AppPackageGETResponse); + + rpc AppPackagePATCH (AppPackagePATCHRequest) returns (AppPackagePATCHResponse); + + rpc AppPackagesGET (AppPackagesGETRequest) returns (AppPackagesGETResponse); + + rpc AppPackagesPOST (AppPackagesPOSTRequest) returns (AppPkgInfo); + + rpc AppPkgGET (AppPkgGETRequest) returns (google.protobuf.Empty); + + rpc AppPkgIdGET (AppPkgIdGETRequest) returns (AppD); + + rpc AppPkgPUT (AppPkgPUTRequest) returns (google.protobuf.Empty); + + rpc IndividualSubscriptionDELETE (IndividualSubscriptionDELETERequest) returns (google.protobuf.Empty); + + rpc IndividualSubscriptionGET (IndividualSubscriptionGETRequest) returns (AppPkgSubscriptionInfo); + + rpc OnboardedAppPackageDELETE (OnboardedAppPackageDELETERequest) returns (google.protobuf.Empty); + + rpc OnboardedAppPackageGET (OnboardedAppPackageGETRequest) returns (OnboardedAppPackageGETResponse); + + rpc OnboardedAppPackagePATCH (OnboardedAppPackagePATCHRequest) returns (AppPkgInfoModifications); + + rpc OnboardedAppPackagesGET (OnboardedAppPackagesGETRequest) returns (OnboardedAppPackagesGETResponse); + + rpc OnboardedAppPackagesPOST (OnboardedAppPackagesPOSTRequest) returns (AppPkgInfo); + + rpc SubscriptionsGET (google.protobuf.Empty) returns (AppPkgSubscriptionLinkList); + + rpc SubscriptionsPOST (SubscriptionsPOSTRequest) returns (AppPkgSubscriptionInfo); + +} + +message AppDGETRequest { + // Identifier of an application descriptor + string appDId = 1; + // Attribute-based filtering parameters according to ETSI GS MEC 009 + string filter = 2; + // Include all complex attributes in the response. + string allFields = 3; + // Complex attributes of AppPkgInfo to be included into the response + string fields = 4; + // Complex attributes of AppPkgInfo to be excluded from the response. + string excludeFields = 5; + // Indicates to exclude the following complex attributes of AppPkgInfo from the response. + string excludeDefault = 6; + +} + +message AppDIdGETRequest { + // Identifier of an application descriptor + string appDId = 1; + +} + +message AppDIdPUTRequest { + // Identifier of an application descriptor + string appDId = 1; + +} + +message AppPackageDELETERequest { + // Identifier of an individual application package resource + string appPkgId = 1; + +} + +message AppPackageGETRequest { + // Identifier of an individual application package resource + string appPkgId = 1; + +} + +message AppPackageGETResponse { + repeated AppPkgInfo data = 1; +} + +message AppPackagePATCHRequest { + // Identifier of an individual application package resource + string appPkgId = 1; + // Parameters for application package information modification. + AppPkgInfoModifications appPkgInfoModifications = 2; + +} + +message AppPackagePATCHResponse { + repeated AppPkgInfoModifications data = 1; +} + +message AppPackagesGETRequest { + // Attribute-based filtering parameters according to ETSI GS MEC 009 + string filter = 1; + // Include all complex attributes in the response. + string allFields = 2; + // Complex attributes of AppPkgInfo to be included into the response + string fields = 3; + // Complex attributes of AppPkgInfo to be excluded from the response. + string excludeFields = 4; + // Indicates to exclude the following complex attributes of AppPkgInfo from the response. + string excludeDefault = 5; + +} + +message AppPackagesGETResponse { + repeated AppPkgInfo data = 1; +} + +message AppPackagesPOSTRequest { + // Resource to be created + CreateAppPkg createAppPkg = 1; + +} + +message AppPkgGETRequest { + // Identifier of an on-boarded individual application package + string appPkgId = 1; + +} + +message AppPkgIdGETRequest { + // Identifier of an on-boarded individual application package + string appPkgId = 1; + // Attribute-based filtering parameters according to ETSI GS MEC 009 + string filter = 2; + // Include all complex attributes in the response. + string allFields = 3; + // Complex attributes of AppPkgInfo to be included into the response + string fields = 4; + // Complex attributes of AppPkgInfo to be excluded from the response. + string excludeFields = 5; + // Indicates to exclude the following complex attributes of AppPkgInfo from the response. + string excludeDefault = 6; + +} + +message AppPkgPUTRequest { + // Identifier of an on-boarded individual application package + string appPkgId = 1; + +} + +message IndividualSubscriptionDELETERequest { + // Identifier of an individual subscription to notifications about application package changes + string subscriptionId = 1; + +} + +message IndividualSubscriptionGETRequest { + // Identifier of an individual subscription to notifications about application package changes + string subscriptionId = 1; + +} + +message OnboardedAppPackageDELETERequest { + // Identifier of an individual application package resource + string appPkgId = 1; + +} + +message OnboardedAppPackageGETRequest { + // Identifier of an individual application package resource + string appPkgId = 1; + +} + +message OnboardedAppPackageGETResponse { + repeated AppPkgInfo data = 1; +} + +message OnboardedAppPackagePATCHRequest { + // Identifier of an individual application package resource + string appPkgId = 1; + // Parameters for application package information modification. + repeated AppPkgInfoModifications appPkgInfoModifications = 2; + +} + +message OnboardedAppPackagesGETRequest { + // Attribute-based filtering parameters according to ETSI GS MEC 009 + string filter = 1; + // Include all complex attributes in the response. + string allFields = 2; + // Complex attributes of AppPkgInfo to be included into the response + string fields = 3; + // Complex attributes of AppPkgInfo to be excluded from the response. + string excludeFields = 4; + // Indicates to exclude the following complex attributes of AppPkgInfo from the response. + string excludeDefault = 5; + +} + +message OnboardedAppPackagesGETResponse { + repeated AppPkgInfo data = 1; +} + +message OnboardedAppPackagesPOSTRequest { + // Resource to be created + CreateAppPkg createAppPkg = 1; + +} + +message SubscriptionsPOSTRequest { + // The input parameters of subscribe operation to notifications + AppPkgSubscription appPkgSubscription = 1; + +} + -- GitLab From 27c54f020aaee397ae48b2ad6180b23056447b15 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Tue, 13 Jun 2023 16:48:02 +0500 Subject: [PATCH 34/50] add proto3 descriptors for AppLcm API --- MEC010-2_AppLcm.json | 2 +- MEC010-2_AppLcm.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/MEC010-2_AppLcm.json b/MEC010-2_AppLcm.json index 5d5e1c1..6c54be6 100644 --- a/MEC010-2_AppLcm.json +++ b/MEC010-2_AppLcm.json @@ -2912,7 +2912,7 @@ "type": "array", "description": "Specifies specific attributes, dependent on the requested additional capability type.", "items": { - "$ref": "#/components/schemas/KeyValuePair" + "$ref": "#/components/schemas/KeyValuePairs" } } } diff --git a/MEC010-2_AppLcm.yaml b/MEC010-2_AppLcm.yaml index b5c0049..bc93f16 100644 --- a/MEC010-2_AppLcm.yaml +++ b/MEC010-2_AppLcm.yaml @@ -2378,7 +2378,7 @@ components: type: array description: Specifies specific attributes, dependent on the requested additional capability type. items: - $ref: '#/components/schemas/KeyValuePair' + $ref: '#/components/schemas/KeyValuePairs' KeyValuePairs: description: | -- GitLab From c8db7700f776fe8b345c1a20c68b2bb2a00cab7b Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Tue, 13 Jun 2023 16:48:22 +0500 Subject: [PATCH 35/50] add proto3 descriptors for AppGrant API --- MEC010-2_AppGrant.json | 46 ------------------------------------------ MEC010-2_AppGrant.yaml | 28 ------------------------- 2 files changed, 74 deletions(-) diff --git a/MEC010-2_AppGrant.json b/MEC010-2_AppGrant.json index a6ef18f..aa6c145 100644 --- a/MEC010-2_AppGrant.json +++ b/MEC010-2_AppGrant.json @@ -785,12 +785,6 @@ } }, "responses": { - "200": { - "description": "OK" - }, - "204": { - "description": "No Content" - }, "400": { "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", "content": { @@ -841,46 +835,6 @@ } } }, - "412": { - "description": "Precondition failed : used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts when using PUT", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "414": { - "description": "URI Too Long : used to indicate that the server is refusing to process the request because the request URI is longer than the server is willing or able to process.", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "415": { - "description": "Unsupported Media Type : used to indicate that the server or the client does not support the content type of the entity body.", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "422": { - "description": "Unprocessable Entity : used to indicate that the server understands the content type of the request entity and that the syntax of the request entity is correct but that the server is unable to process the contained instructions. This error condition can occur if an JSON request body is syntactically correct but semantically incorrect, for example if the target area for the request is considered too large. This error condition can also occur if the capabilities required by the request are not supported.", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, "429": { "description": "Too Many Requests: used when a rate limiter has triggered.", "content": { diff --git a/MEC010-2_AppGrant.yaml b/MEC010-2_AppGrant.yaml index 4633f58..0a06f59 100644 --- a/MEC010-2_AppGrant.yaml +++ b/MEC010-2_AppGrant.yaml @@ -749,10 +749,6 @@ components: description: The identifier of the resource zone, as managed by the resource management layer (typically, the VIM). responses: - '200': - description: OK - '204': - description: No Content '400': description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' content: @@ -783,30 +779,6 @@ components: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' - '412': - description: 'Precondition failed : used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts when using PUT' - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '414': - description: 'URI Too Long : used to indicate that the server is refusing to process the request because the request URI is longer than the server is willing or able to process.' - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '415': - description: 'Unsupported Media Type : used to indicate that the server or the client does not support the content type of the entity body.' - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '422': - description: 'Unprocessable Entity : used to indicate that the server understands the content type of the request entity and that the syntax of the request entity is correct but that the server is unable to process the contained instructions. This error condition can occur if an JSON request body is syntactically correct but semantically incorrect, for example if the target area for the request is considered too large. This error condition can also occur if the capabilities required by the request are not supported.' - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' '429': description: 'Too Many Requests: used when a rate limiter has triggered.' content: -- GitLab From 10dd546d32f945c1e391de5c272c7828ea8b3964 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Tue, 13 Jun 2023 16:51:07 +0500 Subject: [PATCH 36/50] add .gitignore file --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8b5c618 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +protoc/ +go-stubs/ +ruby-stubs/ +.proto-gen/ +python-stubs/ +.vscode/ \ No newline at end of file -- GitLab From 9eef112618ced35b815e55e00d70af5abcb7dd50 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Wed, 14 Jun 2023 11:52:18 +0500 Subject: [PATCH 37/50] update proto3-gen.md file --- proto3-gen.md | 202 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 202 insertions(+) diff --git a/proto3-gen.md b/proto3-gen.md index e69de29..93333d9 100644 --- a/proto3-gen.md +++ b/proto3-gen.md @@ -0,0 +1,202 @@ +# Protobuf Schema Generation + +[OpenAPI Generator](https://openapi-generator.tech) is used to generate protobuf schema (`.proto3`) files from OpenAPI specifications of MEC010-2 MEC Management; Part 2: Application lifecycle, rules and requirements management + +>**NOTE:** At the time of writing, the tool does not support OAS 3.1 version and we have to first convert the [MEC010-2 APIs](./MEC010-2_AppGrant.yaml, ./MEC010-2_AppLcm.yaml and ./MEC010-2_AppPkgMgmt.yaml) to OAS 3.0 for generating protobuf schema. + +1. Convert OAS for [Traffic Management APIs](./MEC010-2_AppGrant.yaml, ./MEC010-2_AppLcm.yaml and ./MEC010-2_AppPkgMgmt.yaml) from 3.1 to 3.0​ + + - Change the value of `openapi` field from 3.1.0 to 3.0.0​ + + - Use this [VS code extension](https://marketplace.visualstudio.com/items?itemName=42Crunch.vscode-openapi) to see the errors in the downgraded YAML (v3.0)​ + + - Manually fix the errors​ + - mostly related to `examples` <--> `example` interchange + - interchange `contentEncoding` <--> `format` + - comment or remove `jsonSchemaDialect` tag and its value + - and some other 3.1 fields that are not supported in 3.0​ (comment them out) + +2. Generate proto files + - Install the `openapi-generator-cli.jar` using the installation procedure mentioned [here](https://openapi-generator.tech/docs/installation#jar). + - Generate the proto files using the following commands: + ```sh + $ java -jar openapi-generator-cli.jar generate -i MEC010-2_AppGrant.yaml -g protobuf-schema -o proto3/ --package-name mec0102 + + $ java -jar openapi-generator-cli.jar generate -i MEC010-2_AppLcm.yaml -g protobuf-schema -o proto3/ --package-name mec0102 + + $ java -jar openapi-generator-cli.jar generate -i MEC010-2_AppPkgMgmt.yaml -g protobuf-schema -o proto3/ --package-name mec0102 + ``` + +3. Carefully inspect the generated `.proto` files for any inconsistencies. Some of the things to look out for: + - Proto3 generated files for enumerations, structures containing allOf, oneOf, anyOf etc. may need to be touched manually + - Check that all the nested models are being _imported_ correctly in their parent models + - Remove redundant proto files + + +4. Validate protobuf schema by generating code from proto3 descriptions in different languages. See [this section](#code-generation-from-proto3) for more details. + +# Code Generation from proto3 + +Below are some code generation examples for Python, Go and Ruby. For other languages, please refer to https://grpc.io/docs/quickstart/. + +### Python + +1. Install the grpcio-tools package + ```sh + $ pip install grpcio-tools + ``` + +2. Create a directory for generated Python stubs + ```sh + $ mkdir python-stubs + ``` + +3. Run the following commands from the root of the directory containing this README that you are reading. + + - Models: + + ```sh + $ python -m grpc_tools.protoc -I./AppGrantProto3/proto3 --python_out=./python-stubs ./AppGrantProto3/proto3/models/* + + $ python -m grpc_tools.protoc -I./AppLcmProto3/proto3 --python_out=./python-stubs ./AppLcmProto3/proto3/models/* + + $ python -m grpc_tools.protoc -I./AppPkgMgmtProto3/proto3 --python_out=./python-stubs ./AppPkgMgmtProto3/proto3/models/* + ``` + + The above commands will generate .py files for all the data models in the ./models directory + + - Services: + + ```sh + $ python -m grpc_tools.protoc -I./AppGrantProto3/proto3 --python_out=./python-stubs --grpc_python_out=./python-stubs ./AppGrantProto3/proto3/services/* + + $ python -m grpc_tools.protoc -I./AppLcmProto3/proto3 --python_out=./python-stubs --grpc_python_out=./python-stubs ./AppLcmProto3/proto3/services/* + + $ python -m grpc_tools.protoc -I./AppPkgMgmtProto3/proto3 --python_out=./python-stubs --grpc_python_out=./python-stubs ./AppPkgMgmtProto3/proto3/services/* + ``` + + The above commands will generate service files for the corresponding APIs, containing: + - Python data models used in the corresponding API + - Classes and functions needed for the supported HTTP methods in the corresponding API + +### Go + +1. Install protocol buffer compiler + ```sh + $ apt install -y protobuf-compiler + ``` +2. Install Go plugins for `protoc` + ```sh + $ go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1 + ``` + ```sh + $ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2.0 + ``` +3. Update `PATH` so `protoc` can find the plugins + ```sh + $ export PATH="$PATH:$(go env GOPATH)/bin" + ``` +4. Define a go package by appending `option go_package = "./mec0102.services.appgrantservice";`, `option go_package = "./mec0102.services.applcmservice";` or `option go_package = "./mec0102.services.apppkgmgmtservice";` in .proto files like this: + + ```Go + ... + + syntax = "proto3"; + + package mec0102.services.appgrantservice; + + option go_package = "./mec0102.services.appgrantservice"; + + import public "models/.proto"; + + ... + + ... + + syntax = "proto3"; + + package mec0102.services.applcmservice; + + option go_package = "./mec0102.services.applcmservice"; + + import public "models/.proto"; + + ... + + ... + + syntax = "proto3"; + + package mec0102.services.apppkgmgmtservice; + + option go_package = "./mec0102.services.apppkgmgmtservice"; + + import public "models/.proto"; + + ... + ``` +5. Generate Go code for models and services + ```sh + $ mkdir go-stubs + + $ protoc --go_out=./go-stubs ./AppGrantProto3/proto3/models/* -I./AppGrantProto3/proto3 + + $ protoc --go_out=./go-stubs ./AppGrantProto3/proto3/services/* --go-grpc_out=go-stubs -I./AppGrantProto3/proto3 + + ... + + $ protoc --go_out=./go-stubs ./AppLcmProto3/proto3/models/* -I./AppLcmProto3/proto3 + + $ protoc --go_out=./go-stubs ./AppLcmProto3/proto3/services/* --go-grpc_out=go-stubs -I./AppLcmProto3/proto3 + + ... + + $ protoc --go_out=./go-stubs ./AppPkgMgmtProto3/proto3/models/* -I./AppPkgMgmtProto3/proto3 + + $ protoc --go_out=./go-stubs ./AppPkgMgmtProto3/proto3/services/* --go-grpc_out=go-stubs -I./AppPkgMgmtProto3/proto3 + ``` + + + > The generated `.pb.go` files will contain all the protocol buffer code to populate, serialize, and retrieve request and response message types defined in the `models` folder. + + > The `.pb.go` files will contain the stubs for the methods defined in the `.proto` files. + +### Ruby + +1. Install gRPC Ruby Plugin and required tools + ```sh + $ gem install grpc + $ sudo apt install ruby-grpc-tools + ``` + +2. Generate code + ```sh + $ mkdir ruby-stubs + ``` + + Run the following commands to create Ruby modules for all the data models defined in the proto files. + + ```sh + $ grpc_tools_ruby_protoc -I./AppGrantProto3/proto3 --ruby_out=ruby-stubs ./AppGrantProto3/proto3/models/* + + ... + + $ grpc_tools_ruby_protoc -I./AppLcmProto3/proto3 --ruby_out=ruby-stubs ./AppLcmProto3/proto3/models/* + + ... + + $ grpc_tools_ruby_protoc -I./AppPkgMgmtProto3/proto3 --ruby_out=ruby-stubs ./AppPkgMgmtProto3/proto3/models/* + ``` + Run the following commands to generate services files, containing stub and service classes for the endpoints and methods defined in MEC010-2 APIs. + + ```sh + $ grpc_tools_ruby_protoc -I./AppGrantProto3/proto3 --ruby_out=ruby-stubs --grpc_out=ruby-stubs ./AppGrantProto3/proto3/services/* + + ... + + $ grpc_tools_ruby_protoc -I./AppLcmProto3/proto3 --ruby_out=ruby-stubs --grpc_out=ruby-stubs ./AppLcmProto3/proto3/services/* + + ... + + $ grpc_tools_ruby_protoc -I./AppPkgMgmtProto3/proto3 --ruby_out=ruby-stubs --grpc_out=ruby-stubs ./AppPkgMgmtProto3/proto3/services/* + ``` \ No newline at end of file -- GitLab From b51b860d3443a331ba2eda815165d0e1efc78b64 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Wed, 14 Jun 2023 11:54:29 +0500 Subject: [PATCH 38/50] fix identation in proto3-gen.md file --- proto3-gen.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/proto3-gen.md b/proto3-gen.md index 93333d9..7ce067e 100644 --- a/proto3-gen.md +++ b/proto3-gen.md @@ -111,8 +111,6 @@ Below are some code generation examples for Python, Go and Ruby. For other langu ... - ... - syntax = "proto3"; package mec0102.services.applcmservice; @@ -123,8 +121,6 @@ Below are some code generation examples for Python, Go and Ruby. For other langu ... - ... - syntax = "proto3"; package mec0102.services.apppkgmgmtservice; @@ -132,7 +128,6 @@ Below are some code generation examples for Python, Go and Ruby. For other langu option go_package = "./mec0102.services.apppkgmgmtservice"; import public "models/.proto"; - ... ``` 5. Generate Go code for models and services -- GitLab From 31b627662dd0b380415a4b0dacbb77163dfab8db Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Wed, 14 Jun 2023 11:55:04 +0500 Subject: [PATCH 39/50] fix identation in proto3-gen.md file --- proto3-gen.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto3-gen.md b/proto3-gen.md index 7ce067e..f9247db 100644 --- a/proto3-gen.md +++ b/proto3-gen.md @@ -128,8 +128,8 @@ Below are some code generation examples for Python, Go and Ruby. For other langu option go_package = "./mec0102.services.apppkgmgmtservice"; import public "models/.proto"; - ... ``` + 5. Generate Go code for models and services ```sh $ mkdir go-stubs -- GitLab From 3f3d3d62b7a5f0520e3489b7fd10e825ce1ab05b Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Wed, 14 Jun 2023 11:55:31 +0500 Subject: [PATCH 40/50] fix identation in proto3-gen.md file --- proto3-gen.md | 1 - 1 file changed, 1 deletion(-) diff --git a/proto3-gen.md b/proto3-gen.md index f9247db..570ecfb 100644 --- a/proto3-gen.md +++ b/proto3-gen.md @@ -99,7 +99,6 @@ Below are some code generation examples for Python, Go and Ruby. For other langu 4. Define a go package by appending `option go_package = "./mec0102.services.appgrantservice";`, `option go_package = "./mec0102.services.applcmservice";` or `option go_package = "./mec0102.services.apppkgmgmtservice";` in .proto files like this: ```Go - ... syntax = "proto3"; -- GitLab From 86e38a9a46fdb6c9f170b71b44c08ac58bf47880 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Wed, 14 Jun 2023 11:56:02 +0500 Subject: [PATCH 41/50] fix identation in proto3-gen.md file --- proto3-gen.md | 1 - 1 file changed, 1 deletion(-) diff --git a/proto3-gen.md b/proto3-gen.md index 570ecfb..5ed1345 100644 --- a/proto3-gen.md +++ b/proto3-gen.md @@ -99,7 +99,6 @@ Below are some code generation examples for Python, Go and Ruby. For other langu 4. Define a go package by appending `option go_package = "./mec0102.services.appgrantservice";`, `option go_package = "./mec0102.services.applcmservice";` or `option go_package = "./mec0102.services.apppkgmgmtservice";` in .proto files like this: ```Go - syntax = "proto3"; package mec0102.services.appgrantservice; -- GitLab From 95d00f1fe67036fcf9db67b4f3eecb80ca995197 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Wed, 14 Jun 2023 12:24:34 +0500 Subject: [PATCH 42/50] update proto3 generation README for AppGrant API --- AppGrantProto3/proto3/README.md | 113 +++++++++++++++++++++++++++----- 1 file changed, 98 insertions(+), 15 deletions(-) diff --git a/AppGrantProto3/proto3/README.md b/AppGrantProto3/proto3/README.md index 4cae1e5..6a75974 100644 --- a/AppGrantProto3/proto3/README.md +++ b/AppGrantProto3/proto3/README.md @@ -1,6 +1,6 @@ -# gPRC for mec0102 +# gPRC for mec010-2 -ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. +The ETSI MEC ISG App Grant API described using OpenAPI. ## Overview These files were generated by the [OpenAPI Generator](https://openapi-generator.tech) project. @@ -14,19 +14,102 @@ For more information, please visit [https://forge.etsi.org/rep/mec/gs010-2-app-p Below are some usage examples for Go and Ruby. For other languages, please refer to https://grpc.io/docs/quickstart/. +### Python + +1. Install the grpcio-tools package + ```sh + $ pip install grpcio-tools + ``` + +2. Create a directory for generated Python stubs + ```sh + $ mkdir python-stubs + ``` + +3. Run the following command from the root of the directory containing this README that you are reading. + + - Models: + + ```sh + $ python -m grpc_tools.protoc -I./AppGrantProto3/proto3 --python_out=./python-stubs ./AppGrantProto3/proto3/models/* + ``` + + The above command will generate .py files for all the data models in the ./models directory + + - Services: + + ```sh + $ python -m grpc_tools.protoc -I./AppGrantProto3/proto3 --python_out=./python-stubs --grpc_python_out=./python-stubs ./AppGrantProto3/proto3/services/* + ``` + + The above command will generate service files for the App Grant API, containing: + - Python data models used in the App Grant API + - Classes and functions needed for the supported HTTP methods in the App Grant API + ### Go -``` -# assuming `protoc-gen-go` has been installed with `go get -u github.com/golang/protobuf/protoc-gen-go` -mkdir /var/tmp/go/ -protoc --go_out=/var/tmp/go/ services/* -protoc --go_out=/var/tmp/go/ models/* -``` + +1. Install protocol buffer compiler + ```sh + $ apt install -y protobuf-compiler + ``` +2. Install Go plugins for `protoc` + ```sh + $ go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1 + ``` + ```sh + $ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2.0 + ``` +3. Update `PATH` so `protoc` can find the plugins + ```sh + $ export PATH="$PATH:$(go env GOPATH)/bin" + ``` +4. Define a go package by appending `option go_package = "./mec0102.services.appgrantservice";` in .proto files like this: + + ```Go + syntax = "proto3"; + + package mec0102.services.appgrantservice; + + option go_package = "./mec0102.services.appgrantservice"; + + import public "models/.proto"; + ``` + +5. Generate Go code for models and services + ```sh + $ mkdir go-stubs + + $ protoc --go_out=./go-stubs ./AppGrantProto3/proto3/models/* -I./AppGrantProto3/proto3 + + $ protoc --go_out=./go-stubs ./AppGrantProto3/proto3/services/* --go-grpc_out=go-stubs -I./AppGrantProto3/proto3 + ``` + + + > The generated `.pb.go` files will contain all the protocol buffer code to populate, serialize, and retrieve request and response message types defined in the `models` folder. + + > The `.pb.go` file will contain the stubs for the methods defined in the `.proto` file. ### Ruby -``` -# assuming `grpc_tools_ruby_protoc` has been installed via `gem install grpc-tools` -RUBY_OUTPUT_DIR="/var/tmp/ruby/mec0102" -mkdir $RUBY_OUTPUT_DIR -grpc_tools_ruby_protoc --ruby_out=$RUBY_OUTPUT_DIR --grpc_out=$RUBY_OUTPUT_DIR/lib services/* -grpc_tools_ruby_protoc --ruby_out=$RUBY_OUTPUT_DIR --grpc_out=$RUBY_OUTPUT_DIR/lib models/* -``` + +1. Install gRPC Ruby Plugin and required tools + ```sh + $ gem install grpc + $ sudo apt install ruby-grpc-tools + ``` + +2. Generate code + ```sh + $ mkdir ruby-stubs + ``` + + Run the following command to create Ruby modules for all the data models defined in the proto files. + + ```sh + $ grpc_tools_ruby_protoc -I./AppGrantProto3/proto3 --ruby_out=ruby-stubs ./AppGrantProto3/proto3/models/* + ``` + + Run the following command to generate service file, containing stub and service classes for the endpoints and methods defined in the App Grant API. + + ```sh + $ grpc_tools_ruby_protoc -I./AppGrantProto3/proto3 --ruby_out=ruby-stubs --grpc_out=ruby-stubs ./AppGrantProto3/proto3/services/* + ``` \ No newline at end of file -- GitLab From 1768c2fb8a592da25efc7364123a32e4ef5e885d Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Wed, 14 Jun 2023 12:24:48 +0500 Subject: [PATCH 43/50] update proto3 generation README for AppLcm API --- AppLcmProto3/proto3/README.md | 113 +++++++++++++++++++++++++++++----- 1 file changed, 98 insertions(+), 15 deletions(-) diff --git a/AppLcmProto3/proto3/README.md b/AppLcmProto3/proto3/README.md index 4cae1e5..e04c408 100644 --- a/AppLcmProto3/proto3/README.md +++ b/AppLcmProto3/proto3/README.md @@ -1,6 +1,6 @@ -# gPRC for mec0102 +# gPRC for mec010-2 -ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. +The ETSI MEC ISG Application Life Cycle Msanagement API described using OpenAPI. ## Overview These files were generated by the [OpenAPI Generator](https://openapi-generator.tech) project. @@ -14,19 +14,102 @@ For more information, please visit [https://forge.etsi.org/rep/mec/gs010-2-app-p Below are some usage examples for Go and Ruby. For other languages, please refer to https://grpc.io/docs/quickstart/. +### Python + +1. Install the grpcio-tools package + ```sh + $ pip install grpcio-tools + ``` + +2. Create a directory for generated Python stubs + ```sh + $ mkdir python-stubs + ``` + +3. Run the following command from the root of the directory containing this README that you are reading. + + - Models: + + ```sh + $ python -m grpc_tools.protoc -I./AppLcmProto3/proto3 --python_out=./python-stubs ./AppLcmProto3/proto3/models/* + ``` + + The above command will generate .py files for all the data models in the ./models directory + + - Services: + + ```sh + $ python -m grpc_tools.protoc -I./AppLcmProto3/proto3 --python_out=./python-stubs --grpc_python_out=./python-stubs ./AppLcmProto3/proto3/services/* + ``` + + The above command will generate service files for the App LCM API, containing: + - Python data models used in the App LCM API + - Classes and functions needed for the supported HTTP methods in the App LCM API + ### Go -``` -# assuming `protoc-gen-go` has been installed with `go get -u github.com/golang/protobuf/protoc-gen-go` -mkdir /var/tmp/go/ -protoc --go_out=/var/tmp/go/ services/* -protoc --go_out=/var/tmp/go/ models/* -``` + +1. Install protocol buffer compiler + ```sh + $ apt install -y protobuf-compiler + ``` +2. Install Go plugins for `protoc` + ```sh + $ go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1 + ``` + ```sh + $ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2.0 + ``` +3. Update `PATH` so `protoc` can find the plugins + ```sh + $ export PATH="$PATH:$(go env GOPATH)/bin" + ``` +4. Define a go package by appending `option go_package = "./mec0102.services.applcmservice";` in .proto files like this: + + ```Go + syntax = "proto3"; + + package mec0102.services.applcmservice; + + option go_package = "./mec0102.services.applcmservice"; + + import public "models/.proto"; + ``` + +5. Generate Go code for models and services + ```sh + $ mkdir go-stubs + + $ protoc --go_out=./go-stubs ./AppLcmProto3/proto3/models/* -I./AppLcmProto3/proto3 + + $ protoc --go_out=./go-stubs ./AppLcmProto3/proto3/services/* --go-grpc_out=go-stubs -I./AppLcmProto3/proto3 + ``` + + + > The generated `.pb.go` files will contain all the protocol buffer code to populate, serialize, and retrieve request and response message types defined in the `models` folder. + + > The `.pb.go` file will contain the stubs for the methods defined in the `.proto` file. ### Ruby -``` -# assuming `grpc_tools_ruby_protoc` has been installed via `gem install grpc-tools` -RUBY_OUTPUT_DIR="/var/tmp/ruby/mec0102" -mkdir $RUBY_OUTPUT_DIR -grpc_tools_ruby_protoc --ruby_out=$RUBY_OUTPUT_DIR --grpc_out=$RUBY_OUTPUT_DIR/lib services/* -grpc_tools_ruby_protoc --ruby_out=$RUBY_OUTPUT_DIR --grpc_out=$RUBY_OUTPUT_DIR/lib models/* -``` + +1. Install gRPC Ruby Plugin and required tools + ```sh + $ gem install grpc + $ sudo apt install ruby-grpc-tools + ``` + +2. Generate code + ```sh + $ mkdir ruby-stubs + ``` + + Run the following command to create Ruby modules for all the data models defined in the proto files. + + ```sh + $ grpc_tools_ruby_protoc -I./AppLcmProto3/proto3 --ruby_out=ruby-stubs ./AppLcmProto3/proto3/models/* + ``` + + Run the following command to generate services files, containing stub and service classes for the endpoints and methods defined in App LCM API. + + ```sh + $ grpc_tools_ruby_protoc -I./AppLcmProto3/proto3 --ruby_out=ruby-stubs --grpc_out=ruby-stubs ./AppLcmProto3/proto3/services/* + ``` \ No newline at end of file -- GitLab From 7218d34211b9b2f5a30fb65993d2469703000fab Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Wed, 14 Jun 2023 12:25:01 +0500 Subject: [PATCH 44/50] update proto3 generation README for AppPkgMgmt API --- AppPkgMgmtProto3/proto3/README.md | 113 ++++++++++++++++++++++++++---- 1 file changed, 98 insertions(+), 15 deletions(-) diff --git a/AppPkgMgmtProto3/proto3/README.md b/AppPkgMgmtProto3/proto3/README.md index 4cae1e5..d9cf7e0 100644 --- a/AppPkgMgmtProto3/proto3/README.md +++ b/AppPkgMgmtProto3/proto3/README.md @@ -1,6 +1,6 @@ -# gPRC for mec0102 +# gPRC for mec010-2 -ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. +The ETSI MEC ISG Application Package Management API described using OpenAPI. ## Overview These files were generated by the [OpenAPI Generator](https://openapi-generator.tech) project. @@ -14,19 +14,102 @@ For more information, please visit [https://forge.etsi.org/rep/mec/gs010-2-app-p Below are some usage examples for Go and Ruby. For other languages, please refer to https://grpc.io/docs/quickstart/. +### Python + +1. Install the grpcio-tools package + ```sh + $ pip install grpcio-tools + ``` + +2. Create a directory for generated Python stubs + ```sh + $ mkdir python-stubs + ``` + +3. Run the following command from the root of the directory containing this README that you are reading. + + - Models: + + ```sh + $ python -m grpc_tools.protoc -I./AppPkgMgmtProto3/proto3 --python_out=./python-stubs ./AppPkgMgmtProto3/proto3/models/* + ``` + + The above command will generate .py files for all the data models in the ./models directory + + - Services: + + ```sh + $ python -m grpc_tools.protoc -I./AppPkgMgmtProto3/proto3 --python_out=./python-stubs --grpc_python_out=./python-stubs ./AppPkgMgmtProto3/proto3/services/* + ``` + + The above command will generate service files for the Application Package Management API, containing: + - Python data models used in the Application Package Management API + - Classes and functions needed for the supported HTTP methods in the Application Package Management API + ### Go -``` -# assuming `protoc-gen-go` has been installed with `go get -u github.com/golang/protobuf/protoc-gen-go` -mkdir /var/tmp/go/ -protoc --go_out=/var/tmp/go/ services/* -protoc --go_out=/var/tmp/go/ models/* -``` + +1. Install protocol buffer compiler + ```sh + $ apt install -y protobuf-compiler + ``` +2. Install Go plugins for `protoc` + ```sh + $ go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1 + ``` + ```sh + $ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2.0 + ``` +3. Update `PATH` so `protoc` can find the plugins + ```sh + $ export PATH="$PATH:$(go env GOPATH)/bin" + ``` +4. Define a go package by appending `option go_package = "./mec0102.services.apppkgmgmtservice";` in .proto files like this: + + ```Go + syntax = "proto3"; + + package mec0102.services.apppkgmgmtservice; + + option go_package = "./mec0102.services.apppkgmgmtservice"; + + import public "models/.proto"; + ``` + +5. Generate Go code for models and services + ```sh + $ mkdir go-stubs + + $ protoc --go_out=./go-stubs ./AppPkgMgmtProto3/proto3/models/* -I./AppPkgMgmtProto3/proto3 + + $ protoc --go_out=./go-stubs ./AppPkgMgmtProto3/proto3/services/* --go-grpc_out=go-stubs -I./AppPkgMgmtProto3/proto3 + ``` + + + > The generated `.pb.go` files will contain all the protocol buffer code to populate, serialize, and retrieve request and response message types defined in the `models` folder. + + > The `.pb.go` file will contain the stubs for the methods defined in the `.proto` file. ### Ruby -``` -# assuming `grpc_tools_ruby_protoc` has been installed via `gem install grpc-tools` -RUBY_OUTPUT_DIR="/var/tmp/ruby/mec0102" -mkdir $RUBY_OUTPUT_DIR -grpc_tools_ruby_protoc --ruby_out=$RUBY_OUTPUT_DIR --grpc_out=$RUBY_OUTPUT_DIR/lib services/* -grpc_tools_ruby_protoc --ruby_out=$RUBY_OUTPUT_DIR --grpc_out=$RUBY_OUTPUT_DIR/lib models/* -``` + +1. Install gRPC Ruby Plugin and required tools + ```sh + $ gem install grpc + $ sudo apt install ruby-grpc-tools + ``` + +2. Generate code + ```sh + $ mkdir ruby-stubs + ``` + + Run the following command to create Ruby modules for all the data models defined in the proto files. + + ```sh + $ grpc_tools_ruby_protoc -I./AppPkgMgmtProto3/proto3 --ruby_out=ruby-stubs ./AppPkgMgmtProto3/proto3/models/* + ``` + + Run the following command to generate services files, containing stub and service classes for the endpoints and methods defined in Application Package Management API. + + ```sh + $ grpc_tools_ruby_protoc -I./AppPkgMgmtProto3/proto3 --ruby_out=ruby-stubs --grpc_out=ruby-stubs ./AppPkgMgmtProto3/proto3/services/* + ``` \ No newline at end of file -- GitLab From 84c8d7515bfcff61109e76647942b5edbf801fe7 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Wed, 14 Jun 2023 12:25:29 +0500 Subject: [PATCH 45/50] update MEC010-2 version in main README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1a3ecc4..bd12957 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Application package lifecycle and operation granting API -This repository contains OpenAPIs descriptions for the interfaces specified in ETSI GS MEC 010-2. +This repository contains OpenAPIs descriptions for the interfaces specified in ETSI GS MEC 010-2 v3.1.1. ## Online resources -- GitLab From 0064268c26a3e6be89db40f110af38ea36403088 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Wed, 14 Jun 2023 12:32:18 +0500 Subject: [PATCH 46/50] fix minor issues in all README files --- AppGrantProto3/proto3/README.md | 2 +- AppLcmProto3/proto3/README.md | 4 ++-- AppPkgMgmtProto3/proto3/README.md | 2 +- README.md | 12 ++++++------ 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/AppGrantProto3/proto3/README.md b/AppGrantProto3/proto3/README.md index 6a75974..48f73a7 100644 --- a/AppGrantProto3/proto3/README.md +++ b/AppGrantProto3/proto3/README.md @@ -1,4 +1,4 @@ -# gPRC for mec010-2 +# gPRC for MEC010-2 The ETSI MEC ISG App Grant API described using OpenAPI. diff --git a/AppLcmProto3/proto3/README.md b/AppLcmProto3/proto3/README.md index e04c408..38a0a84 100644 --- a/AppLcmProto3/proto3/README.md +++ b/AppLcmProto3/proto3/README.md @@ -1,6 +1,6 @@ -# gPRC for mec010-2 +# gPRC for MEC010-2 -The ETSI MEC ISG Application Life Cycle Msanagement API described using OpenAPI. +The ETSI MEC ISG Application Life Cycle Management API described using OpenAPI. ## Overview These files were generated by the [OpenAPI Generator](https://openapi-generator.tech) project. diff --git a/AppPkgMgmtProto3/proto3/README.md b/AppPkgMgmtProto3/proto3/README.md index d9cf7e0..985db92 100644 --- a/AppPkgMgmtProto3/proto3/README.md +++ b/AppPkgMgmtProto3/proto3/README.md @@ -1,4 +1,4 @@ -# gPRC for mec010-2 +# gPRC for MEC010-2 The ETSI MEC ISG Application Package Management API described using OpenAPI. diff --git a/README.md b/README.md index bd12957..5ebca7b 100644 --- a/README.md +++ b/README.md @@ -8,14 +8,14 @@ This repository contains OpenAPIs descriptions for the interfaces specified in E ## Navigate with Swagger UI -* [App Package management API](https://forge.etsi.org/swagger/ui/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v2.2.1/MEC010-2_AppPkgMgmt.yaml). -* [App Lifecycle management API](https://forge.etsi.org/swagger/ui/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v2.2.1/MEC010-2_AppLcm.yaml). -* [App Operation Granting API](https://forge.etsi.org/swagger/ui/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v2.2.1/MEC010-2_AppGrant.yaml). +* [App Package management API](https://forge.etsi.org/swagger/ui/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v3.1.1/MEC010-2_AppPkgMgmt.yaml). +* [App Lifecycle management API](https://forge.etsi.org/swagger/ui/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v3.1.1/MEC010-2_AppLcm.yaml). +* [App Operation Granting API](https://forge.etsi.org/swagger/ui/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v3.1.1/MEC010-2_AppGrant.yaml). ## Navigate with Redocly -* [App Package management API](https://redocly.github.io/redoc/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v2.2.1/MEC010-2_AppPkgMgmt.yaml&nocors). -* [App Lifecycle management API](https://redocly.github.io/redoc/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v2.2.1/MEC010-2_AppLcm.yaml&nocors). -* [App Operation Granting API](https://redocly.github.io/redoc/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v2.2.1/MEC010-2_AppGrant.yaml&nocors). +* [App Package management API](https://redocly.github.io/redoc/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v3.1.1/MEC010-2_AppPkgMgmt.yaml&nocors). +* [App Lifecycle management API](https://redocly.github.io/redoc/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v3.1.1/MEC010-2_AppLcm.yaml&nocors). +* [App Operation Granting API](https://redocly.github.io/redoc/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v3.1.1/MEC010-2_AppGrant.yaml&nocors). ## License -- GitLab From 577bb75f5939f7d487c6d374dc42d4c5b91c225f Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Wed, 14 Jun 2023 17:33:39 +0500 Subject: [PATCH 47/50] fix minor issues --- MEC010-2_AppGrant.yaml | 1 + MEC010-2_AppLcm.yaml | 1 + MEC010-2_AppPkgMgmt.json | 4 +-- MEC010-2_AppPkgMgmt.yaml | 4 +-- definitions/MEC010p2_definitions.json | 47 ++++++++++++++++++++++++++- definitions/MEC010p2_definitions.yaml | 31 +++++++++++++++++- 6 files changed, 82 insertions(+), 6 deletions(-) diff --git a/MEC010-2_AppGrant.yaml b/MEC010-2_AppGrant.yaml index 0a06f59..135c1bc 100644 --- a/MEC010-2_AppGrant.yaml +++ b/MEC010-2_AppGrant.yaml @@ -606,6 +606,7 @@ components: 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: diff --git a/MEC010-2_AppLcm.yaml b/MEC010-2_AppLcm.yaml index bc93f16..0c2a0a2 100644 --- a/MEC010-2_AppLcm.yaml +++ b/MEC010-2_AppLcm.yaml @@ -2355,6 +2355,7 @@ components: items: type: string format: not-specified + RequestedAdditionalCapabilityData: type: object required: diff --git a/MEC010-2_AppPkgMgmt.json b/MEC010-2_AppPkgMgmt.json index be2a995..cc2f3c2 100644 --- a/MEC010-2_AppPkgMgmt.json +++ b/MEC010-2_AppPkgMgmt.json @@ -1491,7 +1491,7 @@ }, "terminateAppInstanceOpConfig": { "type": "string", - "$ref": "#/components/schemas/terminateAppInstanceOpConfig" + "$ref": "#/components/schemas/TerminateAppInstanceOpConfig" }, "transportDependencies": { "type": "object", @@ -1539,7 +1539,7 @@ } } }, - "terminateAppInstanceOpConfig": { + "TerminateAppInstanceOpConfig": { "type": "object", "description": "This information element defines attributes that affect the invocation of the TerminateVnf operation.\n", "required": ["minGracefulTerminationTimeout"], diff --git a/MEC010-2_AppPkgMgmt.yaml b/MEC010-2_AppPkgMgmt.yaml index 1468241..5378515 100644 --- a/MEC010-2_AppPkgMgmt.yaml +++ b/MEC010-2_AppPkgMgmt.yaml @@ -1070,7 +1070,7 @@ components: 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: type: string - $ref: '#/components/schemas/terminateAppInstanceOpConfig' + $ref: '#/components/schemas/TerminateAppInstanceOpConfig' transportDependencies: type: object items: @@ -1126,7 +1126,7 @@ components: Array of KVP requirements for VNF-specific parameters to be passed when invoking the OperateVnf operation. See note. - terminateAppInstanceOpConfig: + TerminateAppInstanceOpConfig: type: object description: > This information element defines attributes that affect the invocation of the TerminateVnf operation. diff --git a/definitions/MEC010p2_definitions.json b/definitions/MEC010p2_definitions.json index e3e8a9b..f077acc 100644 --- a/definitions/MEC010p2_definitions.json +++ b/definitions/MEC010p2_definitions.json @@ -170,7 +170,7 @@ "$ref": "#/definitions/SecurityInfo" }, "type": { - "type": "string" + "$ref": "#/definitions/TransportTypes" }, "version": { "type": "string", @@ -182,6 +182,51 @@ } } }, + "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]." + } + ] + }, "SecurityInfo": { "type": "object", "properties": { diff --git a/definitions/MEC010p2_definitions.yaml b/definitions/MEC010p2_definitions.yaml index f76c07b..60ecc35 100644 --- a/definitions/MEC010p2_definitions.yaml +++ b/definitions/MEC010p2_definitions.yaml @@ -148,7 +148,7 @@ security: $ref: '#/definitions/SecurityInfo' type: - type: string + $ref: '#/definitions/TransportTypes' version: type: string description: The version of the protocol used. @@ -156,6 +156,35 @@ type: string description: Additional implementation specific details of the transport. + 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]. + SecurityInfo: type: object properties: -- GitLab From d24c506c8f28254a740d9b2343b289dad441349e Mon Sep 17 00:00:00 2001 From: umair zafar Date: Mon, 26 Jun 2023 12:16:09 +0500 Subject: [PATCH 48/50] Add missing attributes in AppPkgMgmt API --- MEC010-2_AppPkgMgmt.json | 630 ++++++++++++++++++++++++++++++++++----- MEC010-2_AppPkgMgmt.yaml | 234 +++++++++++++++ 2 files changed, 796 insertions(+), 68 deletions(-) diff --git a/MEC010-2_AppPkgMgmt.json b/MEC010-2_AppPkgMgmt.json index cc2f3c2..d427698 100644 --- a/MEC010-2_AppPkgMgmt.json +++ b/MEC010-2_AppPkgMgmt.json @@ -38,7 +38,9 @@ "paths": { "/app_packages": { "post": { - "tags": ["app-pkgm"], + "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", @@ -89,7 +91,9 @@ "deprecated": false }, "get": { - "tags": ["app-pkgm"], + "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", @@ -186,7 +190,9 @@ }, "/onboarded_app_packages": { "post": { - "tags": ["app-pkgm"], + "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", @@ -237,7 +243,9 @@ "deprecated": false }, "get": { - "tags": ["app-pkgm"], + "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", @@ -334,7 +342,9 @@ }, "/app_packages/{appPkgId}": { "get": { - "tags": ["app-pkgm"], + "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", @@ -387,7 +397,9 @@ "deprecated": false }, "delete": { - "tags": ["app-pkgm"], + "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", @@ -431,7 +443,9 @@ "deprecated": false }, "patch": { - "tags": ["app-pkgm"], + "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", @@ -498,7 +512,9 @@ }, "/onboarded_app_packages/{appPkgId}": { "get": { - "tags": ["app-pkgm"], + "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", @@ -551,7 +567,9 @@ "deprecated": false }, "delete": { - "tags": ["app-pkgm"], + "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", @@ -595,7 +613,9 @@ "deprecated": false }, "patch": { - "tags": ["app-pkgm"], + "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", @@ -662,7 +682,9 @@ }, "/subscriptions": { "post": { - "tags": ["app-pkgm"], + "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", @@ -742,7 +764,9 @@ } }, "get": { - "tags": ["app-pkgm"], + "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", @@ -785,7 +809,9 @@ }, "/subscriptions/{subscriptionId}": { "get": { - "tags": ["app-pkgm"], + "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", @@ -836,7 +862,9 @@ "deprecated": false }, "delete": { - "tags": ["app-pkgm"], + "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", @@ -883,7 +911,9 @@ }, "/app_packages/{appPkgId}/appd": { "get": { - "tags": ["app-pkgm"], + "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", @@ -988,7 +1018,9 @@ }, "/onboarded_app_packages/{appDId}/appd": { "get": { - "tags": ["app-pkgm"], + "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", @@ -1093,7 +1125,9 @@ }, "/app_packages/{appPkgId}/package_content": { "get": { - "tags": ["app-pkgm"], + "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", @@ -1146,7 +1180,9 @@ "deprecated": false }, "put": { - "tags": ["app-pkgm"], + "tags": [ + "app-pkgm" + ], "summary": "Uploads the content of application package.", "description": "Uploads the content of application package.", "operationId": "appPkgPUT", @@ -1193,7 +1229,9 @@ }, "/onboarded_app_packages/{appDId}/package_content": { "get": { - "tags": ["app-pkgm"], + "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", @@ -1242,7 +1280,9 @@ "deprecated": false }, "put": { - "tags": ["app-pkgm"], + "tags": [ + "app-pkgm" + ], "summary": "Fetch the onboarded application package content identified by appPkgId or appDId.", "description": "Uploads the content of application package.", "operationId": "appDIdPUT", @@ -1289,7 +1329,9 @@ }, "/user_defined_notification": { "post": { - "tags": ["app-pkgm-notifications"], + "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", @@ -1482,6 +1524,20 @@ }, "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": null, + "type": "array", + "items": { + "$ref": "#/components/schemas/VirtualStorageDescriptor" + }, + "description": "Defines descriptors of virtual storage resources to be used by the MEC application.", + "userContextTransferCapability": { + "type": "string", + "$ref": "#/components/schemas/UserContextTransferCapability" + }, + "appNetworkPolicy": { + "type": "string", + "$ref": "#/components/schemas/AppNetworkPolicy" + }, "swImageDescriptor": { "type": "array", "items": { @@ -1520,7 +1576,9 @@ "changeAppInstanceStateOpConfig": { "type": "object", "description": "This information element defines attributes that affect the invocation of the OperateVnf operation.\n", - "required": ["minGracefulStopTimeout"], + "required": [ + "minGracefulStopTimeout" + ], "properties": { "minGracefulStopTimeout": { "type": "number", @@ -1539,10 +1597,311 @@ } } }, + "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", + "nullable": true, + "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." + }, + "VirtualStorageDescriptor": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier of this VirtualStorageDesc in the VNFD." + }, + "typeOfStorage": { + "type": "string", + "enum": [ + "BLOCK", + "OBJECT", + "FILE" + ], + "description": "Type of virtualized storage resource." + }, + "blockStorageData": { + "$ref": "#/components/schemas/BlockStorageData", + "description": "Details of block storage. Required when typeOfStorage is set to \"BLOCK\"." + }, + "objectStorageData": { + "$ref": "#/components/schemas/ObjectStorageData", + "description": "Details of object storage. Required when typeOfStorage is set to \"OBJECT\"." + }, + "fileStorageData": { + "$ref": "#/components/schemas/FileStorageData", + "description": "Details of file storage. Required when typeOfStorage is set to \"FILE\"." + }, + "nfviMaintenanceInfo": { + "$ref": "#/components/schemas/NfviMaintenanceInfo", + "description": "Information on NFVI operation and maintenance rules for instances based on this VirtualStorageDesc." + }, + "perVnfcInstance": { + "type": "boolean", + "description": "Indicates whether the virtual storage resource should be instantiated per VNFC instance." + } + } + }, + "NfviMaintenanceInfo": { + "type": "object", + "properties": { + "impactNotificationLeadTime": { + "type": "number", + "description": "The minimum notification lead time requested for upcoming impact of the virtualised resource or their group." + }, + "isImpactMitigationRequested": { + "type": "boolean", + "description": "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." + } + } + }, + "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." + } + } + }, + "VirtualLinkDescFlavour": { + "type": "object", + "properties": { + "flavourId": { + "type": "string", + "description": "Identifies a flavour within a VnfVirtualLinkDesc." + }, + "qos": { + "$ref": "#/components/schemas/QoS", + "description": "QoS of the VL." + } + }, + "required": [ + "flavourId" + ] + }, + "QoS": { + "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", + "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": [ + "layerProtocol" + ] + }, + "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." + } + } + }, "TerminateAppInstanceOpConfig": { "type": "object", "description": "This information element defines attributes that affect the invocation of the TerminateVnf operation.\n", - "required": ["minGracefulTerminationTimeout"], + "required": [ + "minGracefulTerminationTimeout" + ], "properties": { "minGracefulTerminationTimeout": { "type": "number", @@ -1563,7 +1922,13 @@ }, "SwImageDescriptor": { "type": "object", - "required": ["id", "name", "version", "containerFormat", "swImage"], + "required": [ + "id", + "name", + "version", + "containerFormat", + "swImage" + ], "properties": { "id": { "type": "string", @@ -1627,7 +1992,11 @@ }, "Version": { "type": "object", - "required": ["srcVnfdId", "dstVnfdId", "srcFlavourId"], + "required": [ + "srcVnfdId", + "dstVnfdId", + "srcFlavourId" + ], "properties": { "srcVnfdId": { "type": "string", @@ -1662,7 +2031,10 @@ }, "McioIdentificationData": { "type": "object", - "required": ["name", "type"], + "required": [ + "name", + "type" + ], "properties": { "name": { "type": "string", @@ -1678,7 +2050,12 @@ "OsContainerDescriptor": { "title": "OsContainerDescriptor", "type": "object", - "required": ["osContainerDescId", "name", "description", "swImageDesc"], + "required": [ + "osContainerDescId", + "name", + "description", + "swImageDesc" + ], "properties": { "osContainerDescId": { "type": "string", @@ -1758,7 +2135,10 @@ }, "MonitoringParameter": { "type": "object", - "required": ["monitoringParameterId", "performanceMetric"], + "required": [ + "monitoringParameterId", + "performanceMetric" + ], "properties": { "monitoringParameterId": { "type": "string", @@ -1781,7 +2161,11 @@ "VirtualComputeDescriptor": { "title": "VirtualComputeDescriptor", "type": "object", - "required": ["virtualComputeDescId", "virtualMemory", "virtualCpu"], + "required": [ + "virtualComputeDescId", + "virtualMemory", + "virtualCpu" + ], "properties": { "virtualComputeDescId": { "type": "string", @@ -1823,7 +2207,9 @@ }, "VirtualCpuData": { "type": "object", - "required": ["numVirtualCpu"], + "required": [ + "numVirtualCpu" + ], "properties": { "cpuArchitecture": { "type": "string", @@ -1855,7 +2241,9 @@ }, "BlockStorageData": { "type": "object", - "required": ["sizeOfStorage"], + "required": [ + "sizeOfStorage" + ], "properties": { "sizeOfStorage": { "type": "number", @@ -1881,7 +2269,13 @@ }, "SwImageDesc": { "type": "object", - "required": ["id", "name", "version", "containerFormat", "swImage"], + "required": [ + "id", + "name", + "version", + "containerFormat", + "swImage" + ], "properties": { "id": { "type": "string", @@ -1939,7 +2333,10 @@ }, "ChecksumData": { "type": "object", - "required": ["algorithm", "hash"], + "required": [ + "algorithm", + "hash" + ], "properties": { "algorithm": { "type": "string", @@ -1958,7 +2355,10 @@ "virtualCpuPinningPolicy": { "type": "string", "description": "Indicates the policy for CPU pinning.", - "enum": ["STATIC", "DYNAMIC"] + "enum": [ + "STATIC", + "DYNAMIC" + ] }, "virtualCpuPinningRule": { "type": "array", @@ -1971,7 +2371,9 @@ }, "VirtualMemoryData": { "type": "object", - "required": ["virtualMemSize"], + "required": [ + "virtualMemSize" + ], "properties": { "virtualMemSize": { "type": "number", @@ -2045,7 +2447,9 @@ }, "LogicalNodeRequirements": { "type": "object", - "required": ["id"], + "required": [ + "id" + ], "properties": { "id": { "type": "string", @@ -2089,7 +2493,9 @@ }, "AdditionalServiceData": { "type": "object", - "required": ["portData"], + "required": [ + "portData" + ], "properties": { "portData": { "type": "array", @@ -2107,7 +2513,12 @@ }, "ServicePortData": { "type": "object", - "required": ["name", "protocol", "port", "portConfigurable"], + "required": [ + "name", + "protocol", + "port", + "portConfigurable" + ], "properties": { "name": { "type": "string", @@ -2115,7 +2526,11 @@ }, "protocol": { "type": "string", - "enum": ["TCP", "UDP", "SCTP"], + "enum": [ + "TCP", + "UDP", + "SCTP" + ], "description": "The L4 protocol for this port exposed by the VirtualCp." }, "port": { @@ -2253,7 +2668,9 @@ }, "AppPkgInfoModifications": { "title": "AppPkgInfoModifications", - "required": ["OperationalState"], + "required": [ + "OperationalState" + ], "type": "object", "properties": { "OperationalState": { @@ -2264,28 +2681,49 @@ }, "AppPkg.OperationalState": { "title": "AppPkg.OperationalState", - "enum": ["ENABLED", "DISABLED"], + "enum": [ + "ENABLED", + "DISABLED" + ], "type": "string", "description": "Operational state of the onboarded application package:\nENABLED: the application package can be used for instantiation of new application instances.\nDISABLED: the application package cannot be used for further application instantiation requests.\n", - "examples": ["ENABLED"] + "examples": [ + "ENABLED" + ] }, "OnboardingState": { "title": "OnboardingState", - "enum": ["CREATED", "UPLOADING", "PROCESSING", "ONBOARDED"], + "enum": [ + "CREATED", + "UPLOADING", + "PROCESSING", + "ONBOARDED" + ], "type": "string", "description": "Onboarding state of application package", - "examples": ["CREATED"] + "examples": [ + "CREATED" + ] }, "UsageState": { "title": "UsageState", - "enum": ["IN_USE", "NOT_IN_USE"], + "enum": [ + "IN_USE", + "NOT_IN_USE" + ], "type": "string", "description": "Usage state of the onboarded instance of the application package", - "examples": ["IN_USE"] + "examples": [ + "IN_USE" + ] }, "AppPkgInfo.links": { "title": "AppPkgInfo.links", - "required": ["self", "appD", "appPkgContent"], + "required": [ + "self", + "appD", + "appPkgContent" + ], "type": "object", "properties": { "self": { @@ -2358,11 +2796,15 @@ ], "type": "string", "description": "Discriminator for the different notification types", - "examples": ["AppPackageOnBoarded"] + "examples": [ + "AppPackageOnBoarded" + ] }, "AppPkgNotification.links": { "title": "AppPkgNotification.links", - "required": ["subscription"], + "required": [ + "subscription" + ], "type": "object", "properties": { "subscription": { @@ -2373,7 +2815,12 @@ }, "AppPkgSubscriptionInfo": { "title": "AppPkgSubscriptionInfo", - "required": ["id", "subscriptionType", "callbackUri", "_links"], + "required": [ + "id", + "subscriptionType", + "callbackUri", + "_links" + ], "type": "object", "properties": { "id": { @@ -2403,11 +2850,15 @@ ], "type": "string", "description": "type of a subscription.", - "examples": ["AppPackageOnBoardingSubscription"] + "examples": [ + "AppPackageOnBoardingSubscription" + ] }, "AppPkgSubscriptionInfo.links": { "title": "AppPkgSubscriptionInfo.links", - "required": ["self"], + "required": [ + "self" + ], "type": "object", "properties": { "self": { @@ -2418,7 +2869,9 @@ }, "AppPkgSubscriptionLinkList": { "title": "AppPkgSubscriptionLinkList", - "required": ["_links"], + "required": [ + "_links" + ], "type": "object", "properties": { "_links": { @@ -2429,7 +2882,9 @@ }, "AppPkgSubscriptionLinkList.links": { "title": "AppPkgSubscriptionLinkList.links", - "required": ["self"], + "required": [ + "self" + ], "type": "object", "properties": { "self": { @@ -2447,7 +2902,10 @@ }, "Subscriptions.AppPkgSubscription": { "title": "Subscriptions.AppPkgSubscription", - "required": ["href", "subscriptionType"], + "required": [ + "href", + "subscriptionType" + ], "type": "object", "properties": { "href": { @@ -2462,7 +2920,10 @@ }, "AppPkgSubscription": { "title": "AppPkgSubscription", - "required": ["callbackUri", "subscriptionType"], + "required": [ + "callbackUri", + "subscriptionType" + ], "type": "object", "properties": { "callbackUri": { @@ -2516,14 +2977,20 @@ "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"] + "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.\n" }, "Checksum": { "title": "Checksum", - "required": ["algorithm", "hash"], + "required": [ + "algorithm", + "hash" + ], "type": "object", "properties": { "algorithm": { @@ -2538,7 +3005,12 @@ }, "CreateAppPkg": { "title": "CreateAppPkg", - "required": ["appPkgName", "appPkgPath", "appPkgVersion", "checksum"], + "required": [ + "appPkgName", + "appPkgPath", + "appPkgVersion", + "checksum" + ], "type": "object", "properties": { "appPkgName": { @@ -2570,7 +3042,9 @@ }, "LinkType": { "title": "LinkType", - "required": ["href"], + "required": [ + "href" + ], "type": "object", "properties": { "href": { @@ -2608,7 +3082,10 @@ }, "TimeStamp": { "title": "TimeStamp", - "required": ["nanoSeconds", "seconds"], + "required": [ + "nanoSeconds", + "seconds" + ], "type": "object", "properties": { "nanoSeconds": { @@ -2627,22 +3104,37 @@ "title": "OperationalState", "description": "Operational state of the application package:\n\nENABLED: the application package can be used for instantiation of new application instances.\nDISABLED: the application package cannot be used for further application instantiation requests.\n", "type": "string", - "enum": ["DISABLED", "ENABLED"], - "examples": ["DISABLED"] + "enum": [ + "DISABLED", + "ENABLED" + ], + "examples": [ + "DISABLED" + ] }, "OperationalState2": { "title": "OperationalState", "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.\n", "type": "string", - "enum": ["DISABLED", "ENABLED"], - "examples": ["ENABLED"] + "enum": [ + "DISABLED", + "ENABLED" + ], + "examples": [ + "ENABLED" + ] }, "OperationalState3": { "title": "OperationalState", "description": "Match particular operational state of the application package.\n\nENABLED: the application package can be used for instantiation of new application instances.\nDISABLED: the application package cannot be used for further application instantiation requests.\n\nMay be present if the \"subscriptionType\" attribute contains the value \"AppPackageChangeSubscription\",\nand shall be absent otherwise.\n", "type": "string", - "enum": ["ENABLED", "DISABLED"], - "examples": ["DISABLED"] + "enum": [ + "ENABLED", + "DISABLED" + ], + "examples": [ + "DISABLED" + ] } }, "responses": { @@ -2708,5 +3200,7 @@ } } }, - "security": [{}] + "security": [ + {} + ] } \ No newline at end of file diff --git a/MEC010-2_AppPkgMgmt.yaml b/MEC010-2_AppPkgMgmt.yaml index 5378515..7c1b2e9 100644 --- a/MEC010-2_AppPkgMgmt.yaml +++ b/MEC010-2_AppPkgMgmt.yaml @@ -1063,6 +1063,17 @@ components: 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: + type: string + $ref: '#/components/schemas/UserContextTransferCapability' + appNetworkPolicy: + type: string + $ref: '#/components/schemas/AppNetworkPolicy' swImageDescriptor: type: array items: @@ -1126,6 +1137,229 @@ components: 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 + nullable: true + 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. + + VirtualStorageDescriptor: + type: object + properties: + id: + type: string + description: Unique identifier of this VirtualStorageDesc in the VNFD. + typeOfStorage: + type: string + enum: + - BLOCK + - OBJECT + - FILE + description: Type of virtualized storage resource. + blockStorageData: + $ref: '#/components/schemas/BlockStorageData' + description: Details of block storage. Required when typeOfStorage is set to "BLOCK". + objectStorageData: + $ref: '#/components/schemas/ObjectStorageData' + description: Details of object storage. Required when typeOfStorage is set to "OBJECT". + fileStorageData: + $ref: '#/components/schemas/FileStorageData' + description: Details of file storage. Required when typeOfStorage is set to "FILE". + nfviMaintenanceInfo: + $ref: '#/components/schemas/NfviMaintenanceInfo' + description: Information on NFVI operation and maintenance rules for instances based on this VirtualStorageDesc. + perVnfcInstance: + type: boolean + description: Indicates whether the virtual storage resource should be instantiated per VNFC instance. + + NfviMaintenanceInfo: + type: object + properties: + impactNotificationLeadTime: + type: number + description: The minimum notification lead time requested for upcoming impact of the virtualised resource or their group. + isImpactMitigationRequested: + type: boolean + description: 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. + + 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. + VirtualLinkDescFlavour: + type: object + properties: + flavourId: + type: string + description: Identifies a flavour within a VnfVirtualLinkDesc. + qos: + $ref: '#/components/schemas/QoS' + description: QoS of the VL. + required: + - flavourId + + QoS: + 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 + 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: + - layerProtocol + + 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. + TerminateAppInstanceOpConfig: type: object description: > -- GitLab From 458fe2d6578d2832a0a69e0b198a82867f7f1479 Mon Sep 17 00:00:00 2001 From: umair zafar Date: Mon, 26 Jun 2023 12:47:52 +0500 Subject: [PATCH 49/50] Fix Enum issue in AppPkgMgmt API --- MEC010-2_AppPkgMgmt.json | 6380 +++++++++++++++++++------------------- MEC010-2_AppPkgMgmt.yaml | 47 +- 2 files changed, 3201 insertions(+), 3226 deletions(-) diff --git a/MEC010-2_AppPkgMgmt.json b/MEC010-2_AppPkgMgmt.json index d427698..164c89b 100644 --- a/MEC010-2_AppPkgMgmt.json +++ b/MEC010-2_AppPkgMgmt.json @@ -1,3206 +1,3178 @@ { - "openapi": "3.1.0", - "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" - }, - "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" - } - ], - "servers": [ - { - "url": "https://localhost/app_pkgm/v1", - "variables": {} - } - ], - "paths": { - "/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": "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": "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 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": [] - }, - "/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}": { - "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": "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": {}, - "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" - } - } - } - }, - "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": "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": {} - }, - "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 - }, - "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", - "in": "path", - "description": "Identifier of an individual application package resource", - "required": true, - "style": "simple", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "description": "Parameters for application package information modification.", - "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": { - "$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": {}, - "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": {} - }, - "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 - }, - "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", - "in": "path", - "description": "Identifier of an individual application package resource", - "required": true, - "style": "simple", - "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": { - "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", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgSubscription" - } - } - }, - "required": true - }, - "responses": { - "201": { - "description": "Successful response for created subscription", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgSubscriptionInfo", - "descriprion": "Upon success, a response message contentrepresenting the created subscription shall bereturned." - } - } - } - }, - "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" - } - }, - "callbacks": { - "notification": { - "{$request.body#/subscription.href}": { - "post": { - "summary": "Callback POST used to send a notification", - "description": " The notification is triggered when a new application package is onboarded", - "operationId": "notificationPOST", - "requestBody": { - "description": "Subscription notification", - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgNotification" - } - } - } - }, - "responses": { - "204": { - "description": "No content" - }, - "404": { - "description": "Not found" - } - } - } - } - } - } - }, - "get": { - "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": {}, - "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." - } - } - } - }, - "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/{subscriptionId}": { - "get": { - "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": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgSubscriptionInfo", - "descriprion": "Upon success, a response message content containing a representation of the resource shall be returned." - } - } - } - }, - "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 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", - "schema": { - "type": "string" - } - } - ], - "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": [] - }, - "/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", - "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, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Content of the AppD is returned.", - "headers": {}, - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/AppD", - "descriprion": "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" - }, - "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}/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": "appDGET", - "parameters": [ - { - "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, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Content of the AppD is returned.", - "headers": {}, - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/AppD", - "descriprion": "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" - }, - "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}/package_content": { - "get": { - "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": {}, - "content": { - "application/zip": {} - } - }, - "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 - }, - "put": { - "tags": [ - "app-pkgm" - ], - "summary": "Uploads the content of application package.", - "description": "Uploads the content of application package.", - "operationId": "appPkgPUT", - "parameters": [ - { - "name": "appPkgId", - "in": "path", - "description": "Identifier of an on-boarded individual application package", - "required": true, - "style": "simple", - "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": { - "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" - } - } - ], - "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": {} - }, - "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 - }, - "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", - "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": [] - }, - "/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" - ], - "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": "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": null, - "type": "array", - "items": { - "$ref": "#/components/schemas/VirtualStorageDescriptor" - }, - "description": "Defines descriptors of virtual storage resources to be used by the MEC application.", - "userContextTransferCapability": { - "type": "string", - "$ref": "#/components/schemas/UserContextTransferCapability" - }, - "appNetworkPolicy": { - "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": { - "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.\nNOTE 2: This attribute indicates groups of transport bindings which a service-producing MEC application requires to \n be supported by the platform in order to be able to produce its services. At least one of the indicated groups \n needs to be supported to fulfil the requirements.\nNOTE 3: The support of application descriptor containing descriptions of multiple virtualisation containers and/or \n application software images is out of scope of the present document.\nNOTE 4: External interfaces are used to connect to e.g. other MEC applications, MEC services, UEs and also MEC \n platform and OSS.\nNOTE 5: Only one of virtualComputeDescriptor or osContainerDescriptor shall be present. If virtualComputeDescriptor \n presents, only a single swImageDescriptor shall be provided. \nNOTE 6: If the AppD includes virtualComputeDesc, then logicalNode and requestedAdditionalCapabilites shall not be \n present.\nNOTE 7: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. \n" - }, - "changeAppInstanceStateOpConfig": { - "type": "object", - "description": "This information element defines attributes that affect the invocation of the OperateVnf operation.\n", - "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. \n" - }, - "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.\n" - } - } - }, - "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", - "nullable": true, - "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." - }, - "VirtualStorageDescriptor": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Unique identifier of this VirtualStorageDesc in the VNFD." - }, - "typeOfStorage": { - "type": "string", - "enum": [ - "BLOCK", - "OBJECT", - "FILE" - ], - "description": "Type of virtualized storage resource." - }, - "blockStorageData": { - "$ref": "#/components/schemas/BlockStorageData", - "description": "Details of block storage. Required when typeOfStorage is set to \"BLOCK\"." - }, - "objectStorageData": { - "$ref": "#/components/schemas/ObjectStorageData", - "description": "Details of object storage. Required when typeOfStorage is set to \"OBJECT\"." - }, - "fileStorageData": { - "$ref": "#/components/schemas/FileStorageData", - "description": "Details of file storage. Required when typeOfStorage is set to \"FILE\"." - }, - "nfviMaintenanceInfo": { - "$ref": "#/components/schemas/NfviMaintenanceInfo", - "description": "Information on NFVI operation and maintenance rules for instances based on this VirtualStorageDesc." - }, - "perVnfcInstance": { - "type": "boolean", - "description": "Indicates whether the virtual storage resource should be instantiated per VNFC instance." - } - } - }, - "NfviMaintenanceInfo": { - "type": "object", - "properties": { - "impactNotificationLeadTime": { - "type": "number", - "description": "The minimum notification lead time requested for upcoming impact of the virtualised resource or their group." - }, - "isImpactMitigationRequested": { - "type": "boolean", - "description": "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." - } - } - }, - "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." - } - } - }, - "VirtualLinkDescFlavour": { - "type": "object", - "properties": { - "flavourId": { - "type": "string", - "description": "Identifies a flavour within a VnfVirtualLinkDesc." - }, - "qos": { - "$ref": "#/components/schemas/QoS", - "description": "QoS of the VL." - } - }, - "required": [ - "flavourId" - ] - }, - "QoS": { - "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", - "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": [ - "layerProtocol" - ] - }, - "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." - } - } - }, - "TerminateAppInstanceOpConfig": { - "type": "object", - "description": "This information element defines attributes that affect the invocation of the TerminateVnf operation.\n", - "required": [ - "minGracefulTerminationTimeout" - ], - "properties": { - "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" - } - } - }, - "SwImageDescriptor": { - "type": "object", - "required": [ - "id", - "name", - "version", - "containerFormat", - "swImage" - ], - "properties": { - "id": { - "type": "string", - "description": "The identifier of this software image." - }, - "name": { - "type": "string", - "description": "The name of this software image." - }, - "version": { - "type": "string", - "items": { - "$ref": "#/components/schemas/Version" - }, - "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 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. See note 1." - }, - "minRam": { - "type": "number", - "description": "The minimal RAM requirement for this software image. See note 2." - }, - "size": { - "type": "number", - "description": "The size of this software image file. See note 3." - }, - "swImage": { - "type": "object", - "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. \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" - }, - "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" - }, - "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 \nsemantical context of the MCIO constraints and the parameter names for the MCIO constraints in the MCIO declarative descriptor.The mcioConstraintParams\nattribute shall have one of the following values, expressing the associated semantical context.. For the associated semantical context of the values,\nrefer to the description under the table 7.1.6.2.2-1 of ETSI GS NFV IFA 011 [1].\n" - }, - "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' \n field in Kubernetes® manifest. \nNOTE 2: When the container infrastructure service is a Kubernetes® instance it is the value of the 'kind' field in \n Kubernetes® 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": "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": { - "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 \n example implementation of extended resources is \"Extended Resources\" in case the container infrastructure \n service is a Kubernetes® instance. \n" - }, - "MonitoringParameter": { - "type": "object", - "required": [ - "monitoringParameterId", - "performanceMetric" - ], - "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." - } - } - }, - "VirtualComputeDescriptor": { - "title": "VirtualComputeDescriptor", - "type": "object", - "required": [ - "virtualComputeDescId", - "virtualMemory", - "virtualCpu" - ], - "properties": { - "virtualComputeDescId": { - "type": "string", - "description": "Unique identifier of this VirtualComputeDesc in the VNFD." - }, - "logicalNode": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LogicalNodeRequirements" - } - }, - "requestAdditionalCapabilities": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RequestedAdditionalCapabilityData" - } - }, - "computeRequirements": { - "description": "Specifies compute requirements.", - "type": "array", - "items": { - "type": "string", - "format": "not-specified" - } - }, - "virtualMemory": { - "$ref": "#/components/schemas/VirtualMemoryData" - }, - "virtualCpu": { - "$ref": "#/components/schemas/VirtualCpuData" - }, - "virtualDisk": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BlockStorageData" - } - } - } - }, - "VirtualCpuData": { - "type": "object", - "required": [ - "numVirtualCpu" - ], - "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": { - "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": { - "$ref": "#/components/schemas/KeyValuePairs" - }, - "description": "Array of key-value pair requirements on the Compute (CPU) for the VDU." - }, - "virtualCpuPinning": { - "$ref": "#/components/schemas/VirtualCpuPinningData" - } - } - }, - "BlockStorageData": { - "type": "object", - "required": [ - "sizeOfStorage" - ], - "properties": { - "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": { - "$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\n" - }, - "SwImageDesc": { - "type": "object", - "required": [ - "id", - "name", - "version", - "containerFormat", - "swImage" - ], - "properties": { - "id": { - "type": "string", - "description": "The identifier of this software image." - }, - "name": { - "type": "string", - "description": "The name of this software image." - }, - "version": { - "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": { - "type": "string", - "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": { - "$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" - }, - "ChecksumData": { - "type": "object", - "required": [ - "algorithm", - "hash" - ], - "properties": { - "algorithm": { - "type": "string", - "description": "Specifies the algorithm used to obtain the checksum value see note." - }, - "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]. \n" - }, - "VirtualCpuPinningData": { - "type": "object", - "properties": { - "virtualCpuPinningPolicy": { - "type": "string", - "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." - } - } - }, - "VirtualMemoryData": { - "type": "object", - "required": [ - "virtualMemSize" - ], - "properties": { - "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\non the platform. The cardinality can be 0 during the allocation request, if no particular\nvalue is requested.\n" - }, - "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." - } - } - }, - "RequestedAdditionalCapabilityData": { - "type": "object", - "required": [ - "requestedAdditionalCapabilityName", - "supportMandatory", - "targetPerformanceParameters" - ], - "properties": { - "requestedAdditionalCapabilityName": { - "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": { - "type": "string", - "description": "Specifies the minimum version of the requested additional capability" - }, - "preferredRequestedAdditionalCapabilityVersion": { - "type": "string", - "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" - } - } - } - }, - "KeyValuePairs": { - "description": "This data type represents a list of key-value pairs. The order of the pairs in the list is not\nsignificant. In JSON, a set of key-value pairs is represented as an object. It shall comply with\nthe provisions defined in clause 4 of IETF RFC 8259.\n", - "type": "object", - "properties": { - "key": { - "type": "string" - }, - "value": { - "type": "string" - } - } - }, - "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": { - "type": "string", - "format": "not-specified" - } - } - } - }, - "AppExternalCpd": { - "title": "AppExternalCpd", - "type": "object", - "properties": { - "inheritedAttributes": { - "type": "string", - "description": "All attributes inherited from Cpd. See note 2." - }, - "virtualNetworkInterfaceRequirements": { - "type": "array", - "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 \nconnection point.\n\nNOTE 1: An AppD conformant to the present document shall not specify \"virtualNetworkInterfaceRequirements\"\nin AppExternalCpd corresponding to primary container cluster network interfaces.\n\nNOTE 2: For CPs exposed by MEC Applications realized only by one or set of OS containers and used by\nthe OS containers to connect to the primary container cluster external network, the ability to configure\nvirtualised resources based on cpRole and trunkMode attributes might not be supported by all container technologies.\n" - }, - "AdditionalServiceData": { - "type": "object", - "required": [ - "portData" - ], - "properties": { - "portData": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ServicePortData" - }, - "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\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" - }, - "ServicePortData": { - "type": "object", - "required": [ - "name", - "protocol", - "port", - "portConfigurable" - ], - "properties": { - "name": { - "type": "string", - "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." - } - } - }, - "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\n" - }, - "AppPkgInfo": { - "title": "AppPkgInfo", - "required": [ - "id", - "appDId", - "appName", - "appSoftwareVersion", - "appDVersion", - "checksum", - "softwareImages", - "onboardingState", - "operationalState", - "usageState", - "mecInfo", - "_links" - ], - "type": "object", - "properties": { - "id": { - "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." - }, - "appProvider": { - "type": "string", - "description": "Provider of the application and of the AppD." - }, - "appName": { - "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." - }, - "appDVersion": { - "type": "string", - "description": "Identifies the version of the application descriptor." - }, - "checksum": { - "$ref": "#/components/schemas/Checksum" - }, - "signingCertificate": { - "type": "string", - "description": "The singleton signing certificate if it is included as a file in the AppD archive." - }, - "softwareImages": { - "description": "Information of application software image in application package. Type is TBD. See note 1.", - "type": "array", - "items": { - "type": "string", - "format": "not-specified" - } - }, - "additionalArtifacts": { - "description": "Additional information of application package artifacts that are not application \nsoftware images. Type is TBD. See note 2.\n", - "type": "array", - "items": { - "type": "string", - "format": "not-specified" - } - }, - "onboardingState": { - "$ref": "#/components/schemas/OnboardingState" - }, - "operationalState": { - "$ref": "#/components/schemas/AppPkg.OperationalState" - }, - "usageState": { - "$ref": "#/components/schemas/UsageState" - }, - "mecInfo": { - "type": "array", - "description": "The MEC version that compatible with this application. This information is copied from the AppD.", - "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'\"\n" - }, - "_links": { - "$ref": "#/components/schemas/AppPkgInfo.links" - } - }, - "description": "The data type AppPkgInfo represents the parameters for an application package resource\nNOTE 1: The data type of application software image information data model is related to virtualisation method and \n needs for further study.\nNOTE 2: The data type of additional information of application package artifacts is not specified in the present \n document.\nNOTE 3: This attribute applies only for the MEAO\n" - }, - "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:\nENABLED: the application package can be used for instantiation of new application instances.\nDISABLED: the application package cannot be used for further application instantiation requests.\n", - "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", - "required": [ - "id", - "notificationType", - "subscriptionId", - "timeStamp", - "appPkgId", - "appDId", - "operationalState", - "_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." - }, - "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" - ], - "type": "object", - "properties": { - "self": { - "$ref": "#/components/schemas/LinkType" - } - }, - "description": "Links to resources related to this resource." - }, - "AppPkgSubscriptionLinkList": { - "title": "AppPkgSubscriptionLinkList", - "required": [ - "_links" - ], - "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", - "required": [ - "self" - ], - "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." - }, - "Subscriptions.AppPkgSubscription": { - "title": "Subscriptions.AppPkgSubscription", - "required": [ - "href", - "subscriptionType" - ], - "type": "object", - "properties": { - "href": { - "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.'" - }, - "AppPkgSubscription": { - "title": "AppPkgSubscription", - "required": [ - "callbackUri", - "subscriptionType" - ], - "type": "object", - "properties": { - "callbackUri": { - "type": "string", - "description": "The URI of the endpoint for the notification to be sent to." - }, - "subscriptionType": { - "$ref": "#/components/schemas/AppPkgSubscriptionType" - }, - "appPkgFilter": { - "type": "array", - "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.'" - }, - "AppPkgFilter": { - "title": "AppPkgFilter", - "type": "object", - "properties": { - "appPkgInfoId": { - "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": { - "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", - "description": "Match the name of the onboarded application." - }, - "appSoftwareVersion": { - "type": "string", - "description": "Match the software version of the application package." - }, - "appDVersion": { - "type": "string", - "description": "Match the version of the application descriptor." - }, - "operationalState": { - "$ref": "#/components/schemas/OperationalState3" - }, - "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.\n" - }, - "Checksum": { - "title": "Checksum", - "required": [ - "algorithm", - "hash" - ], - "type": "object", - "properties": { - "algorithm": { - "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": { - "type": "string", - "description": "'String 1 The hexadecimal value of the checksum'" - } - } - }, - "CreateAppPkg": { - "title": "CreateAppPkg", - "required": [ - "appPkgName", - "appPkgPath", - "appPkgVersion", - "checksum" - ], - "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].\n" - }, - "LinkType": { - "title": "LinkType", - "required": [ - "href" - ], - "type": "object", - "properties": { - "href": { - "type": "string", - "description": "URI referring to a resource" - } - } - }, - "ProblemDetails": { - "title": "ProblemDetails", - "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", - "required": [ - "nanoSeconds", - "seconds" - ], - "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:\n\nENABLED: the application package can be used for instantiation of new application instances.\nDISABLED: the application package cannot be used for further application instantiation requests.\n", - "type": "string", - "enum": [ - "DISABLED", - "ENABLED" - ], - "examples": [ - "DISABLED" - ] - }, - "OperationalState2": { - "title": "OperationalState", - "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.\n", - "type": "string", - "enum": [ - "DISABLED", - "ENABLED" - ], - "examples": [ - "ENABLED" - ] - }, - "OperationalState3": { - "title": "OperationalState", - "description": "Match particular operational state of the application package.\n\nENABLED: the application package can be used for instantiation of new application instances.\nDISABLED: the application package cannot be used for further application instantiation requests.\n\nMay be present if the \"subscriptionType\" attribute contains the value \"AppPackageChangeSubscription\",\nand shall be absent otherwise.\n", - "type": "string", - "enum": [ - "ENABLED", - "DISABLED" - ], - "examples": [ - "DISABLED" - ] - } - }, - "responses": { - "400": { - "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.", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "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.", - "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.", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "429": { - "description": "Too Many Requests: used when a rate limiter has triggered.", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - } - }, - "security": [ - {} - ] + "openapi": "3.1.0", + "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" + }, + "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" + } + ], + "servers": [{ + "url": "https://localhost/app_pkgm/v1", + "variables": {} + }], + "paths": { + "/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": "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": "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 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": [] + }, + "/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}": { + "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": "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": {}, + "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" + } + } + } + }, + "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": "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": {} + }, + "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 + }, + "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", + "in": "path", + "description": "Identifier of an individual application package resource", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }], + "requestBody": { + "description": "Parameters for application package information modification.", + "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": { + "$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": {}, + "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": {} + }, + "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 + }, + "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", + "in": "path", + "description": "Identifier of an individual application package resource", + "required": true, + "style": "simple", + "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": { + "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", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPkgSubscription" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful response for created subscription", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPkgSubscriptionInfo", + "description": "Upon success, a response message contentrepresenting the created subscription shall bereturned." + } + } + } + }, + "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" + } + }, + "callbacks": { + "notification": { + "{$request.body#/subscription.href}": { + "post": { + "summary": "Callback POST used to send a notification", + "description": " The notification is triggered when a new application package is onboarded", + "operationId": "notificationPOST", + "requestBody": { + "description": "Subscription notification", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPkgNotification" + } + } + } + }, + "responses": { + "204": { + "description": "No content" + }, + "404": { + "description": "Not found" + } + } + } + } + } + } + }, + "get": { + "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": {}, + "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." + } + } + } + }, + "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/{subscriptionId}": { + "get": { + "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": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPkgSubscriptionInfo", + "description": "Upon success, a response message content containing a representation of the resource shall be returned." + } + } + } + }, + "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 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", + "schema": { + "type": "string" + } + }], + "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": [] + }, + "/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", + "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, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Content of the AppD is returned.", + "headers": {}, + "content": { + "text/plain": { + "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" + }, + "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}/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": "appDGET", + "parameters": [{ + "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, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Content of the AppD is returned.", + "headers": {}, + "content": { + "text/plain": { + "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" + }, + "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}/package_content": { + "get": { + "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": {}, + "content": { + "application/zip": {} + } + }, + "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 + }, + "put": { + "tags": [ + "app-pkgm" + ], + "summary": "Uploads the content of application package.", + "description": "Uploads the content of application package.", + "operationId": "appPkgPUT", + "parameters": [{ + "name": "appPkgId", + "in": "path", + "description": "Identifier of an on-boarded individual application package", + "required": true, + "style": "simple", + "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": { + "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" + } + }], + "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": {} + }, + "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 + }, + "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", + "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": [] + }, + "/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" + ], + "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": "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": { + "type": "string", + "$ref": "#/components/schemas/UserContextTransferCapability" + }, + "appNetworkPolicy": { + "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": { + "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.\nNOTE 2: This attribute indicates groups of transport bindings which a service-producing MEC application requires to \n be supported by the platform in order to be able to produce its services. At least one of the indicated groups \n needs to be supported to fulfil the requirements.\nNOTE 3: The support of application descriptor containing descriptions of multiple virtualisation containers and/or \n application software images is out of scope of the present document.\nNOTE 4: External interfaces are used to connect to e.g. other MEC applications, MEC services, UEs and also MEC \n platform and OSS.\nNOTE 5: Only one of virtualComputeDescriptor or osContainerDescriptor shall be present. If virtualComputeDescriptor \n presents, only a single swImageDescriptor shall be provided. \nNOTE 6: If the AppD includes virtualComputeDesc, then logicalNode and requestedAdditionalCapabilites shall not be \n present.\nNOTE 7: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. \n" + }, + "changeAppInstanceStateOpConfig": { + "type": "object", + "description": "This information element defines attributes that affect the invocation of the OperateVnf operation.\n", + "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. \n" + }, + "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.\n" + } + } + }, + "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." + }, + "VirtualStorageDescriptor": { + "type": "object", + "description": "Defines descriptors of virtual storage resources to be used by the MEC application.", + "required": [ + "id", + "typeOfStorage" + ], + "properties": { + "id": { + "type": "string", + "description": "Unique identifier of this VirtualStorageDesc in the VNFD." + }, + "typeOfStorage": { + "type": "string", + "enum": [ + "BLOCK", + "OBJECT", + "FILE" + ], + "description": "Type of virtualized storage resource." + }, + "blockStorageData": { + "$ref": "#/components/schemas/BlockStorageData", + "description": "Details of block storage. Required when typeOfStorage is set to \"BLOCK\"." + }, + "objectStorageData": { + "$ref": "#/components/schemas/ObjectStorageData", + "description": "Details of object storage. Required when typeOfStorage is set to \"OBJECT\"." + }, + "fileStorageData": { + "$ref": "#/components/schemas/FileStorageData", + "description": "Details of file storage. Required when typeOfStorage is set to \"FILE\"." + }, + "nfviMaintenanceInfo": { + "$ref": "#/components/schemas/NfviMaintenanceInfo", + "description": "Information on NFVI operation and maintenance rules for instances based on this VirtualStorageDesc." + }, + "perVnfcInstance": { + "type": "boolean", + "description": "Indicates whether the virtual storage resource should be instantiated per VNFC instance." + } + } + }, + "NfviMaintenanceInfo": { + "type": "object", + "properties": { + "impactNotificationLeadTime": { + "type": "number", + "description": "The minimum notification lead time requested for upcoming impact of the virtualised resource or their group." + }, + "isImpactMitigationRequested": { + "type": "boolean", + "description": "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." + } + } + }, + "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." + } + } + }, + "VirtualLinkDescFlavour": { + "type": "object", + "properties": { + "flavourId": { + "type": "string", + "description": "Identifies a flavour within a VnfVirtualLinkDesc." + }, + "qos": { + "$ref": "#/components/schemas/QoS", + "description": "QoS of the VL." + } + }, + "required": [ + "flavourId" + ] + }, + "QoS": { + "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", + "properties": { + "layerProtocol": { + "type": "array", + "description": "Specifies the protocols that the VL uses.", + "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.)." + } + }, + "required": [ + "layerProtocol" + ] + }, + "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." + } + } + }, + "TerminateAppInstanceOpConfig": { + "type": "object", + "description": "This information element defines attributes that affect the invocation of the TerminateVnf operation.\n", + "required": [ + "minGracefulTerminationTimeout" + ], + "properties": { + "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" + } + } + }, + "SwImageDescriptor": { + "type": "object", + "required": [ + "id", + "name", + "version", + "containerFormat", + "swImage" + ], + "properties": { + "id": { + "type": "string", + "description": "The identifier of this software image." + }, + "name": { + "type": "string", + "description": "The name of this software image." + }, + "version": { + "type": "string", + "items": { + "$ref": "#/components/schemas/Version" + }, + "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 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. See note 1." + }, + "minRam": { + "type": "number", + "description": "The minimal RAM requirement for this software image. See note 2." + }, + "size": { + "type": "number", + "description": "The size of this software image file. See note 3." + }, + "swImage": { + "type": "object", + "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. \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" + }, + "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" + }, + "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 \nsemantical context of the MCIO constraints and the parameter names for the MCIO constraints in the MCIO declarative descriptor.The mcioConstraintParams\nattribute shall have one of the following values, expressing the associated semantical context.. For the associated semantical context of the values,\nrefer to the description under the table 7.1.6.2.2-1 of ETSI GS NFV IFA 011 [1].\n" + }, + "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' \n field in Kubernetes® manifest. \nNOTE 2: When the container infrastructure service is a Kubernetes® instance it is the value of the 'kind' field in \n Kubernetes® 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": "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": { + "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 \n example implementation of extended resources is \"Extended Resources\" in case the container infrastructure \n service is a Kubernetes® instance. \n" + }, + "MonitoringParameter": { + "type": "object", + "required": [ + "monitoringParameterId", + "performanceMetric" + ], + "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." + } + } + }, + "VirtualComputeDescriptor": { + "title": "VirtualComputeDescriptor", + "type": "object", + "required": [ + "virtualComputeDescId", + "virtualMemory", + "virtualCpu" + ], + "properties": { + "virtualComputeDescId": { + "type": "string", + "description": "Unique identifier of this VirtualComputeDesc in the VNFD." + }, + "logicalNode": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LogicalNodeRequirements" + } + }, + "requestAdditionalCapabilities": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RequestedAdditionalCapabilityData" + } + }, + "computeRequirements": { + "description": "Specifies compute requirements.", + "type": "array", + "items": { + "type": "string", + "format": "not-specified" + } + }, + "virtualMemory": { + "$ref": "#/components/schemas/VirtualMemoryData" + }, + "virtualCpu": { + "$ref": "#/components/schemas/VirtualCpuData" + }, + "virtualDisk": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BlockStorageData" + } + } + } + }, + "VirtualCpuData": { + "type": "object", + "required": [ + "numVirtualCpu" + ], + "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": { + "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": { + "$ref": "#/components/schemas/KeyValuePairs" + }, + "description": "Array of key-value pair requirements on the Compute (CPU) for the VDU." + }, + "virtualCpuPinning": { + "$ref": "#/components/schemas/VirtualCpuPinningData" + } + } + }, + "BlockStorageData": { + "type": "object", + "required": [ + "sizeOfStorage" + ], + "properties": { + "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": { + "$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\n" + }, + "SwImageDesc": { + "type": "object", + "required": [ + "id", + "name", + "version", + "containerFormat", + "swImage" + ], + "properties": { + "id": { + "type": "string", + "description": "The identifier of this software image." + }, + "name": { + "type": "string", + "description": "The name of this software image." + }, + "version": { + "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": { + "type": "string", + "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": { + "$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" + }, + "ChecksumData": { + "type": "object", + "required": [ + "algorithm", + "hash" + ], + "properties": { + "algorithm": { + "type": "string", + "description": "Specifies the algorithm used to obtain the checksum value see note." + }, + "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]. \n" + }, + "VirtualCpuPinningData": { + "type": "object", + "properties": { + "virtualCpuPinningPolicy": { + "type": "string", + "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." + } + } + }, + "VirtualMemoryData": { + "type": "object", + "required": [ + "virtualMemSize" + ], + "properties": { + "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\non the platform. The cardinality can be 0 during the allocation request, if no particular\nvalue is requested.\n" + }, + "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." + } + } + }, + "RequestedAdditionalCapabilityData": { + "type": "object", + "required": [ + "requestedAdditionalCapabilityName", + "supportMandatory", + "targetPerformanceParameters" + ], + "properties": { + "requestedAdditionalCapabilityName": { + "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": { + "type": "string", + "description": "Specifies the minimum version of the requested additional capability" + }, + "preferredRequestedAdditionalCapabilityVersion": { + "type": "string", + "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" + } + } + } + }, + "KeyValuePairs": { + "description": "This data type represents a list of key-value pairs. The order of the pairs in the list is not\nsignificant. In JSON, a set of key-value pairs is represented as an object. It shall comply with\nthe provisions defined in clause 4 of IETF RFC 8259.\n", + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "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": { + "type": "string", + "format": "not-specified" + } + } + } + }, + "AppExternalCpd": { + "title": "AppExternalCpd", + "type": "object", + "properties": { + "inheritedAttributes": { + "type": "string", + "description": "All attributes inherited from Cpd. See note 2." + }, + "virtualNetworkInterfaceRequirements": { + "type": "array", + "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 \nconnection point.\n\nNOTE 1: An AppD conformant to the present document shall not specify \"virtualNetworkInterfaceRequirements\"\nin AppExternalCpd corresponding to primary container cluster network interfaces.\n\nNOTE 2: For CPs exposed by MEC Applications realized only by one or set of OS containers and used by\nthe OS containers to connect to the primary container cluster external network, the ability to configure\nvirtualised resources based on cpRole and trunkMode attributes might not be supported by all container technologies.\n" + }, + "AdditionalServiceData": { + "type": "object", + "required": [ + "portData" + ], + "properties": { + "portData": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ServicePortData" + }, + "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\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" + }, + "ServicePortData": { + "type": "object", + "required": [ + "name", + "protocol", + "port", + "portConfigurable" + ], + "properties": { + "name": { + "type": "string", + "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." + } + } + }, + "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\n" + }, + "AppPkgInfo": { + "title": "AppPkgInfo", + "required": [ + "id", + "appDId", + "appName", + "appSoftwareVersion", + "appDVersion", + "checksum", + "softwareImages", + "onboardingState", + "operationalState", + "usageState", + "mecInfo", + "_links" + ], + "type": "object", + "properties": { + "id": { + "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." + }, + "appProvider": { + "type": "string", + "description": "Provider of the application and of the AppD." + }, + "appName": { + "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." + }, + "appDVersion": { + "type": "string", + "description": "Identifies the version of the application descriptor." + }, + "checksum": { + "$ref": "#/components/schemas/Checksum" + }, + "signingCertificate": { + "type": "string", + "description": "The singleton signing certificate if it is included as a file in the AppD archive." + }, + "softwareImages": { + "description": "Information of application software image in application package. Type is TBD. See note 1.", + "type": "array", + "items": { + "type": "string", + "format": "not-specified" + } + }, + "additionalArtifacts": { + "description": "Additional information of application package artifacts that are not application \nsoftware images. Type is TBD. See note 2.\n", + "type": "array", + "items": { + "type": "string", + "format": "not-specified" + } + }, + "onboardingState": { + "$ref": "#/components/schemas/OnboardingState" + }, + "operationalState": { + "$ref": "#/components/schemas/AppPkg.OperationalState" + }, + "usageState": { + "$ref": "#/components/schemas/UsageState" + }, + "mecInfo": { + "type": "array", + "description": "The MEC version that compatible with this application. This information is copied from the AppD.", + "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'\"\n" + }, + "_links": { + "$ref": "#/components/schemas/AppPkgInfo.links" + } + }, + "description": "The data type AppPkgInfo represents the parameters for an application package resource\nNOTE 1: The data type of application software image information data model is related to virtualisation method and \n needs for further study.\nNOTE 2: The data type of additional information of application package artifacts is not specified in the present \n document.\nNOTE 3: This attribute applies only for the MEAO\n" + }, + "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:\nENABLED: the application package can be used for instantiation of new application instances.\nDISABLED: the application package cannot be used for further application instantiation requests.\n", + "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", + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "appPkgId", + "appDId", + "operationalState", + "_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." + }, + "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" + ], + "type": "object", + "properties": { + "self": { + "$ref": "#/components/schemas/LinkType" + } + }, + "description": "Links to resources related to this resource." + }, + "AppPkgSubscriptionLinkList": { + "title": "AppPkgSubscriptionLinkList", + "required": [ + "_links" + ], + "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", + "required": [ + "self" + ], + "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." + }, + "Subscriptions.AppPkgSubscription": { + "title": "Subscriptions.AppPkgSubscription", + "required": [ + "href", + "subscriptionType" + ], + "type": "object", + "properties": { + "href": { + "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.'" + }, + "AppPkgSubscription": { + "title": "AppPkgSubscription", + "required": [ + "callbackUri", + "subscriptionType" + ], + "type": "object", + "properties": { + "callbackUri": { + "type": "string", + "description": "The URI of the endpoint for the notification to be sent to." + }, + "subscriptionType": { + "$ref": "#/components/schemas/AppPkgSubscriptionType" + }, + "appPkgFilter": { + "type": "array", + "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.'" + }, + "AppPkgFilter": { + "title": "AppPkgFilter", + "type": "object", + "properties": { + "appPkgInfoId": { + "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": { + "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", + "description": "Match the name of the onboarded application." + }, + "appSoftwareVersion": { + "type": "string", + "description": "Match the software version of the application package." + }, + "appDVersion": { + "type": "string", + "description": "Match the version of the application descriptor." + }, + "operationalState": { + "$ref": "#/components/schemas/OperationalState3" + }, + "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.\n" + }, + "Checksum": { + "title": "Checksum", + "required": [ + "algorithm", + "hash" + ], + "type": "object", + "properties": { + "algorithm": { + "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": { + "type": "string", + "description": "'String 1 The hexadecimal value of the checksum'" + } + } + }, + "CreateAppPkg": { + "title": "CreateAppPkg", + "required": [ + "appPkgName", + "appPkgPath", + "appPkgVersion", + "checksum" + ], + "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].\n" + }, + "LinkType": { + "title": "LinkType", + "required": [ + "href" + ], + "type": "object", + "properties": { + "href": { + "type": "string", + "description": "URI referring to a resource" + } + } + }, + "ProblemDetails": { + "title": "ProblemDetails", + "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", + "required": [ + "nanoSeconds", + "seconds" + ], + "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:\n\nENABLED: the application package can be used for instantiation of new application instances.\nDISABLED: the application package cannot be used for further application instantiation requests.\n", + "type": "string", + "enum": [ + "DISABLED", + "ENABLED" + ], + "examples": [ + "DISABLED" + ] + }, + "OperationalState2": { + "title": "OperationalState", + "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.\n", + "type": "string", + "enum": [ + "DISABLED", + "ENABLED" + ], + "examples": [ + "ENABLED" + ] + }, + "OperationalState3": { + "title": "OperationalState", + "description": "Match particular operational state of the application package.\n\nENABLED: the application package can be used for instantiation of new application instances.\nDISABLED: the application package cannot be used for further application instantiation requests.\n\nMay be present if the \"subscriptionType\" attribute contains the value \"AppPackageChangeSubscription\",\nand shall be absent otherwise.\n", + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ], + "examples": [ + "DISABLED" + ] + } + }, + "responses": { + "400": { + "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.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "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.", + "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.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "429": { + "description": "Too Many Requests: used when a rate limiter has triggered.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + "security": [{}] } \ No newline at end of file diff --git a/MEC010-2_AppPkgMgmt.yaml b/MEC010-2_AppPkgMgmt.yaml index 7c1b2e9..b0cd38f 100644 --- a/MEC010-2_AppPkgMgmt.yaml +++ b/MEC010-2_AppPkgMgmt.yaml @@ -489,7 +489,7 @@ paths: application/json: schema: $ref: '#/components/schemas/AppPkgSubscriptionInfo' - descriprion: Upon success, a response message contentrepresenting the created subscription shall bereturned. + description: Upon success, a response message contentrepresenting the created subscription shall bereturned. '400': $ref: '#/components/responses/400' '401': @@ -574,7 +574,7 @@ paths: application/json: schema: $ref: '#/components/schemas/AppPkgSubscriptionInfo' - descriprion: Upon success, a response message content containing a representation of the resource shall be returned. + description: Upon success, a response message content containing a representation of the resource shall be returned. '400': $ref: '#/components/responses/400' '401': @@ -679,7 +679,7 @@ paths: text/plain: schema: $ref: '#/components/schemas/AppD' - descriprion: 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 + 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: {} @@ -755,7 +755,7 @@ paths: text/plain: schema: $ref: '#/components/schemas/AppD' - descriprion: 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 + 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: {} @@ -1064,10 +1064,10 @@ components: 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. + type: array + items: + $ref: '#/components/schemas/VirtualStorageDescriptor' + description: Defines descriptors of virtual storage resources to be used by the MEC application. userContextTransferCapability: type: string $ref: '#/components/schemas/UserContextTransferCapability' @@ -1165,7 +1165,6 @@ components: description: If the application is stateful, this attribute shall be set to true. Otherwise, set to false. userContextTransferSupport: type: boolean - nullable: true 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 @@ -1173,6 +1172,10 @@ components: VirtualStorageDescriptor: type: object + description: Defines descriptors of virtual storage resources to be used by the MEC application. + required: + - id + - typeOfStorage properties: id: type: string @@ -1213,10 +1216,10 @@ components: type: array items: type: string - enum: - - NO_MIGRATION - - OFFLINE_MIGRATION - - LIVE_MIGRATION + 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 @@ -1304,17 +1307,17 @@ components: properties: layerProtocol: type: array + description: Specifies the protocols that the VL uses. items: type: string - description: Specifies the protocols that the VL uses. - enum: - - Ethernet - - MPLS - - ODU2 - - IPV4 - - IPV6 - - Pseudo-Wire - - Etc. + enum: + - Ethernet + - MPLS + - ODU2 + - IPV4 + - IPV6 + - Pseudo-Wire + - Etc minItems: 1 flowPattern: type: string -- GitLab From a02039525f12f70dc413a51dbbd098fb9c2150e8 Mon Sep 17 00:00:00 2001 From: umair zafar Date: Mon, 26 Jun 2023 16:47:16 +0500 Subject: [PATCH 50/50] Update proto3 descriptors for AppPkgMgmt API --- .../proto3/.openapi-generator/FILES | 14 +++++ AppPkgMgmtProto3/proto3/models/app_d.proto | 10 ++++ .../proto3/models/app_network_policy.proto | 23 +++++++++ .../app_network_policy_steered_network.proto | 29 +++++++++++ .../proto3/models/connectivity_type.proto | 36 +++++++++++++ .../proto3/models/file_storage_data.proto | 29 +++++++++++ .../max_number_of_impacted_instances.proto | 26 ++++++++++ .../min_number_of_preserved_instances.proto | 26 ++++++++++ .../proto3/models/nfvi_maintenance_info.proto | 49 ++++++++++++++++++ .../proto3/models/object_storage_data.proto | 23 +++++++++ AppPkgMgmtProto3/proto3/models/qo_s.proto | 29 +++++++++++ .../proto3/models/transport_descriptor.proto | 3 +- .../proto3/models/transport_types.proto | 26 ++++++++++ .../user_context_transfer_capability.proto | 26 ++++++++++ .../models/virtual_link_desc_flavour.proto | 26 ++++++++++ .../models/virtual_storage_descriptor.proto | 47 +++++++++++++++++ .../proto3/models/vnf_virtual_link_desc.proto | 51 +++++++++++++++++++ 17 files changed, 472 insertions(+), 1 deletion(-) create mode 100644 AppPkgMgmtProto3/proto3/models/app_network_policy.proto create mode 100644 AppPkgMgmtProto3/proto3/models/app_network_policy_steered_network.proto create mode 100644 AppPkgMgmtProto3/proto3/models/connectivity_type.proto create mode 100644 AppPkgMgmtProto3/proto3/models/file_storage_data.proto create mode 100644 AppPkgMgmtProto3/proto3/models/max_number_of_impacted_instances.proto create mode 100644 AppPkgMgmtProto3/proto3/models/min_number_of_preserved_instances.proto create mode 100644 AppPkgMgmtProto3/proto3/models/nfvi_maintenance_info.proto create mode 100644 AppPkgMgmtProto3/proto3/models/object_storage_data.proto create mode 100644 AppPkgMgmtProto3/proto3/models/qo_s.proto create mode 100644 AppPkgMgmtProto3/proto3/models/transport_types.proto create mode 100644 AppPkgMgmtProto3/proto3/models/user_context_transfer_capability.proto create mode 100644 AppPkgMgmtProto3/proto3/models/virtual_link_desc_flavour.proto create mode 100644 AppPkgMgmtProto3/proto3/models/virtual_storage_descriptor.proto create mode 100644 AppPkgMgmtProto3/proto3/models/vnf_virtual_link_desc.proto diff --git a/AppPkgMgmtProto3/proto3/.openapi-generator/FILES b/AppPkgMgmtProto3/proto3/.openapi-generator/FILES index e551fcf..49b63b7 100644 --- a/AppPkgMgmtProto3/proto3/.openapi-generator/FILES +++ b/AppPkgMgmtProto3/proto3/.openapi-generator/FILES @@ -4,6 +4,8 @@ models/action.proto models/additional_service_data.proto models/app_d.proto models/app_external_cpd.proto +models/app_network_policy.proto +models/app_network_policy_steered_network.proto models/app_pkg_filter.proto models/app_pkg_info.proto models/app_pkg_info_links.proto @@ -22,9 +24,11 @@ models/category_ref.proto models/change_app_instance_state_op_config.proto models/checksum.proto models/checksum_data.proto +models/connectivity_type.proto models/create_app_pkg.proto models/dns_rule_descriptor.proto models/feature_dependency.proto +models/file_storage_data.proto models/filter_type.proto models/interface_descriptor.proto models/interface_type.proto @@ -33,14 +37,19 @@ models/key_value_pairs.proto models/latency_descriptor.proto models/link_type.proto models/logical_node_requirements.proto +models/max_number_of_impacted_instances.proto models/mcio_constraint_params.proto models/mcio_identification_data.proto +models/min_number_of_preserved_instances.proto models/monitoring_parameter.proto +models/nfvi_maintenance_info.proto models/o_auth2_info.proto +models/object_storage_data.proto models/onboarding_state.proto models/operational_state.proto models/os_container_descriptor.proto models/problem_details.proto +models/qo_s.proto models/requested_additional_capability_data.proto models/security_info.proto models/serializer_type.proto @@ -56,15 +65,20 @@ models/traffic_filter.proto models/traffic_rule_descriptor.proto models/transport_dependency.proto models/transport_descriptor.proto +models/transport_types.proto models/transports_supported.proto models/tunnel_info.proto models/tunnel_type.proto models/usage_state.proto +models/user_context_transfer_capability.proto models/version.proto models/virtual_compute_descriptor.proto models/virtual_cpu_data.proto models/virtual_cpu_pinning_data.proto +models/virtual_link_desc_flavour.proto models/virtual_memory_data.proto models/virtual_network_interface_requirements.proto +models/virtual_storage_descriptor.proto +models/vnf_virtual_link_desc.proto services/app_pkgm_notifications_service.proto services/app_pkgm_service.proto diff --git a/AppPkgMgmtProto3/proto3/models/app_d.proto b/AppPkgMgmtProto3/proto3/models/app_d.proto index 3b9f065..ae31b01 100644 --- a/AppPkgMgmtProto3/proto3/models/app_d.proto +++ b/AppPkgMgmtProto3/proto3/models/app_d.proto @@ -15,6 +15,7 @@ syntax = "proto3"; package mec0102; import public "models/app_external_cpd.proto"; +import public "models/app_network_policy.proto"; import public "models/change_app_instance_state_op_config.proto"; import public "models/dns_rule_descriptor.proto"; import public "models/feature_dependency.proto"; @@ -30,7 +31,9 @@ import public "models/sw_image_descriptor.proto"; import public "models/terminate_app_instance_op_config.proto"; import public "models/traffic_rule_descriptor.proto"; import public "models/transport_dependency.proto"; +import public "models/user_context_transfer_capability.proto"; import public "models/virtual_compute_descriptor.proto"; +import public "models/virtual_storage_descriptor.proto"; message AppD { @@ -43,6 +46,13 @@ message AppD { // The logical node requirements. See note 6 and note 7. repeated LogicalNodeRequirements logicalNode = 534614443; + // Defines descriptors of virtual storage resources to be used by the MEC application. + repeated VirtualStorageDescriptor virtualStorageDescriptor = 346033281; + + UserContextTransferCapability userContextTransferCapability = 306228764; + + AppNetworkPolicy appNetworkPolicy = 351140772; + // 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. repeated RequestedAdditionalCapabilityData requestAdditionalCapabilities = 387050772; diff --git a/AppPkgMgmtProto3/proto3/models/app_network_policy.proto b/AppPkgMgmtProto3/proto3/models/app_network_policy.proto new file mode 100644 index 0000000..3f4bf25 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_network_policy.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_network_policy_steered_network.proto"; + +message AppNetworkPolicy { + + AppNetworkPolicySteeredNetwork steeredNetwork = 32182818; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_network_policy_steered_network.proto b/AppPkgMgmtProto3/proto3/models/app_network_policy_steered_network.proto new file mode 100644 index 0000000..2bd70ac --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_network_policy_steered_network.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message AppNetworkPolicySteeredNetwork { + + // If present and the application prefers to use a cellular network, set to true. Otherwise, set to false. + bool cellularNetwork = 392334692; + + // If present and the application prefers to use a Wi-Fi network, set to true. Otherwise, set to false. + bool wiMinusfiNetwork = 282209517; + + // If present and the application prefers to use a fixed access network, set to true. Otherwise, set to false. + bool fixedAccessNetwork = 113322265; + +} diff --git a/AppPkgMgmtProto3/proto3/models/connectivity_type.proto b/AppPkgMgmtProto3/proto3/models/connectivity_type.proto new file mode 100644 index 0000000..1568e9b --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/connectivity_type.proto @@ -0,0 +1,36 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ConnectivityType { + + // Specifies the protocols that the VL uses. + enum LayerProtocolEnum { + ETHERNET = 0; + MPLS = 1; + ODU2 = 2; + IPV4 = 3; + IPV6 = 4; + PSEUDO_WIRE = 5; + ETC = 6; + } + + LayerProtocolEnum layerProtocol = 436659977; + + // Specifies the flow pattern of the connectivity (Line, Tree, Mesh, etc.). + string flowPattern = 159675011; + +} diff --git a/AppPkgMgmtProto3/proto3/models/file_storage_data.proto b/AppPkgMgmtProto3/proto3/models/file_storage_data.proto new file mode 100644 index 0000000..c8d2383 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/file_storage_data.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/vnf_virtual_link_desc.proto"; + +message FileStorageData { + + // Size of virtualized storage resource in GB. + float sizeOfStorage = 93418079; + + // The shared file system protocol (e.g. NFS, CIFS). + string fileSystemProtocol = 321732228; + + VnfVirtualLinkDesc intVirtualLinkDesc = 430588394; + +} diff --git a/AppPkgMgmtProto3/proto3/models/max_number_of_impacted_instances.proto b/AppPkgMgmtProto3/proto3/models/max_number_of_impacted_instances.proto new file mode 100644 index 0000000..b1f24cf --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/max_number_of_impacted_instances.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message MaxNumberOfImpactedInstances { + + // Determines the size of the group for which the maxNumberOfImpactedInstances is specified. + int32 groupSize = 409275618; + + // The maximum number of instances that can be impacted simultaneously within the group of the specified size. + int32 maxNumberOfImpactedInstances = 28742796; + +} diff --git a/AppPkgMgmtProto3/proto3/models/min_number_of_preserved_instances.proto b/AppPkgMgmtProto3/proto3/models/min_number_of_preserved_instances.proto new file mode 100644 index 0000000..4ae599a --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/min_number_of_preserved_instances.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message MinNumberOfPreservedInstances { + + // Determines the size of the group for which the minNumberOfPreservedInstances is specified. + int32 groupSize = 409275618; + + // The minimum number of instances which need to be preserved simultaneously within the group of the specified size. + int32 minNumberOfPreservedInstances = 9969448; + +} diff --git a/AppPkgMgmtProto3/proto3/models/nfvi_maintenance_info.proto b/AppPkgMgmtProto3/proto3/models/nfvi_maintenance_info.proto new file mode 100644 index 0000000..74936f6 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/nfvi_maintenance_info.proto @@ -0,0 +1,49 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/max_number_of_impacted_instances.proto"; +import public "models/min_number_of_preserved_instances.proto"; + +message NfviMaintenanceInfo { + + // The minimum notification lead time requested for upcoming impact of the virtualised resource or their group. + float impactNotificationLeadTime = 253443258; + + // Indicates if it is requested to provide virtualised resource(s) of the same characteristics as the impacted ones to compensate for the impact. + bool isImpactMitigationRequested = 86005185; + + // Specifies the allowed migration types in order of preference in case of an impact. + enum SupportedMigrationTypeEnum { + NO_MIGRATION = 0; + OFFLINE_MIGRATION = 1; + LIVE_MIGRATION = 2; + } + + SupportedMigrationTypeEnum supportedMigrationType = 125270503; + + // Specifies the maximum interruption time that can go undetected at the VNF level during live migration. + float maxUndetectableInterruptionTime = 181342039; + + // Specifies the time required by the group to recover from an impact, indicating the minimum time between consecutive impacts of the group. + float minRecoveryTimeBetweenImpacts = 110146394; + + // Specifies the maximum number of instances that can be impacted simultaneously within the group of virtualised resources for different group sizes. + repeated MaxNumberOfImpactedInstances maxNumberOfImpactedInstances = 28742796; + + // Specifies the minimum number of instances which need to be preserved simultaneously within the group of virtualised resources for different group sizes. + repeated MinNumberOfPreservedInstances minNumberOfPreservedInstances = 9969448; + +} diff --git a/AppPkgMgmtProto3/proto3/models/object_storage_data.proto b/AppPkgMgmtProto3/proto3/models/object_storage_data.proto new file mode 100644 index 0000000..957de1f --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/object_storage_data.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ObjectStorageData { + + // Maximum size of virtualized storage resource in GB. + float maxSizeOfStorage = 515704161; + +} diff --git a/AppPkgMgmtProto3/proto3/models/qo_s.proto b/AppPkgMgmtProto3/proto3/models/qo_s.proto new file mode 100644 index 0000000..718432c --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/qo_s.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message QoS { + + // Specifies the maximum latency in ms. + float latency = 46576386; + + // Specifies the maximum jitter in ms. + float packetDelayVariation = 20616827; + + // Specifies the maximum packet loss ratio. + float packetLossRatio = 63177475; + +} diff --git a/AppPkgMgmtProto3/proto3/models/transport_descriptor.proto b/AppPkgMgmtProto3/proto3/models/transport_descriptor.proto index 17ecc54..87b338e 100644 --- a/AppPkgMgmtProto3/proto3/models/transport_descriptor.proto +++ b/AppPkgMgmtProto3/proto3/models/transport_descriptor.proto @@ -15,6 +15,7 @@ syntax = "proto3"; package mec0102; import public "models/security_info.proto"; +import public "models/transport_types.proto"; message TransportDescriptor { @@ -29,7 +30,7 @@ message TransportDescriptor { SecurityInfo security = 412251969; - string type = 3575610; + TransportTypes type = 3575610; // The version of the protocol used. string version = 351608024; diff --git a/AppPkgMgmtProto3/proto3/models/transport_types.proto b/AppPkgMgmtProto3/proto3/models/transport_types.proto new file mode 100644 index 0000000..019b5a2 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/transport_types.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum TransportTypes { + REST_HTTP = 0; + MB_TOPIC_BASED = 1; + MB_ROUTING = 2; + MB_PUBSUB = 3; + RPC = 4; + RPC_STREAMING = 5; + WEBSOCKET = 6; +} diff --git a/AppPkgMgmtProto3/proto3/models/user_context_transfer_capability.proto b/AppPkgMgmtProto3/proto3/models/user_context_transfer_capability.proto new file mode 100644 index 0000000..f406f51 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/user_context_transfer_capability.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message UserContextTransferCapability { + + // If the application is stateful, this attribute shall be set to true. Otherwise, set to false. + bool statefulApplication = 286608798; + + // 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. + bool userContextTransferSupport = 348003682; + +} diff --git a/AppPkgMgmtProto3/proto3/models/virtual_link_desc_flavour.proto b/AppPkgMgmtProto3/proto3/models/virtual_link_desc_flavour.proto new file mode 100644 index 0000000..929efc8 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/virtual_link_desc_flavour.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/qo_s.proto"; + +message VirtualLinkDescFlavour { + + // Identifies a flavour within a VnfVirtualLinkDesc. + string flavourId = 517043477; + + QoS qos = 112149; + +} diff --git a/AppPkgMgmtProto3/proto3/models/virtual_storage_descriptor.proto b/AppPkgMgmtProto3/proto3/models/virtual_storage_descriptor.proto new file mode 100644 index 0000000..26cf23a --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/virtual_storage_descriptor.proto @@ -0,0 +1,47 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/block_storage_data.proto"; +import public "models/file_storage_data.proto"; +import public "models/nfvi_maintenance_info.proto"; +import public "models/object_storage_data.proto"; + +message VirtualStorageDescriptor { + + // Unique identifier of this VirtualStorageDesc in the VNFD. + string id = 3355; + + // Type of virtualized storage resource. + enum TypeOfStorageEnum { + BLOCK = 0; + OBJECT = 1; + FILE = 2; + } + + TypeOfStorageEnum typeOfStorage = 320663180; + + BlockStorageData blockStorageData = 376673800; + + ObjectStorageData objectStorageData = 502151164; + + FileStorageData fileStorageData = 500145579; + + NfviMaintenanceInfo nfviMaintenanceInfo = 376778873; + + // Indicates whether the virtual storage resource should be instantiated per VNFC instance. + bool perVnfcInstance = 58016487; + +} diff --git a/AppPkgMgmtProto3/proto3/models/vnf_virtual_link_desc.proto b/AppPkgMgmtProto3/proto3/models/vnf_virtual_link_desc.proto new file mode 100644 index 0000000..8abba06 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/vnf_virtual_link_desc.proto @@ -0,0 +1,51 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/connectivity_type.proto"; +import public "models/monitoring_parameter.proto"; +import public "models/nfvi_maintenance_info.proto"; +import public "models/virtual_link_desc_flavour.proto"; + +message VnfVirtualLinkDesc { + + // Unique identifier of this internal VLD in VNFD. + string virtualLinkDescId = 447465875; + + // Describes a specific flavour of the VL with specific bitrate requirements. + repeated VirtualLinkDescFlavour virtualLinkDescFlavour = 37410619; + + ConnectivityType connectivityType = 453097874; + + // Specifies test access facilities expected on the VL. + repeated string testAccess = 122531992; + + // Provides human-readable information on the purpose of the VL. + string description = 113933319; + + // Specifies the virtualised resource related performance metrics on VLD level to be tracked by the VNFM. + repeated MonitoringParameter monitoringParameter = 254574658; + + NfviMaintenanceInfo nfviMaintenanceInfo = 376778873; + + // Specifies the intent of the VNF designer with respect to the internal VL instances created from this descriptor being externally managed. + enum ExternallyManagedEnum { + REQUIRED = 0; + ALLOWED = 1; + } + + ExternallyManagedEnum externallyManaged = 51289628; + +} -- GitLab