diff --git a/src/adapters/fm_adapter/federation_management.py b/src/adapters/fm_adapter/federation_management.py index 866fea6fec7dabf14315a739c156c0121e2993c6..a59b2ac41c59188481925b589f9fb9d6c1735b7c 100644 --- a/src/adapters/fm_adapter/federation_management.py +++ b/src/adapters/fm_adapter/federation_management.py @@ -235,17 +235,29 @@ def get_federation_context_id(bearer_token, partner_api_root): # noqa: E501 def create_federation_at_originating_op(body, bearer_token, federation_response_data): + mcc = None + mncs = None + token_url = None + client_id = None + client_secret = None + if body.orig_op_mobile_network_codes: + mcc = body.orig_op_mobile_network_codes.mcc or None + mncs = body.orig_op_mobile_network_codes.mncs or None + if body.partner_callback_credentials: + token_url = body.partner_callback_credentials.token_url or None + client_id = body.partner_callback_credentials.client_id or None + client_secret = body.partner_callback_credentials.client_secret or None federation_data = { "orig_op_federation_id": body.orig_op_federation_id, "orig_op_country_code": body.orig_op_country_code, - "orig_op_mobile_network_codes_mcc": body.orig_op_mobile_network_codes.mcc, - "orig_op_mobile_network_codes_mncs": body.orig_op_mobile_network_codes.mncs, + "orig_op_mobile_network_codes_mcc": mcc, + "orig_op_mobile_network_codes_mncs": mncs, "orig_op_fixed_network_codes": body.orig_op_fixed_network_codes, "initial_date": body.initial_date, "partner_status_link": body.partner_status_link, - "partner_callback_credentials_token_url": body.partner_callback_credentials.token_url, - "partner_callback_credentials_client_id": body.partner_callback_credentials.client_id, - "partner_callback_credentials_client_secret": body.partner_callback_credentials.client_secret, + "partner_callback_credentials_token_url": token_url, + "partner_callback_credentials_client_id": client_id, + "partner_callback_credentials_client_secret": client_secret, "partner_bearer_token": bearer_token, "partner_federation_id": federation_response_data.get("federationContextId") } diff --git a/src/adapters/tf_adapter/federation_management.py b/src/adapters/tf_adapter/federation_management.py index 015c12c8b9c25a8a62fd218c61ab92ec30f66b7a..7d490e5251e4fb35dcf913d9a2ffcfd6f4a0ead6 100644 --- a/src/adapters/tf_adapter/federation_management.py +++ b/src/adapters/tf_adapter/federation_management.py @@ -55,9 +55,14 @@ def create_federation(body, bearer_token, partner_api_root=None): # noqa: E501 raise APIError(409, "Federation already exists") # Convert the original model instance to the MongoEngine document + mcc = None + mncs = None token_url = None client_id = None client_secret = None + if body.orig_op_mobile_network_codes: + mcc = body.orig_op_mobile_network_codes.mcc or None + mncs = body.orig_op_mobile_network_codes.mncs or None if body.partner_callback_credentials: token_url = body.partner_callback_credentials.token_url or None client_id = body.partner_callback_credentials.client_id or None @@ -65,8 +70,8 @@ def create_federation(body, bearer_token, partner_api_root=None): # noqa: E501 federation_data = { "orig_op_federation_id": body.orig_op_federation_id, "orig_op_country_code": body.orig_op_country_code, - "orig_op_mobile_network_codes_mcc": body.orig_op_mobile_network_codes.mcc, - "orig_op_mobile_network_codes_mncs": body.orig_op_mobile_network_codes.mncs, + "orig_op_mobile_network_codes_mcc": mcc, + "orig_op_mobile_network_codes_mncs": mncs, "orig_op_fixed_network_codes": body.orig_op_fixed_network_codes, "initial_date": body.initial_date, "partner_status_link": body.partner_status_link, diff --git a/src/clients/tf_sdk.py b/src/clients/tf_sdk.py index 7940a67fa2895295b9c317d2130ac38cd1aac0fc..ce432f7eab87eeb289d97906db94ec0c712c6e8a 100644 --- a/src/clients/tf_sdk.py +++ b/src/clients/tf_sdk.py @@ -67,7 +67,7 @@ class EdgeCloudClient: raise # Zone Management Functions - def get_list_zones(self): # --> OK + def get_list_zones(self): """Get list of all available zones using GSMA-compliant API""" try: response = self.edgecloud_client.get_edge_cloud_zones_list_gsma() @@ -76,7 +76,7 @@ class EdgeCloudClient: logger.error(f"Error getting zones: {e}") raise - def get_zones(self): # --> OK + def get_zones(self): """Get detailed info of all available zones using GSMA-compliant API""" try: response = self.edgecloud_client.get_edge_cloud_zones_gsma() @@ -85,7 +85,7 @@ class EdgeCloudClient: logger.error(f"Error getting zones: {e}") raise - def get_zone_by_zone_id(self, zone_id): # --> OK + def get_zone_by_zone_id(self, zone_id): """Get zone details by zone ID using GSMA-compliant API""" try: response = self.edgecloud_client.get_edge_cloud_zone_details_gsma(zone_id) @@ -95,7 +95,7 @@ class EdgeCloudClient: raise # Artefact Management Functions - def onboarding_artefact_gsma(self, artefact_data): # --> NOK + def onboarding_artefact_gsma(self, artefact_data): """Upload artefact using GSMA-compliant API""" try: return self.edgecloud_client.create_artefact_gsma(artefact_data) @@ -103,7 +103,7 @@ class EdgeCloudClient: logger.error(f"Error uploading artefact: {e}") raise - def delete_artefact_gsma(self, artefact_id): # --> OK + def delete_artefact_gsma(self, artefact_id): """Delete artefact using GSMA-compliant API""" try: return self.edgecloud_client.delete_artefact_gsma(artefact_id) @@ -112,7 +112,7 @@ class EdgeCloudClient: raise # Application Onboarding Functions - def get_onboarding(self, app_id): # --> OK + def get_onboarding(self, app_id): """Get application onboarding details using GSMA-compliant API""" try: return self.edgecloud_client.get_onboarded_app_gsma(app_id) @@ -120,7 +120,7 @@ class EdgeCloudClient: logger.error(f"Error getting onboarding for app {app_id}: {e}") raise - def post_onboarding(self, onboarding_data): # --> OK + def post_onboarding(self, onboarding_data): """Create application onboarding using GSMA-compliant API""" try: return self.edgecloud_client.onboard_app_gsma(onboarding_data) @@ -128,7 +128,7 @@ class EdgeCloudClient: logger.error(f"Error creating onboarding: {e}") raise - def update_onboarding(self, app_id, onboarding_data): # --> NOK + def update_onboarding(self, app_id, onboarding_data): """Update application onboarding using GSMA-compliant API""" try: return self.edgecloud_client.patch_onboarded_app_gsma(app_id, onboarding_data) @@ -136,7 +136,7 @@ class EdgeCloudClient: logger.error(f"Error updating onboarding for app {app_id}: {e}") raise - def delete_onboarding(self, app_id): # --> OK + def delete_onboarding(self, app_id): """Delete application onboarding using GSMA-compliant API""" try: return self.edgecloud_client.delete_onboarded_app_gsma(app_id) @@ -145,7 +145,7 @@ class EdgeCloudClient: raise # Application Deployment Functions - def post_app_command(self, deployment_data): # --> OK + def post_app_command(self, deployment_data): """Deploy application using GSMA-compliant API""" try: return self.edgecloud_client.deploy_app_gsma(deployment_data) @@ -161,7 +161,7 @@ class EdgeCloudClient: logger.error(f"Error getting app instance {app_instance_id} in zone {zone_id}: {e}") raise - def delete_app(self, app_id, app_instance_id, zone_id): # --> OK + def delete_app(self, app_id, app_instance_id, zone_id): """Delete application instance using GSMA-compliant API""" try: return self.edgecloud_client.undeploy_app_gsma(app_id, app_instance_id, zone_id) diff --git a/src/deploy/federation-manager.yaml b/src/deploy/federation-manager.yaml index 877bed725c8cf4c8d6106a25fe042f107d78f5be..d37a9543db3a7ecddb111ea57626f553b5c5a882 100644 --- a/src/deploy/federation-manager.yaml +++ b/src/deploy/federation-manager.yaml @@ -51,8 +51,6 @@ spec: limits: cpu: "4" memory: "6Gi" - imagePullSecrets: - - name: federation-manager-regcred volumes: - name: config secret: diff --git a/src/static/openapi.yaml b/src/static/openapi.yaml index 97247e3d0795366a5ef06de4f4cdbba1749b6413..feecc29dd5170452a60dac3738b694af0214c99a 100644 --- a/src/static/openapi.yaml +++ b/src/static/openapi.yaml @@ -2,103 +2,119 @@ openapi: 3.0.3 info: version: 1.2.0 title: Federation Management Service - description: | - # Introduction - --- - RESTful APIs that allow an OP to share the edge cloud resources and capabilities securely to other partner OPs over E/WBI. - - --- - # API Scope - - --- - APIs defined in this version of the implementation can be categorized into the following areas: - * __FederationManagement__ - Create and manage directed federation relationship with a partner OP - * __AvailabilityZoneInfoSynchronization__ - Management of resources of partner OP zones and status updates - * __ArtefactManagement__ - Upload, remove, retrieve and update application descriptors, charts and packages over E/WBI towards a partner OP - * __ApplicationOnboardingManagement__ - Register, retrieve, update and remove applications over E/WBI towards a partner OP - * __ApplicationDeploymentManagement__ - Create, update, retrieve and terminate application instances over E/WBI towards a partner OP - - --- - # Definitions - --- - This section provides definitions of terminologies commonly referred to throughout the API descriptions. - - * __Accepted Zones__ - List of partner OP zones, which the originating OP has confirmed to use for its edge applications. - * __Application Provider__ - An application developer, onboarding his/her edge application on a partner operator platform (MEC). - * __Artefact__ - Descriptor, charts or any other package associated with the application. - * __Availability Zone__ - Zones that partner OP can offer to share with originating OP. - * __Device__ - Refers to user equipment like mobile phone, tablet, IOT kit, AR/VR device etc. In context of MEC users use these devices to access edge applications. - * __Directed Federation__ - A Federation between two OP instances A and B, in which edge compute resources are shared by B to A, but not from A to B. - * __Edge Application__ - Application designed to run on MEC edge cloud. - * __E/WBI__ - East west bound interface. - * __Federation__ - Relationship among member OPs who agrees to offer services and capabilities to the application providers and end users of member OPs. - * __FederationContextId__ - Partner OP defined string identifier representing a certain federation relationship. - * __Federation Identifier__ - Identify an operator platform in federation context. - * __Flavour__ - A group of compute, network and storage resources that can be requested or granted as a single unit. - * __FlavourIdentifier__ - An OP defined string identifier representing a set of compute, storage and networking resources. - * __Home OP__ - Used in federation context to identify the OP with which the application developers or user clients are registered. - * __Instance__ - Application process running on an edge. - * __LCM Service__ - Partner OP service responsible for life cycle management of edge applications. LCM service is defined as HTTP based API endpoint identified by a well-defined FQDN or IP. - * __Offered Zones__ - Zones that partner OP offer to share to the Originating OP based on the prior agreement and local configuration. - * __Onboarding__ - Submitting an application to MEC platform. - * __OP__ - Operator platform. - * __OperatorIdentifier__ - String identifier representing the owner of MEC platform. Owner could be an enterprise, a TSP or some other organization. - * __Originating OP__ - The OP when initiating the federation creation request towards the partner OP is defined as the Originating OP. - * __Partner OP__ - Operator Platform which offers its Edge Cloud capabilities to the other Operator Platforms via E/WBI. - * __Resource__ - Compute, networking and storage resources. - * __ZoneIdentifier__ - An OP defined string identifier representing a certain geographical or logical area where edge resources and services are provided. - * __Zone Confirmation__ - Procedure via which originating OP acknowledges partner OP about the partner zones it wishes to use. - * __User Clients__ - Lightweight client applications used to access edge applications. Application users run these clients on their devices (UE, IOT device, AR/VR device etc). - - --- - # API Operations - --- - - __FederationManagement__ - * __CreateFederation__ - Creates a directed federation relationship with a partner OP. - * __GetFederationDetails__ - Retrieves details about the federation relationship with the partner OP. The response shall provide info about the zones offered by the partner, partner OP network codes, information about edge discovery and LCM service etc. - * __DeleteFederationDetails__ - Remove existing federation with the partner OP. - * __NotifyFederationUpdates__ - Call back notification used by partner OP to update originating OP about any change in existing federation relationship. - * __UpdateFederation__ - API used by the Originating OP towards the partner OP, to update the parameters associated to the existing federation. - * __QueryFederationContext__ - The Originating OP retrieves federationContextId from the partner OP. - - __AvailabilityZoneInfoSynchronization__ - * __ZoneSubscribe__ - Informs partner OP that originating OP is willing to access the specified zones and partner OP shall reserve compute and network resources for these zones. - * __ZoneUnsubscribe__ - Informs partner OP that originating OP will no longer access the specified partner OP zone. - * __GetZoneData__ - Retrieves details about the computation and network resources that partner OP has reserved for an partner OP zone. - * __Notify Zone Information__ - Call back notification used by partner OP to update originating OP about changes in the resources reserved on a partner zone. - - __ArtefactManagement__ - * __UploadArtefact__ - Uploads application artefact on partner operator platform. - * __RemoveArtefact__ - Removes an artefact from partner operator platform. - * __GetArtefact__ - Retrieves details about an artefact from partner operator platform. - - __ApplicationOnboardingManagement__ - * __OnboardApplication__ - Submits an application details to a partner OP. Based on the details provided, partner OP shall do bookkeeping, resource validation and other pre-deployment operations. - * __UpdateApplication__ - Updates partner OP about changes in application compute resource requirements, QOS Profile, associated descriptor or change in associated components. - * __DeboardApplication__ - Removes an application from partner OP. - * __ViewApplication__ - Retrieves application details from partner OP. - * __OnboardExistingAppNewZones__ - Make an application available on new additional zones. - * __LockUnlockApplicationZone__ - Forbid or permit instantiation of application on a zone. - - __Application Instance Lifecycle Management__ - * __InstallApp__ - Instantiates an application on a partner OP zone. - * __GetAppInstanceDetails__ - Retrieves an application instance details from partner OP. - * __RemoveApp__ - Terminate an application instance on a partner OP zone. - * __GetAllAppInstances__ - Retrieves details about all instances of the application running on partner OP zones. - - - © 2023 GSM Association. - All rights reserved. + description: "# Introduction\n---\nRESTful APIs that allow an OP to share the edge\ + \ cloud resources and capabilities securely to other partner OPs over E/WBI.\n\ + \n---\n# API Scope\n\n---\nAPIs defined in this version of the implementation\ + \ can be categorized into the following areas:\n* __FederationManagement__ - Create\ + \ and manage directed federation relationship with a partner OP\n* __AvailabilityZoneInfoSynchronization__\ + \ - Management of resources of partner OP zones and status updates\n* __ArtefactManagement__\ + \ - Upload, remove, retrieve and update application descriptors, charts and packages\ + \ over E/WBI towards a partner OP\n* __ApplicationOnboardingManagement__ - Register,\ + \ retrieve, update and remove applications over E/WBI towards a partner OP\n*\ + \ __ApplicationDeploymentManagement__ - Create, update, retrieve and terminate\ + \ application instances over E/WBI towards a partner OP\n\n---\n# Definitions\n\ + ---\nThis section provides definitions of terminologies commonly referred to throughout\ + \ the API descriptions.\n\n* __Accepted Zones__ - List of partner OP zones, which\ + \ the originating OP has confirmed to use for its edge applications.\n* __Application\ + \ Provider__ - An application developer, onboarding his/her edge application on\ + \ a partner operator platform (MEC).\n* __Artefact__ - Descriptor, charts or any\ + \ other package associated with the application.\n* __Availability Zone__ - Zones\ + \ that partner OP can offer to share with originating OP.\n* __Device__ - Refers\ + \ to user equipment like mobile phone, tablet, IOT kit, AR/VR device etc. In context\ + \ of MEC users use these devices to access edge applications.\n* __Directed Federation__\ + \ - A Federation between two OP instances A and B, in which edge compute resources\ + \ are shared by B to A, but not from A to B.\n* __Edge Application__ - Application\ + \ designed to run on MEC edge cloud.\n* __E/WBI__ - East west bound interface.\n\ + * __Federation__ - Relationship among member OPs who agrees to offer services\ + \ and capabilities to the application providers and end users of member OPs.\n\ + * __FederationContextId__ - Partner OP defined string identifier representing\ + \ a certain federation relationship.\n* __Federation Identifier__ - Identify an\ + \ operator platform in federation context.\n* __Flavour__ - A group of compute,\ + \ network and storage resources that can be requested or granted as a single unit.\n\ + * __FlavourIdentifier__ - An OP defined string identifier representing a set of\ + \ compute, storage and networking resources.\n* __Home OP__ - Used in federation\ + \ context to identify the OP with which the application developers or user clients\ + \ are registered.\n* __Instance__ - Application process running on an edge.\n\ + * __LCM Service__ - Partner OP service responsible for life cycle management of\ + \ edge applications. LCM service is defined as HTTP based API endpoint identified\ + \ by a well-defined FQDN or IP.\n* __Offered Zones__ - Zones that partner OP offer\ + \ to share to the Originating OP based on the prior agreement and local configuration.\n\ + * __Onboarding__ - Submitting an application to MEC platform.\n* __OP__ - Operator\ + \ platform.\n* __OperatorIdentifier__ - String identifier representing the owner\ + \ of MEC platform. Owner could be an enterprise, a TSP or some other organization.\n\ + * __Originating OP__ - The OP when initiating the federation creation request\ + \ towards the partner OP is defined as the Originating OP.\n* __Partner OP__ -\ + \ Operator Platform which offers its Edge Cloud capabilities to the other Operator\ + \ Platforms via E/WBI.\n* __Resource__ - Compute, networking and storage resources.\n\ + * __ZoneIdentifier__ - An OP defined string identifier representing a certain\ + \ geographical or logical area where edge resources and services are provided.\n\ + * __Zone Confirmation__ - Procedure via which originating OP acknowledges partner\ + \ OP about the partner zones it wishes to use.\n* __User Clients__ - Lightweight\ + \ client applications used to access edge applications. Application users run\ + \ these clients on their devices (UE, IOT device, AR/VR device etc).\n\n---\n\ + # API Operations\n---\n\n__FederationManagement__\n* __CreateFederation__ - Creates\ + \ a directed federation relationship with a partner OP.\n* __GetFederationDetails__\ + \ - Retrieves details about the federation relationship with the partner OP. The\ + \ response shall provide info about the zones offered by the partner, partner\ + \ OP network codes, information about edge discovery and LCM service etc.\n* __DeleteFederationDetails__\ + \ - Remove existing federation with the partner OP.\n* __NotifyFederationUpdates__\ + \ - Call back notification used by partner OP to update originating OP about any\ + \ change in existing federation relationship.\n* __UpdateFederation__ - API used\ + \ by the Originating OP towards the partner OP, to update the parameters associated\ + \ to the existing federation.\n* __QueryFederationContext__ - The Originating\ + \ OP retrieves federationContextId from the partner OP.\n\n__AvailabilityZoneInfoSynchronization__\n\ + * __ZoneSubscribe__ - Informs partner OP that originating OP is willing to access\ + \ the specified zones and partner OP shall reserve compute and network resources\ + \ for these zones.\n* __ZoneUnsubscribe__ - Informs partner OP that originating\ + \ OP will no longer access the specified partner OP zone.\n* __GetZoneData__ -\ + \ Retrieves details about the computation and network resources that partner OP\ + \ has reserved for an partner OP zone.\n* __Notify Zone Information__ - Call back\ + \ notification used by partner OP to update originating OP about changes in the\ + \ resources reserved on a partner zone.\n\n__ArtefactManagement__\n* __UploadArtefact__\ + \ - Uploads application artefact on partner operator platform.\n* __RemoveArtefact__\ + \ - Removes an artefact from partner operator platform.\n* __GetArtefact__ - Retrieves\ + \ details about an artefact from partner operator platform.\n\n__ApplicationOnboardingManagement__\n\ + * __OnboardApplication__ - Submits an application details to a partner OP. Based\ + \ on the details provided, partner OP shall do bookkeeping, resource validation\ + \ and other pre-deployment operations.\n* __UpdateApplication__ - Updates partner\ + \ OP about changes in application compute resource requirements, QOS Profile,\ + \ associated descriptor or change in associated components.\n* __DeboardApplication__\ + \ - Removes an application from partner OP.\n* __ViewApplication__ - Retrieves\ + \ application details from partner OP.\n* __OnboardExistingAppNewZones__ - Make\ + \ an application available on new additional zones.\n* __LockUnlockApplicationZone__\ + \ - Forbid or permit instantiation of application on a zone.\n\n__Application\ + \ Instance Lifecycle Management__\n* __InstallApp__ - Instantiates an application\ + \ on a partner OP zone.\n* __GetAppInstanceDetails__ - Retrieves an application\ + \ instance details from partner OP.\n* __RemoveApp__ - Terminate an application\ + \ instance on a partner OP zone.\n* __GetAllAppInstances__ - Retrieves details\ + \ about all instances of the application running on partner OP zones.\n\n\n\xA9\ + \ 2023 GSM Association.\nAll rights reserved.\n" externalDocs: description: GSMA, E/WBI APIs v1.3.1 url: http://www.xxxx.com servers: -- url: "/operatorplatform/federation/v1" +- url: /operatorplatform/federation/v1 security: - - oAuth2ClientCredentials: - - fed-mgmt +- oAuth2ClientCredentials: + - fed-mgmt components: + parameters: + XInternalHeader: + name: X-Internal + in: header + required: false + schema: + type: string + description: Internal request flag + example: 'true' + XPartnerApiRootHeader: + name: X-Partner-API-Root + in: header + required: false + schema: + type: string + description: Base URL of the partner API + example: http://192.168.123.212:31989 securitySchemes: oAuth2ClientCredentials: type: oauth2 @@ -115,11 +131,13 @@ components: AppProviderId: type: string pattern: ^[A-Za-z][A-Za-z0-9_]{7,63}$ - description: UserId of the app provider. Identifier is relevant only in context of this federation. + description: UserId of the app provider. Identifier is relevant only in context + of this federation. ArtefactId: type: string format: uuid - description: A globally unique identifier associated with the artefact. Originating OP generates this identifier when artefact is submitted over NBI. + description: A globally unique identifier associated with the artefact. Originating + OP generates this identifier when artefact is submitted over NBI. CountryCode: type: string description: ISO 3166-1 Alpha-2 code for the country of Partner operator @@ -127,21 +145,21 @@ components: CPUArchType: type: string enum: - - ISA_X86 - - ISA_X86_64 - - ISA_ARM_64 + - ISA_X86 + - ISA_X86_64 + - ISA_ARM_64 description: CPU Instruction Set Architecture (ISA) E.g., Intel, Arm etc. InstanceIdentifier: type: string - #pattern: ^[A-Za-z0-9][A-Za-z0-9_]{6,62}[A-Za-z0-9]$ - description: Unique identifier generated by the partner OP to identify an instance of the application on a specific zone. + description: Unique identifier generated by the partner OP to identify an instance + of the application on a specific zone. InstanceState: type: string enum: - - PENDING - - READY - - FAILED - - TERMINATING + - PENDING + - READY + - FAILED + - TERMINATING description: Running status of the application instance. Ipv4Addr: type: string @@ -150,8 +168,8 @@ components: Ipv6Addr: type: string allOf: - - pattern: ^((:|(0?|([1-9a-f][0-9a-f]{0,3}))):)((0?|([1-9a-f][0-9a-f]{0,3})):){0,6}(:|(0?|([1-9a-f][0-9a-f]{0,3})))$ - - pattern: ^((([^:]+:){7}([^:]+))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))$ + - pattern: ^((:|(0?|([1-9a-f][0-9a-f]{0,3}))):)((0?|([1-9a-f][0-9a-f]{0,3})):){0,6}(:|(0?|([1-9a-f][0-9a-f]{0,3})))$ + - pattern: ^((([^:]+:){7}([^:]+))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))$ example: 2001:db8:85a3::8a2e:370:7334 Fqdn: type: string @@ -159,21 +177,28 @@ components: type: array items: type: string - description: List of network identifier associated with the fixed line network of the operator platform. + description: List of network identifier associated with the fixed line network + of the operator platform. minItems: 1 FederationContextId: type: string pattern: ^[A-Za-z0-9][A-Za-z0-9-]*$ readOnly: true - description: This identifier shall be provided by the partner OP on successful verification and validation of the federation create request and is used by partner op to identify this newly created federation context. Originating OP shall provide this identifier in any subsequent request towards the partner op. + description: This identifier shall be provided by the partner OP on successful + verification and validation of the federation create request and is used by + partner op to identify this newly created federation context. Originating + OP shall provide this identifier in any subsequent request towards the partner + op. FederationIdentifier: type: string pattern: ^[A-Za-z0-9][A-Za-z0-9-]*$ - description: Globally unique identifier allocated to an operator platform. This is valid and used only in context of MEC federation interface. + description: Globally unique identifier allocated to an operator platform. This + is valid and used only in context of MEC federation interface. FileId: type: string format: uuid - description: A globally unique identifier associated with the image file. Originating OP generates this identifier when file is uploaded over NBI. + description: A globally unique identifier associated with the image file. Originating + OP generates this identifier when file is uploaded over NBI. FlavourId: type: string description: An identifier to refer to a specific combination of compute resources @@ -193,22 +218,23 @@ components: Status: type: string enum: - - FAILED - - TEMPORARY_FAILURE - - AVAILABLE - - LOCKED - - NOT_AVAILABLE + - FAILED + - TEMPORARY_FAILURE + - AVAILABLE + - LOCKED + - NOT_AVAILABLE Uri: type: string Vcpu: type: string pattern: ^\d+((\.\d{1,3})|(m))?$ - description: Number of vcpus in whole, decimal up to millivcpu, or millivcpu format. + description: Number of vcpus in whole, decimal up to millivcpu, or millivcpu + format. example: whole: value: 2 decimal: - value: 0.500 + value: 0.5 millivcpu: value: 500m Version: @@ -218,9 +244,9 @@ components: VirtImageType: type: string enum: - - QCOW2 - - DOCKER - - OVA + - QCOW2 + - DOCKER + - OVA description: Indicate if the file is Container image or VM image (QCOW2, OVA) ZoneIdentifier: type: string @@ -229,14 +255,11 @@ components: FederationHealthInfo: type: object required: - - federationStatus - # - federationStartTime - - numOfAcceptedZones + - federationStatus + - numOfAcceptedZones properties: federationStatus: $ref: '#/components/schemas/State' - # federationStartTime: - # $ref: '#/components/schemas/dateAndTimeZoneObject' numOfAcceptedZones: type: string numOfActiveAlarms: @@ -246,11 +269,11 @@ components: FederationSupportedAPIs: type: object required: - - federationBaseAPI - - availabilityZoneAPI - - edgeApplicationAPI - - artefactAPI - - fileAPI + - federationBaseAPI + - availabilityZoneAPI + - edgeApplicationAPI + - artefactAPI + - fileAPI properties: federationBaseAPI: $ref: '#/components/schemas/FederationAPIResources' @@ -273,27 +296,27 @@ components: FederationAPINames: type: string enum: - - FEDERATION - - AVAILZONE - - ARTEFACT - - FILE - - SVSAPEFED - - RESMONITOR - - EVENTMGMT - - FAULTMGMT + - FEDERATION + - AVAILZONE + - ARTEFACT + - FILE + - SVSAPEFED + - RESMONITOR + - EVENTMGMT + - FAULTMGMT HttpMethods: type: string enum: - - POST - - PUT - - PATCH - - DELETE - - GET + - POST + - PUT + - PATCH + - DELETE + - GET HttpResources: type: object required: - - href - - httpMethods + - href + - httpMethods properties: href: $ref: '#/components/schemas/Uri' @@ -306,8 +329,8 @@ components: FederationAPIResources: type: object required: - - name - - apiOperations + - name + - apiOperations properties: name: $ref: '#/components/schemas/FederationAPINames' @@ -320,69 +343,84 @@ components: State: type: object required: - - alarmState + - alarmState properties: alarmState: type: string enum: - - RAISED - - UPDATED - - CLEAR - description: Defines the alarm state during its life cycle (raised | updated | cleared). + - RAISED + - UPDATED + - CLEAR + description: Defines the alarm state during its life cycle (raised | updated + | cleared). serviceType: type: string - enum: ["api_federation"] - description: An identifier to refer to partner OP capabilities for application providers. + enum: + - api_federation + description: An identifier to refer to partner OP capabilities for application + providers. serviceAPINames: type: array items: - type: string - enum: - - QualityOnDemand - - DeviceLocation - - DeviceStatus - - SimSwap - - NumberVerification - - DeviceIdentifier - minItems: 1 - description: List of Service API capability names an OP supports and offers to other OPs "quality_on_demand", "device_location" etc. - serviceAPINameVal: - type: string - enum: + type: string + enum: - QualityOnDemand - DeviceLocation - DeviceStatus - SimSwap - NumberVerification - DeviceIdentifier + minItems: 1 + description: List of Service API capability names an OP supports and offers + to other OPs "quality_on_demand", "device_location" etc. + serviceAPINameVal: + type: string + enum: + - QualityOnDemand + - DeviceLocation + - DeviceStatus + - SimSwap + - NumberVerification + - DeviceIdentifier description: Name of the Service API serviceRoutingInfo: type: array items: - type: string - pattern: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))?$ + type: string + pattern: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))?$ minItems: 1 - description: List of public IP addresses MNO manages for UEs to connect with public data networks + description: List of public IP addresses MNO manages for UEs to connect with + public data networks AppComponentSpecs: - description: An application may consist of more than one component. Each component is associated with a descriptor and may exposes its services externally or internally. App providers are required to provide details about all these components, their associated descriptors and their DNS names. + description: An application may consist of more than one component. Each component + is associated with a descriptor and may exposes its services externally or + internally. App providers are required to provide details about all these + components, their associated descriptors and their DNS names. type: array items: type: object required: - - artefactId + - artefactId properties: serviceNameNB: type: string pattern: ^[A-Za-z0-9][A-Za-z0-9_]{6,62}[A-Za-z0-9]$ - description: Must be a valid RFC 1035 label name. This defines the DNS name via which the component can be accessed over NBI. Access via serviceNameNB is restricted on specific ports. Platform shall expose component access externally via this DNS name + description: Must be a valid RFC 1035 label name. This defines the DNS + name via which the component can be accessed over NBI. Access via serviceNameNB + is restricted on specific ports. Platform shall expose component access + externally via this DNS name serviceNameEW: type: string pattern: ^[A-Za-z0-9][A-Za-z0-9_]{6,62}[A-Za-z0-9]$ - description: Must be a valid RFC 1035 label name. This defines the DNS name via which the component can be accessed via peer components. Access via serviceNameEW is open on all ports. Platform shall not expose serviceNameEW externally outside edge. + description: Must be a valid RFC 1035 label name. This defines the DNS + name via which the component can be accessed via peer components. Access + via serviceNameEW is open on all ports. Platform shall not expose + serviceNameEW externally outside edge. componentName: type: string pattern: ^[A-Za-z0-9][A-Za-z0-9_]{6,62}[A-Za-z0-9]$ - description: Must be a valid RFC 1035 label name. Component name must be unique with an application + description: Must be a valid RFC 1035 label name. Component name must + be unique with an application artefactId: $ref: '#/components/schemas/ArtefactId' minItems: 1 @@ -390,14 +428,15 @@ components: description: Application metadata details type: object required: - - appName - - version - - accessToken + - appName + - version + - accessToken properties: appName: type: string pattern: ^[A-Za-z][A-Za-z0-9_]{7,31}$ - description: Name of the application. Application provider define a human readable name for the application + description: Name of the application. Application provider define a human + readable name for the application version: type: string description: Version info of the application @@ -409,68 +448,78 @@ components: mobilitySupport: type: boolean default: false - description: Indicates if an application is sensitive to user mobility and can be relocated. Default is “FALSE” + description: "Indicates if an application is sensitive to user mobility\ + \ and can be relocated. Default is \u201CFALSE\u201D" accessToken: type: string pattern: ^[A-Za-z][A-Za-z0-9_]{31,63}$ - description: An application Access key, to be used with UNI interface to authorize UCs Access to a given application + description: An application Access key, to be used with UNI interface to + authorize UCs Access to a given application category: type: string enum: - - IOT - - HEALTH_CARE - - GAMING - - VIRTUAL_REALITY - - SOCIALIZING - - SURVEILLANCE - - ENTERTAINMENT - - CONNECTIVITY - - PRODUCTIVITY - - SECURITY - - INDUSTRIAL - - EDUCATION - - OTHERS + - IOT + - HEALTH_CARE + - GAMING + - VIRTUAL_REALITY + - SOCIALIZING + - SURVEILLANCE + - ENTERTAINMENT + - CONNECTIVITY + - PRODUCTIVITY + - SECURITY + - INDUSTRIAL + - EDUCATION + - OTHERS description: Possible categorization of the application AppQoSProfile: - description: Parameters corresponding to the performance constraints, tenancy details etc. + description: Parameters corresponding to the performance constraints, tenancy + details etc. type: object required: - - latencyConstraints + - latencyConstraints properties: latencyConstraints: type: string enum: - - NONE - - LOW - - ULTRALOW - description: Latency requirements for the application. Allowed values (non-standardized) are none, low and ultra-low. Ultra-Low may corresponds to range 15 - 30 msec, Low correspond to range 30 - 50 msec. None means 51 and above + - NONE + - LOW + - ULTRALOW + description: Latency requirements for the application. Allowed values (non-standardized) + are none, low and ultra-low. Ultra-Low may corresponds to range 15 - 30 + msec, Low correspond to range 30 - 50 msec. None means 51 and above bandwidthRequired: type: integer format: int32 minimum: 1 - description: Data transfer bandwidth requirement (minimum limit) for the application. It should in Mbits/sec + description: Data transfer bandwidth requirement (minimum limit) for the + application. It should in Mbits/sec multiUserClients: type: string enum: - - APP_TYPE_SINGLE_USER - - APP_TYPE_MULTI_USER + - APP_TYPE_SINGLE_USER + - APP_TYPE_MULTI_USER default: APP_TYPE_SINGLE_USER - description: Single user type application are designed to serve just one client. Multi user type application is designed to serve multiple clients + description: Single user type application are designed to serve just one + client. Multi user type application is designed to serve multiple clients noOfUsersPerAppInst: type: integer default: 1 - description: Maximum no of clients that can connect to an instance of this application. This parameter is relevant only for application of type multi user + description: Maximum no of clients that can connect to an instance of this + application. This parameter is relevant only for application of type multi + user appProvisioning: type: boolean default: true description: Define if application can be instantiated or not CallbackCredentials: type: object - description: Authentication credentials for callbacks. Callbacks use the same security scheme, flows, and scopes as the forward path. + description: Authentication credentials for callbacks. Callbacks use the same + security scheme, flows, and scopes as the forward path. required: - - tokenUrl - - clientId - - clientSecret + - tokenUrl + - clientId + - clientSecret properties: tokenUrl: $ref: '#/components/schemas/Uri' @@ -482,11 +531,12 @@ components: type: string description: Client secret for oauth2 client credentials flow. CompEnvParams: - description: Environment variables are key value pairs that should be injected when component in instantiated + description: Environment variables are key value pairs that should be injected + when component in instantiated type: object required: - - envVarName - - envValueType + - envVarName + - envValueType properties: envVarName: type: string @@ -495,67 +545,80 @@ components: envValueType: type: string enum: - - USER_DEFINED - - PLATFORM_DEFINED_DYNAMIC_PORT - - PLATFORM_DEFINED_DNS - - PLATFORM_DEFINED_IP + - USER_DEFINED + - PLATFORM_DEFINED_DYNAMIC_PORT + - PLATFORM_DEFINED_DNS + - PLATFORM_DEFINED_IP envVarValue: type: string pattern: ^[A-Za-z0-9][A-Za-z0-9_]{6,62}[A-Za-z0-9]$ description: Value to be assigned to environment variable envVarSrc: type: string - description: Full path of parameter from componentSpec that should be used to generate the environment value. Eg. networkResourceProfile[1]. interfaceId. + description: Full path of parameter from componentSpec that should be used + to generate the environment value. Eg. networkResourceProfile[1]. interfaceId. CommandLineParams: - description: List of commands and arguments that shall be invoked when the component instance is created. This is valid only for container based deployment. + description: List of commands and arguments that shall be invoked when the component + instance is created. This is valid only for container based deployment. type: object required: - - command + - command properties: command: type: array items: type: string - description: List of commands that application should invoke when an instance is created. + description: List of commands that application should invoke when an instance + is created. commandArgs: type: array items: type: string description: List of arguments required by the command. DeploymentConfig: - description: Configuration used when deploying a component. May override other ComponentSpec parameters related to deployment like restart policy, command line parameters, environment variables, etc. + description: Configuration used when deploying a component. May override other + ComponentSpec parameters related to deployment like restart policy, command + line parameters, environment variables, etc. type: object required: - - configType - - contents + - configType + - contents properties: configType: type: string enum: - - DOCKER_COMPOSE - - KUBERNETES_MANIFEST - - CLOUD_INIT - - HELM_VALUES + - DOCKER_COMPOSE + - KUBERNETES_MANIFEST + - CLOUD_INIT + - HELM_VALUES description: Config type. contents: type: string description: Contents of the configuration. ComponentSpec: - description: Details about compute, networking and storage requirements for each component of the application. App provider should define all information needed to instantiate the component. If artefact is being defined at component level this section should have information just about the component. In case the artefact is being defined at application level the section should provide details about all the components. + description: Details about compute, networking and storage requirements for + each component of the application. App provider should define all information + needed to instantiate the component. If artefact is being defined at component + level this section should have information just about the component. In case + the artefact is being defined at application level the section should provide + details about all the components. type: object required: - - componentName - - images - - numOfInstances - - restartPolicy - - computeResourceProfile + - componentName + - images + - numOfInstances + - restartPolicy + - computeResourceProfile properties: componentName: type: string pattern: ^[A-Za-z0-9][A-Za-z0-9_]{6,62}[A-Za-z0-9]$ - description: Must be a valid RFC 1035 label name. Component name must be unique with an application + description: Must be a valid RFC 1035 label name. Component name must be + unique with an application images: - description: List of all images associated with the component. Images are specified using the file identifiers. Partner OP provides these images using file upload api. + description: List of all images associated with the component. Images are + specified using the file identifiers. Partner OP provides these images + using file upload api. type: array items: $ref: '#/components/schemas/FileId' @@ -567,13 +630,16 @@ components: restartPolicy: type: string enum: - - RESTART_POLICY_ALWAYS - - RESTART_POLICY_NEVER + - RESTART_POLICY_ALWAYS + - RESTART_POLICY_NEVER description: How the platform shall handle component failure commandLineParams: $ref: '#/components/schemas/CommandLineParams' exposedInterfaces: - description: Each application component exposes some ports either for external users or for inter component communication. Application provider is required to specify which ports are to be exposed and the type of traffic that will flow through these ports. + description: Each application component exposes some ports either for external + users or for inter component communication. Application provider is required + to specify which ports are to be exposed and the type of traffic that + will flow through these ports. type: array items: $ref: '#/components/schemas/InterfaceDetails' @@ -587,7 +653,8 @@ components: deploymentConfig: $ref: '#/components/schemas/DeploymentConfig' persistentVolumes: - description: The ephemeral volume a container process may need to temporary store internal data + description: The ephemeral volume a container process may need to temporary + store internal data type: array items: $ref: '#/components/schemas/PersistentVolumeDetails' @@ -595,15 +662,15 @@ components: ComputeResourceInfo: type: object required: - - cpuArchType - - numCPU - - memory + - cpuArchType + - numCPU + - memory properties: cpuArchType: type: string enum: - - ISA_X86_64 - - ISA_ARM_64 + - ISA_X86_64 + - ISA_ARM_64 description: CPU Instruction Set Architecture (ISA) E.g., Intel, Arm etc. numCPU: $ref: '#/components/schemas/Vcpu' @@ -635,9 +702,9 @@ components: FederationRequestData: type: object required: - - origOPFederationId - - initialDate - - partnerStatusLink + - origOPFederationId + - initialDate + - partnerStatusLink properties: origOPFederationId: $ref: '#/components/schemas/FederationIdentifier' @@ -650,7 +717,8 @@ components: initialDate: type: string format: date-time - description: Time zone info of the federation initiated by the originating OP + description: Time zone info of the federation initiated by the originating + OP partnerStatusLink: $ref: '#/components/schemas/Uri' partnerCallbackCredentials: @@ -658,9 +726,9 @@ components: FederationResponseData: type: object required: - - partnerOPFederationId - - federationContextId - - platformCaps + - partnerOPFederationId + - federationContextId + - platformCaps properties: partnerOPFederationId: $ref: '#/components/schemas/FederationIdentifier' @@ -681,35 +749,45 @@ components: items: $ref: '#/components/schemas/ZoneDetails' minItems: 1 - description: List of zones, which the operator platform wishes to make available to developers/ISVs of requesting operator platform. + description: List of zones, which the operator platform wishes to make available + to developers/ISVs of requesting operator platform. platformCaps: type: array items: type: string enum: - - homeRouting - - Anchoring - - serviceAPIs - - faultMgmt - - eventMgmt - - resourceMonitor - description: Home routing - Operator platform is capable of routing edge application data traffic from its edges to user device in their home location. This is the case where user devices are served in their home region (requesting platform region, non-roaming) but the corresponding edge application are in operator platform edges. Anchoring - Operator platform is capable of routing edge application traffic for roaming user devices to edge application in user device home network. Service APIs - Capability to handle Service APIs (e.g., CAMARA APIs) from the Leading OP + - homeRouting + - Anchoring + - serviceAPIs + - faultMgmt + - eventMgmt + - resourceMonitor + description: Home routing - Operator platform is capable of routing edge + application data traffic from its edges to user device in their home + location. This is the case where user devices are served in their home + region (requesting platform region, non-roaming) but the corresponding + edge application are in operator platform edges. Anchoring - Operator + platform is capable of routing edge application traffic for roaming + user devices to edge application in user device home network. Service + APIs - Capability to handle Service APIs (e.g., CAMARA APIs) from the + Leading OP Flavour: type: object required: - - flavourId - - cpuArchType - - supportedOSTypes - - numCPU - - memorySize - - storageSize + - flavourId + - cpuArchType + - supportedOSTypes + - numCPU + - memorySize + - storageSize properties: flavourId: $ref: '#/components/schemas/FlavourId' cpuArchType: $ref: '#/components/schemas/CPUArchType' supportedOSTypes: - description: A list of operating systems which this flavour configuration can support e.g., RHEL Linux, Ubuntu 18.04 LTS, MS Windows 2012 R2. + description: A list of operating systems which this flavour configuration + can support e.g., RHEL Linux, Ubuntu 18.04 LTS, MS Windows 2012 R2. type: array items: $ref: '#/components/schemas/OSType' @@ -734,7 +812,6 @@ components: type: integer format: int32 description: Number of FPGAs - vpu: type: integer description: Number of Intel VPUs available @@ -748,21 +825,22 @@ components: GpuInfo: type: object required: - - gpuVendorType - - gpuModeName - - gpuMemory - - numGPU + - gpuVendorType + - gpuModeName + - gpuMemory + - numGPU properties: gpuVendorType: type: string enum: - - GPU_PROVIDER_NVIDIA - - GPU_PROVIDER_AMD + - GPU_PROVIDER_NVIDIA + - GPU_PROVIDER_AMD description: GPU vendor name e.g. NVIDIA, AMD etc. - #example: Nvidia gpuModeName: type: string - description: Model name corresponding to vendorType may include info e.g. for NVIDIA, model name could be “Tesla M60”, “Tesla V100” etc. + description: "Model name corresponding to vendorType may include info e.g.\ + \ for NVIDIA, model name could be \u201CTesla M60\u201D, \u201CTesla V100\u201D\ + \ etc." gpuMemory: type: integer description: GPU memory in Mbytes @@ -772,15 +850,15 @@ components: HugePage: type: object required: - - pageSize - - number + - pageSize + - number properties: pageSize: type: string enum: - - 2MB - - 4MB - - 1GB + - 2MB + - 4MB + - 1GB description: Size of hugepage number: type: integer @@ -788,42 +866,57 @@ components: InterfaceDetails: type: object required: - - interfaceId - - commProtocol - - commPort - - visibilityType + - interfaceId + - commProtocol + - commPort + - visibilityType properties: interfaceId: type: string - description: Each Port and corresponding traffic protocol exposed by the component is identified by a name. Application client on user device requires this to uniquely identify the interface. + description: Each Port and corresponding traffic protocol exposed by the + component is identified by a name. Application client on user device requires + this to uniquely identify the interface. pattern: ^[A-Za-z0-9][A-Za-z0-9_]{6,30}[A-Za-z0-9]$ commProtocol: type: string enum: - - TCP - - UDP - - HTTP_HTTPS - description: Defines the IP transport communication protocol i.e., TCP, UDP or HTTP + - TCP + - UDP + - HTTP_HTTPS + description: Defines the IP transport communication protocol i.e., TCP, + UDP or HTTP commPort: type: integer format: int32 minimum: 1 maximum: 65535 - description: Port number exposed by the component. OP may generate a dynamic port towards the UCs corresponding to this internal port and forward the client traffic from dynamic port to container Port. + description: Port number exposed by the component. OP may generate a dynamic + port towards the UCs corresponding to this internal port and forward the + client traffic from dynamic port to container Port. visibilityType: - description: Defines whether the interface is exposed to outer world or not i.e., external, or internal. If this is set to "external", then it is exposed to external applications otherwise it is exposed internally to edge application components within edge cloud. When exposed to external world, an external dynamic port is assigned for UC traffic and mapped to the internal container Port + description: Defines whether the interface is exposed to outer world or + not i.e., external, or internal. If this is set to "external", then it + is exposed to external applications otherwise it is exposed internally + to edge application components within edge cloud. When exposed to external + world, an external dynamic port is assigned for UC traffic and mapped + to the internal container Port type: string enum: - - VISIBILITY_EXTERNAL - - VISIBILITY_INTERNAL + - VISIBILITY_EXTERNAL + - VISIBILITY_INTERNAL network: type: string pattern: ^[A-Za-z][A-Za-z0-9_]{6,30}[A-Za-z0-9]$ - description: Name of the network. In case the application has to be associated with more than 1 network then app provider must define the name of the network on which this interface has to be exposed. This parameter is required only if the port has to be exposed on a specific network other than default. + description: Name of the network. In case the application has to be associated + with more than 1 network then app provider must define the name of the + network on which this interface has to be exposed. This parameter is + required only if the port has to be exposed on a specific network other + than default. InterfaceName: type: string pattern: ^[a-z][a-z0-9]{3}$ - description: Interface Name. Required only if application has to be attached to a network other than default. + description: Interface Name. Required only if application has to be attached + to a network other than default. InvalidParam: type: object properties: @@ -832,7 +925,7 @@ components: reason: type: string required: - - param + - param MobileNetworkIds: type: object properties: @@ -860,58 +953,56 @@ components: OSType: type: object required: - - architecture - - distribution - - version - - license + - architecture + - distribution + - version + - license properties: architecture: type: string enum: - - x86_64 - - x86 + - x86_64 + - x86 example: x86_64 distribution: type: string enum: - - RHEL - - UBUNTU - - COREOS - - FEDORA - - WINDOWS - - OTHER - + - RHEL + - UBUNTU + - COREOS + - FEDORA + - WINDOWS + - OTHER version: type: string enum: - - OS_VERSION_UBUNTU_2204_LTS - - OS_VERSION_RHEL_8 - - OS_VERSION_RHEL_7 - - OS_VERSION_DEBIAN_11 - - OS_VERSION_COREOS_STABLE - - OS_MS_WINDOWS_2012_R2 - - OTHER - + - OS_VERSION_UBUNTU_2204_LTS + - OS_VERSION_RHEL_8 + - OS_VERSION_RHEL_7 + - OS_VERSION_DEBIAN_11 + - OS_VERSION_COREOS_STABLE + - OS_MS_WINDOWS_2012_R2 + - OTHER license: type: string enum: - - OS_LICENSE_TYPE_FREE - - OS_LICENSE_TYPE_ON_DEMAND - - NOT_SPECIFIED + - OS_LICENSE_TYPE_FREE + - OS_LICENSE_TYPE_ON_DEMAND + - NOT_SPECIFIED PersistentVolumeDetails: type: object required: - - volumeSize - - volumeMountPath - - volumeName + - volumeSize + - volumeMountPath + - volumeName properties: volumeSize: type: string enum: - - 10Gi - - 20Gi - - 50Gi - - 100Gi + - 10Gi + - 20Gi + - 50Gi + - 100Gi description: size of the volume given by user (10GB, 20GB, 50 GB or 100GB) volumeMountPath: type: string @@ -922,21 +1013,23 @@ components: ephemeralType: type: boolean default: false - description: It indicates the ephemeral storage on the node and contents are not preserved if containers restarts + description: It indicates the ephemeral storage on the node and contents + are not preserved if containers restarts accessMode: type: string enum: - - RW - - RO + - RW + - RO default: RW description: Values are RW (read/write) and RO (read-only)l sharingPolicy: type: string enum: - - EXCLUSIVE - - SHARED + - EXCLUSIVE + - SHARED default: EXCLUSIVE - description: Exclusive or Shared. If shared, then in case of multiple containers same volume will be shared across the containers. + description: Exclusive or Shared. If shared, then in case of multiple containers + same volume will be shared across the containers. ProblemDetails: type: object properties: @@ -954,14 +1047,14 @@ components: ServiceEndpoint: type: object required: - - port + - port anyOf: - - required: - - fqdn - - required: - - ipv4Addresses - - required: - - ipv6Addresses + - required: + - fqdn + - required: + - ipv4Addresses + - required: + - ipv6Addresses properties: port: $ref: '#/components/schemas/Port' @@ -980,9 +1073,9 @@ components: ZoneDetails: type: object required: - - zoneId - - geolocation - - geographyDetails + - zoneId + - geolocation + - geographyDetails properties: zoneId: $ref: '#/components/schemas/ZoneIdentifier' @@ -990,12 +1083,14 @@ components: $ref: '#/components/schemas/GeoLocation' geographyDetails: type: string - description: Details about cities or state covered by the edge. Details about the type of locality for eg rural, urban, industrial etc. This information is defined in human readable form. + description: Details about cities or state covered by the edge. Details + about the type of locality for eg rural, urban, industrial etc. This information + is defined in human readable form. ZoneRegistrationRequestData: type: object required: - - acceptedAvailabilityZones - - availZoneNotifLink + - acceptedAvailabilityZones + - availZoneNotifLink properties: acceptedAvailabilityZones: type: array @@ -1007,21 +1102,20 @@ components: ZoneRegistrationResponseData: type: object required: - - acceptedZoneResourceInfo + - acceptedZoneResourceInfo properties: acceptedZoneResourceInfo: type: array items: $ref: '#/components/schemas/ZoneRegisteredData' - minItems: 1 ZoneRegisteredData: type: object required: - - zoneId - - reservedComputeResources - - computeResourceQuotaLimits - - flavoursSupported + - zoneId + - reservedComputeResources + - computeResourceQuotaLimits + - flavoursSupported properties: zoneId: $ref: '#/components/schemas/ZoneIdentifier' @@ -1045,19 +1139,22 @@ components: networkResources: type: object required: - - egressBandWidth - - dedicatedNIC - - supportSriov - - supportDPDK + - egressBandWidth + - dedicatedNIC + - supportSriov + - supportDPDK properties: egressBandWidth: type: integer format: int32 - description: Max dl throughput that this edge can offer. It is defined in Mbps. + description: Max dl throughput that this edge can offer. It is defined + in Mbps. dedicatedNIC: type: integer format: int32 - description: Number of network interface cards which can be dedicatedly assigned to application pods on isolated networks. This includes virtual as well physical NICs + description: Number of network interface cards which can be dedicatedly + assigned to application pods on isolated networks. This includes virtual + as well physical NICs supportSriov: type: boolean description: If this zone support SRIOV networks or not @@ -1066,11 +1163,13 @@ components: description: If this zone supports DPDK based networking. zoneServiceLevelObjsInfo: type: object - description: It is a measure of the actual amount of data that is being sent over a network per unit of time and indicates máximum supported value for a zone + description: "It is a measure of the actual amount of data that is being\ + \ sent over a network per unit of time and indicates m\xE1ximum supported\ + \ value for a zone" required: - - latencyRanges - - jitterRanges - - throughputRanges + - latencyRanges + - jitterRanges + - throughputRanges properties: latencyRanges: type: object @@ -1079,11 +1178,15 @@ components: type: integer format: int32 minimum: 1 - description: The time for data/packet to reach from UC to edge application. It represent mínimum latency in milli seconds that may exist between UCs and edge apps in this zone but it can be higher in actual. + description: "The time for data/packet to reach from UC to edge\ + \ application. It represent m\xEDnimum latency in milli seconds\ + \ that may exist between UCs and edge apps in this zone but it\ + \ can be higher in actual." maxLatency: type: integer format: int32 - description: The maximum limit of latency between UC and Edge App in milli seconds. + description: The maximum limit of latency between UC and Edge App + in milli seconds. jitterRanges: type: object properties: @@ -1094,7 +1197,8 @@ components: maxJitter: type: integer format: int32 - description: The maximum limit of network jitter between UC and Edge App in milli seconds. + description: The maximum limit of network jitter between UC and + Edge App in milli seconds. throughputRanges: type: object properties: @@ -1102,71 +1206,69 @@ components: type: integer format: int32 minimum: 1 - description: The minimum limit of network throughput between UC and Edge App in Mega bits per seconds (Mbps). + description: The minimum limit of network throughput between UC + and Edge App in Mega bits per seconds (Mbps). maxThroughput: type: integer format: int32 - description: The maximum limit of network throughput between UC and Edge App in Mega bits per seconds (Mbps). - - # - # HTTP responses - # + description: The maximum limit of network throughput between UC + and Edge App in Mega bits per seconds (Mbps). responses: - "400": + '400': description: Bad request content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' - "401": + '401': description: Unauthorized content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' - "404": + '404': description: Not Found content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' - "409": + '409': description: Conflict content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' - "412": + '412': description: Precondition Failed content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' - "422": + '422': description: Unprocessable Entity content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' - "500": + '500': description: Internal Server Error content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' - "501": + '501': description: Not Implemented content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' - "503": + '503': description: Service Unavailable content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' - "520": + '520': description: Web Server Returned an Unknown Error content: application/problem+json: @@ -1180,7 +1282,7 @@ paths: summary: Creates one direction federation with partner operator platform. operationId: CreateFederation tags: - - FederationManagement + - FederationManagement requestBody: required: true content: @@ -1188,7 +1290,7 @@ paths: schema: $ref: '#/components/schemas/FederationRequestData' responses: - "200": + '200': description: Federation meta-info request accepted content: application/json: @@ -1196,7 +1298,8 @@ paths: $ref: '#/components/schemas/FederationResponseData' headers: Location: - description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/operatorplatform/federation/v1/partner/{federationContextId}' + description: 'Contains the URI of the newly created resource, according + to the structure: {apiRoot}/operatorplatform/federation/v1/partner/{federationContextId}' required: true schema: type: string @@ -1208,21 +1311,21 @@ paths: description: Content-Encoding, described in IETF RFC 7231 schema: type: string - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' @@ -1231,48 +1334,70 @@ paths: '{$request.body#/partnerStatusLink }': post: requestBody: - description: | - OP uses this callback api to notify partner OP about change in federation status, federation metadata or offered zone details. Allowed combinations of objectType and operationType are - - FEDERATION - STATUS: Status specified by parameter 'federationStatus'. - - ZONES - STATUS: Status specified by parameter 'zoneStatus'. - - ZONES - ADD: Use parameter 'addZones' to define add new zones - - ZONES - REMOVE: Use parameter 'removeZones' to define remove zones. - - EDGE_DISCOVERY_SERVICE - UPDATE: Use parameter 'edgeDiscoverySvcEndPoint' to specify new endpoints - - LCM_SERVICE - UPDATE: Use parameter 'lcmSvcEndPoint' to specify new endpoints - - MOBILE_NETWORK_CODES - ADD: Use parameter 'addMobileNetworkIds' to define new mobile network codes. - - MOBILE_NETWORK_CODES - REMOVE: Use parameter 'removeMobileNetworkIds' to remove mobile network codes. - - FIXED_NETWORK_CODES - ADD: Use parameter 'addFixedNetworkIds' to define new fixed network codes. - - FIXED_NETWORK_CODES - REMOVE: Use parameter 'removeFixedNetworkIds' to remove fixed network codes. - - SERVICE_APIS - ADD/REMOVE: Parameter Usage 'addServiceAPIs / removeServiceAPIs' to add or remove Service APIs support. + description: 'OP uses this callback api to notify partner OP about + change in federation status, federation metadata or offered zone + details. Allowed combinations of objectType and operationType are + + - FEDERATION - STATUS: Status specified by parameter ''federationStatus''. + + - ZONES - STATUS: Status specified by parameter ''zoneStatus''. + + - ZONES - ADD: Use parameter ''addZones'' to define add new zones + + - ZONES - REMOVE: Use parameter ''removeZones'' to define remove + zones. + + - EDGE_DISCOVERY_SERVICE - UPDATE: Use parameter ''edgeDiscoverySvcEndPoint'' + to specify new endpoints + + - LCM_SERVICE - UPDATE: Use parameter ''lcmSvcEndPoint'' to specify + new endpoints + + - MOBILE_NETWORK_CODES - ADD: Use parameter ''addMobileNetworkIds'' + to define new mobile network codes. + + - MOBILE_NETWORK_CODES - REMOVE: Use parameter ''removeMobileNetworkIds'' + to remove mobile network codes. + + - FIXED_NETWORK_CODES - ADD: Use parameter ''addFixedNetworkIds'' + to define new fixed network codes. + + - FIXED_NETWORK_CODES - REMOVE: Use parameter ''removeFixedNetworkIds'' + to remove fixed network codes. + + - SERVICE_APIS - ADD/REMOVE: Parameter Usage ''addServiceAPIs / + removeServiceAPIs'' to add or remove Service APIs support. + + ' content: application/json: schema: type: object required: - - federationContextId - - objectType - - operationType - - modificationDate + - federationContextId + - objectType + - operationType + - modificationDate properties: federationContextId: $ref: '#/components/schemas/FederationIdentifier' objectType: type: string enum: - - FEDERATION - - ZONES - - EDGE_DISCOVERY_SERVICE - - LCM_SERVICE - - MOBILE_NETWORK_CODES - - FIXED_NETWORK_CODES - - SERVICE_APIS + - FEDERATION + - ZONES + - EDGE_DISCOVERY_SERVICE + - LCM_SERVICE + - MOBILE_NETWORK_CODES + - FIXED_NETWORK_CODES + - SERVICE_APIS operationType: type: string enum: - - STATUS - - UPDATE - - ADD - - REMOVE + - STATUS + - UPDATE + - ADD + - REMOVE edgeDiscoverySvcEndPoint: $ref: '#/components/schemas/ServiceEndpoint' lcmSvcEndPoint: @@ -1289,13 +1414,16 @@ paths: type: array items: $ref: '#/components/schemas/ZoneDetails' - description: List of zones, which the operator platform wishes to make available to developers/ISVs of requesting operator platform. + description: List of zones, which the operator platform + wishes to make available to developers/ISVs of requesting + operator platform. minItems: 1 removeZones: type: array items: $ref: '#/components/schemas/ZoneIdentifier' - description: List of zones, which the operator platform no longer wishes to share. + description: List of zones, which the operator platform + no longer wishes to share. minItems: 1 addServiceAPIs: $ref: '#/components/schemas/serviceAPINames' @@ -1306,8 +1434,8 @@ paths: items: type: object required: - - zoneId - - status + - zoneId + - status properties: zoneId: $ref: '#/components/schemas/ZoneIdentifier' @@ -1319,50 +1447,56 @@ paths: modificationDate: type: string format: date-time - description: Date and time of the federation modification by the originating partner OP + description: Date and time of the federation modification + by the originating partner OP responses: - "204": + '204': description: Expected response to a successful call back processing - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' + parameters: + - $ref: '#/components/parameters/XInternalHeader' + - $ref: '#/components/parameters/XPartnerApiRootHeader' /{federationContextId}/partner: get: - summary: Retrieves details about the federation context with the partner OP. The response shall provide info about the zones offered by the partner, partner OP network codes, information about edge discovery and LCM service etc. + summary: Retrieves details about the federation context with the partner OP. + The response shall provide info about the zones offered by the partner, partner + OP network codes, information about edge discovery and LCM service etc. operationId: GetFederationDetails tags: - - FederationManagement + - FederationManagement parameters: - - name: federationContextId - in: path - required: true - schema: - $ref: '#/components/schemas/FederationContextId' + - name: federationContextId + in: path + required: true + schema: + $ref: '#/components/schemas/FederationContextId' responses: - "200": + '200': description: Federation meta-info request accepted content: application/json: schema: type: object required: - - edgeDiscoveryServiceEndPoint - - lcmServiceEndPoint + - edgeDiscoveryServiceEndPoint + - lcmServiceEndPoint properties: edgeDiscoveryServiceEndPoint: $ref: '#/components/schemas/ServiceEndpoint' @@ -1377,35 +1511,36 @@ paths: items: $ref: '#/components/schemas/ZoneDetails' minItems: 1 - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' patch: - summary: API used by the Originating OP towards the partner OP, to update the parameters associated to the existing federation + summary: API used by the Originating OP towards the partner OP, to update the + parameters associated to the existing federation operationId: UpdateFederation tags: - - FederationManagement + - FederationManagement parameters: - - name: federationContextId - in: path - required: true - schema: - $ref: '#/components/schemas/FederationContextId' + - name: federationContextId + in: path + required: true + schema: + $ref: '#/components/schemas/FederationContextId' requestBody: required: true description: Details about changes origination OP wished to apply @@ -1414,21 +1549,21 @@ paths: schema: type: object required: - - objectType - - operationType - - modificationDate + - objectType + - operationType + - modificationDate properties: objectType: type: string enum: - - MOBILE_NETWORK_CODES - - FIXED_NETWORK_CODES + - MOBILE_NETWORK_CODES + - FIXED_NETWORK_CODES operationType: type: string enum: - - ADD_CODES - - REMOVE_CODES - - UPDATE_CODES + - ADD_CODES + - REMOVE_CODES + - UPDATE_CODES addMobileNetworkIds: $ref: '#/components/schemas/MobileNetworkIds' removeMobileNetworkIds: @@ -1440,17 +1575,18 @@ paths: modificationDate: type: string format: date-time - description: Date and time of the federation modification by the originating partner OP + description: Date and time of the federation modification by the + originating partner OP responses: - "200": + '200': description: Federation meta-info request accepted content: application/json: schema: type: object required: - - edgeDiscoveryServiceEndPoint - - lcmServiceEndPoint + - edgeDiscoveryServiceEndPoint + - lcmServiceEndPoint properties: edgeDiscoveryServiceEndPoint: $ref: '#/components/schemas/ServiceEndpoint' @@ -1465,21 +1601,21 @@ paths: items: $ref: '#/components/schemas/ZoneDetails' minItems: 1 - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' @@ -1487,55 +1623,59 @@ paths: summary: Remove existing federation with the partner OP operationId: DeleteFederationDetails tags: - - FederationManagement + - FederationManagement parameters: - - name: federationContextId - in: path - required: true - schema: - $ref: '#/components/schemas/FederationContextId' + - name: federationContextId + in: path + required: true + schema: + $ref: '#/components/schemas/FederationContextId' responses: - "200": + '200': description: Federation removed successfully - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' + parameters: + - $ref: '#/components/parameters/XInternalHeader' + - $ref: '#/components/parameters/XPartnerApiRootHeader' /fed-context-id: get: summary: Retrieves the existing federationContextId with partner operator platform. operationId: GetFederationContextId tags: - - FederationManagement + - FederationManagement responses: - "200": + '200': description: Federation context identifier retrieval request accepted content: application/json: schema: type: object required: - - FederationContextId + - FederationContextId properties: FederationContextId: $ref: '#/components/schemas/FederationContextId' headers: Location: - description: 'Contains the URI of the existing resource, according to the structure: {apiRoot}/operatorplatform/federation/v1/partner/{federationContextId}' + description: 'Contains the URI of the existing resource, according to + the structure: {apiRoot}/operatorplatform/federation/v1/partner/{federationContextId}' required: true schema: type: string @@ -1547,36 +1687,41 @@ paths: description: Content-Encoding, described in IETF RFC 7231 schema: type: string - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' + parameters: + - $ref: '#/components/parameters/XInternalHeader' + - $ref: '#/components/parameters/XPartnerApiRootHeader' /{federationContextId}/zones: post: - summary: Originating OP informs partner OP that it is willing to access the specified zones and partner OP shall reserve compute and network resources for these zones. + summary: Originating OP informs partner OP that it is willing to access the + specified zones and partner OP shall reserve compute and network resources + for these zones. operationId: ZoneSubscribe tags: - - AvailabilityZoneInfoSynchronization + - AvailabilityZoneInfoSynchronization parameters: - - name: federationContextId - in: path - required: true - schema: - $ref: '#/components/schemas/FederationContextId' + - name: federationContextId + in: path + required: true + schema: + $ref: '#/components/schemas/FederationContextId' requestBody: content: application/json: @@ -1584,27 +1729,27 @@ paths: $ref: '#/components/schemas/ZoneRegistrationRequestData' required: true responses: - "200": + '200': description: Zone registered successfully content: application/json: schema: $ref: '#/components/schemas/ZoneRegistrationResponseData' - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' @@ -1619,9 +1764,9 @@ paths: schema: type: object required: - - federationContextId - - zoneId - - zoneResUpdInfo + - federationContextId + - zoneId + - zoneResUpdInfo properties: federationContextId: $ref: '#/components/schemas/FederationIdentifier' @@ -1634,7 +1779,8 @@ paths: minProperties: 1 properties: availableCompResources: - description: Resources exclusively reserved for the originator OP. + description: Resources exclusively reserved for the + originator OP. type: array items: $ref: '#/components/schemas/ComputeResourceInfo' @@ -1645,131 +1791,146 @@ paths: egressBandWidth: type: integer format: int32 - description: Max dl throughput that this edge can offer. It is defined in Mbps. + description: Max dl throughput that this edge + can offer. It is defined in Mbps. dedicatedNIC: type: integer format: int32 supportSriov: type: boolean - description: If this zone support SRIOV networks or not + description: If this zone support SRIOV networks + or not supportDPDK: type: boolean - description: If this zone supports DPDK based networking + description: If this zone supports DPDK based + networking minProperties: 1 responses: - "200": + '200': description: Zone info notification acknowledged - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' + parameters: + - $ref: '#/components/parameters/XInternalHeader' + - $ref: '#/components/parameters/XPartnerApiRootHeader' /{federationContextId}/zones/{zoneId}: delete: - summary: Assert usage of a partner OP zone. Originating OP informs partner OP that it will no longer access the specified zone. + summary: Assert usage of a partner OP zone. Originating OP informs partner OP + that it will no longer access the specified zone. operationId: ZoneUnsubscribe tags: - - AvailabilityZoneInfoSynchronization + - AvailabilityZoneInfoSynchronization parameters: - - name: federationContextId - in: path - required: true - schema: - $ref: '#/components/schemas/FederationContextId' - - name: zoneId - in: path - required: true - schema: - $ref: '#/components/schemas/ZoneIdentifier' + - name: federationContextId + in: path + required: true + schema: + $ref: '#/components/schemas/FederationContextId' + - name: zoneId + in: path + required: true + schema: + $ref: '#/components/schemas/ZoneIdentifier' responses: - "200": + '200': description: Zone deregistered successfully - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' get: - summary: Retrieves details about the computation and network resources that partner OP has reserved for this zone. + summary: Retrieves details about the computation and network resources that + partner OP has reserved for this zone. operationId: GetZoneData tags: - - AvailabilityZoneInfoSynchronization + - AvailabilityZoneInfoSynchronization parameters: - - name: federationContextId - in: path - required: true - schema: - $ref: '#/components/schemas/FederationContextId' - - name: zoneId - in: path - required: true - schema: - $ref: '#/components/schemas/ZoneIdentifier' + - name: federationContextId + in: path + required: true + schema: + $ref: '#/components/schemas/FederationContextId' + - name: zoneId + in: path + required: true + schema: + $ref: '#/components/schemas/ZoneIdentifier' responses: - "200": + '200': description: Zone metadata content: application/json: schema: $ref: '#/components/schemas/ZoneRegisteredData' - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' + parameters: + - $ref: '#/components/parameters/XInternalHeader' + - $ref: '#/components/parameters/XPartnerApiRootHeader' /{federationContextId}/artefact: post: - summary: Uploads application artefact on partner OP. Artefact is a zip file containing scripts and/or packaging files like Terraform or Helm which are required to create an instance of an application. + summary: Uploads application artefact on partner OP. Artefact is a zip file + containing scripts and/or packaging files like Terraform or Helm which are + required to create an instance of an application. operationId: UploadArtefact tags: - - ArtefactManagement + - ArtefactManagement parameters: - - name: federationContextId - in: path - required: true - schema: - $ref: '#/components/schemas/FederationContextId' + - name: federationContextId + in: path + required: true + schema: + $ref: '#/components/schemas/FederationContextId' requestBody: - description: An application can consist of multiple components. App providers are allowed to define separate artefacts for each component or they could define a consolidated artefact at application level. + description: An application can consist of multiple components. App providers + are allowed to define separate artefacts for each component or they could + define a consolidated artefact at application level. content: application/json: schema: @@ -1789,12 +1950,13 @@ paths: artefactDescription: type: string maxLength: 256 - description: Brief description of the artefact by the application provider + description: Brief description of the artefact by the application + provider artefactVirtType: type: string enum: - - VM_TYPE - - CONTAINER_TYPE + - VM_TYPE + - CONTAINER_TYPE artefactFileName: type: string minLength: 8 @@ -1803,165 +1965,112 @@ paths: artefactFileFormat: type: string enum: - - WINZIP - - TAR - - TEXT - - TARGZ - description: Artefacts like Helm charts or Terraform scripts may need compressed format. + - WINZIP + - TAR + - TEXT + - TARGZ + description: Artefacts like Helm charts or Terraform scripts may + need compressed format. artefactDescriptorType: type: string enum: - - HELM - - TERRAFORM - - ANSIBLE - - SHELL - - COMPONENTSPEC - description: Type of descriptor present in the artefact. App provider can either define either a Helm chart or a Terraform script or container spec. + - HELM + - TERRAFORM + - ANSIBLE + - SHELL + - COMPONENTSPEC + description: Type of descriptor present in the artefact. App provider + can either define either a Helm chart or a Terraform script or + container spec. repoType: type: string enum: - - PRIVATEREPO - - PUBLICREPO - - UPLOAD - description: Artefact or file repository location. PUBLICREPO is used of public URLs like GitHub, Helm repo, docker registry etc., PRIVATEREPO is used for private repo managed by the application developer, UPLOAD is for the case when artefact/file is uploaded from MEC web portal. OP should pull the image from ‘repoUrl' immediately after receiving the request and then send back the response. In case the repoURL corresponds to a docker registry, use docker v2 http api to do the pull. + - PRIVATEREPO + - PUBLICREPO + - UPLOAD + description: "Artefact or file repository location. PUBLICREPO is\ + \ used of public URLs like GitHub, Helm repo, docker registry\ + \ etc., PRIVATEREPO is used for private repo managed by the application\ + \ developer, UPLOAD is for the case when artefact/file is uploaded\ + \ from MEC web portal. OP should pull the image from \u2018repoUrl'\ + \ immediately after receiving the request and then send back the\ + \ response. In case the repoURL corresponds to a docker registry,\ + \ use docker v2 http api to do the pull." artefactRepoLocation: $ref: '#/components/schemas/ObjectRepoLocation' artefactFile: type: string format: binary - description: Helm archive/Terraform archive/container spec file or Binary image associated with an application component. + description: Helm archive/Terraform archive/container spec file + or Binary image associated with an application component. componentSpec: - description: Details about compute, networking and storage requirements for each component of the application. App provider should define all information needed to instantiate the component. If artefact is being defined at component level this section should have information just about the component. In case the artefact is being defined at application level the section should provide details about all the components. + description: Details about compute, networking and storage requirements + for each component of the application. App provider should define + all information needed to instantiate the component. If artefact + is being defined at component level this section should have information + just about the component. In case the artefact is being defined + at application level the section should provide details about + all the components. type: array items: $ref: '#/components/schemas/ComponentSpec' minItems: 1 -# multipart/form-data: -# schema: -# type: object -# required: -# - artefactId -# - appProviderId -# - artefactName -# - artefactVersionInfo -# - artefactVirtType -# - artefactDescriptorType -# - componentSpec -# properties: -# artefactId: -# $ref: '#/components/schemas/ArtefactId' -# appProviderId: -# $ref: '#/components/schemas/AppProviderId' -# artefactName: -# type: string -# pattern: ^[A-Za-z][A-Za-z0-9_]{7,31}$ -# description: Name of the artefact. -# artefactVersionInfo: -# type: string -# description: Artefact version information -# artefactDescription: -# type: string -# maxLength: 256 -# description: Brief description of the artefact by the application provider -# artefactVirtType: -# type: string -# enum: -# - VM_TYPE -# - CONTAINER_TYPE -# artefactFileName: -# type: string -# minLength: 8 -# maxLength: 32 -# description: Name of the file. -# artefactFileFormat: -# type: string -# enum: -# - WINZIP -# - TAR -# - TEXT -# - TARGZ -# description: Artefacts like Helm charts or Terraform scripts may need compressed format. -# artefactDescriptorType: -# type: string -# enum: -# - HELM -# - TERRAFORM -# - ANSIBLE -# - SHELL -# - COMPONENTSPEC -# description: Type of descriptor present in the artefact. App provider can either define either a Helm chart or a Terraform script or container spec. -# repoType: -# type: string -# enum: -# - PRIVATEREPO -# - PUBLICREPO -# - UPLOAD -# description: Artefact or file repository location. PUBLICREPO is used of public URLs like GitHub, Helm repo, docker registry etc., PRIVATEREPO is used for private repo managed by the application developer, UPLOAD is for the case when artefact/file is uploaded from MEC web portal. OP should pull the image from ‘repoUrl' immediately after receiving the request and then send back the response. In case the repoURL corresponds to a docker registry, use docker v2 http api to do the pull. -# artefactRepoLocation: -# $ref: '#/components/schemas/ObjectRepoLocation' -# artefactFile: -# type: string -# format: binary -# description: Helm archive/Terraform archive/container spec file or Binary image associated with an application component. -# componentSpec: -# description: Details about compute, networking and storage requirements for each component of the application. App provider should define all information needed to instantiate the component. If artefact is being defined at component level this section should have information just about the component. In case the artefact is being defined at application level the section should provide details about all the components. -# type: array -# items: -# $ref: '#/components/schemas/ComponentSpec' -# minItems: 1 required: true responses: - "200": + '200': description: Artefact uploaded successfully - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' + parameters: + - $ref: '#/components/parameters/XInternalHeader' + - $ref: '#/components/parameters/XPartnerApiRootHeader' /{federationContextId}/artefact/{artefactId}: get: summary: Retrieves details about an artefact. operationId: GetArtefact tags: - - ArtefactManagement + - ArtefactManagement parameters: - - name: federationContextId - in: path - required: true - schema: - $ref: '#/components/schemas/FederationContextId' - - name: artefactId - in: path - required: true - schema: - $ref: '#/components/schemas/ArtefactId' + - name: federationContextId + in: path + required: true + schema: + $ref: '#/components/schemas/FederationContextId' + - name: artefactId + in: path + required: true + schema: + $ref: '#/components/schemas/ArtefactId' responses: - "200": + '200': description: Artefact details content: application/json: schema: type: object required: - - artefactId - - appProviderId - - artefactName - - artefactVersionInfo - - artefactVirtType - - artefactDescriptorType + - artefactId + - appProviderId + - artefactName + - artefactVersionInfo + - artefactVirtType + - artefactDescriptorType properties: artefactId: $ref: '#/components/schemas/ArtefactId' @@ -1974,15 +2083,16 @@ paths: artefactDescription: type: string maxLength: 256 - description: Brief description of the artefact by the application provider + description: Brief description of the artefact by the application + provider artefactVersionInfo: type: string description: Artefact version information artefactVirtType: type: string enum: - - VM_TYPE - - CONTAINER_TYPE + - VM_TYPE + - CONTAINER_TYPE artefactFileName: type: string minLength: 8 @@ -1991,44 +2101,54 @@ paths: artefactFileFormat: type: string enum: - - WINZIP - - TAR - - TEXT - - TARGZ - description: Artefacts like Helm charts or Terraform scripts may need compressed format. + - WINZIP + - TAR + - TEXT + - TARGZ + description: Artefacts like Helm charts or Terraform scripts may + need compressed format. artefactDescriptorType: type: string enum: - - HELM - - TERRAFORM - - ANSIBLE - - SHELL - - COMPONENTSPEC - description: Type of descriptor present in the artefact. App provider can either define either a Helm chart or a Terraform script or container spec. + - HELM + - TERRAFORM + - ANSIBLE + - SHELL + - COMPONENTSPEC + description: Type of descriptor present in the artefact. App + provider can either define either a Helm chart or a Terraform + script or container spec. repoType: type: string enum: - - PRIVATEREPO - - PUBLICREPO - - UPLOAD - description: Artefact or file repository location. PUBLICREPO is used of public URLs like GitHub, Helm repo, docker registry etc., PRIVATEREPO is used for private repo managed by the application developer, UPLOAD is for the case when artefact/file is uploaded from MEC web portal. OP should pull the image from ‘repoUrl' immediately after receiving the request and then send back the response. In case the repoURL corresponds to a docker registry, use docker v2 http api to do the pull. + - PRIVATEREPO + - PUBLICREPO + - UPLOAD + description: "Artefact or file repository location. PUBLICREPO\ + \ is used of public URLs like GitHub, Helm repo, docker registry\ + \ etc., PRIVATEREPO is used for private repo managed by the\ + \ application developer, UPLOAD is for the case when artefact/file\ + \ is uploaded from MEC web portal. OP should pull the image\ + \ from \u2018repoUrl' immediately after receiving the request\ + \ and then send back the response. In case the repoURL corresponds\ + \ to a docker registry, use docker v2 http api to do the pull." artefactRepoLocation: $ref: '#/components/schemas/ObjectRepoLocation' - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' @@ -2036,72 +2156,82 @@ paths: summary: Removes an artefact from partner OP. operationId: RemoveArtefact tags: - - ArtefactManagement + - ArtefactManagement parameters: - - name: federationContextId - in: path - required: true - schema: - $ref: '#/components/schemas/FederationContextId' - - name: artefactId - in: path - required: true - schema: - $ref: '#/components/schemas/ArtefactId' + - name: federationContextId + in: path + required: true + schema: + $ref: '#/components/schemas/FederationContextId' + - name: artefactId + in: path + required: true + schema: + $ref: '#/components/schemas/ArtefactId' responses: - "200": + '200': description: Artefact deletion successful - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' + parameters: + - $ref: '#/components/parameters/XInternalHeader' + - $ref: '#/components/parameters/XPartnerApiRootHeader' /{federationContextId}/application/onboarding: post: - summary: Submits an application details to a partner OP. Based on the details provided, partner OP shall do bookkeeping, resource validation and other pre-deployment operations. + summary: Submits an application details to a partner OP. Based on the details + provided, partner OP shall do bookkeeping, resource validation and other + pre-deployment operations. operationId: OnboardApplication tags: - - ApplicationOnboardingManagement + - ApplicationOnboardingManagement parameters: - - name: federationContextId - in: path - required: true - schema: - $ref: '#/components/schemas/FederationContextId' + - name: federationContextId + in: path + required: true + schema: + $ref: '#/components/schemas/FederationContextId' requestBody: required: true - description: Details about application compute resource requirements, associated artefacts, QoS profile and regions where application shall be made available etc. + description: Details about application compute resource requirements, associated + artefacts, QoS profile and regions where application shall be made available + etc. content: application/json: schema: type: object required: - - appId - - appProviderId - - appMetaData - - appQoSProfile - - appComponentSpecs - - appStatusCallbackLink + - appId + - appProviderId + - appMetaData + - appQoSProfile + - appComponentSpecs + - appStatusCallbackLink properties: appId: $ref: '#/components/schemas/AppIdentifier' appProviderId: $ref: '#/components/schemas/AppProviderId' appDeploymentZones: - description: Details about partner OP zones where the application should be made available; This field when specified will instruct the OP to restrict application instantiation only on the listed zones. + description: Details about partner OP zones where the application + should be made available; This field when specified will instruct + the OP to restrict application instantiation only on the listed + zones. type: array items: $ref: '#/components/schemas/ZoneIdentifier' @@ -2115,23 +2245,23 @@ paths: appStatusCallbackLink: $ref: '#/components/schemas/Uri' responses: - "202": + '202': description: Application onboarded request accepted - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' @@ -2146,9 +2276,9 @@ paths: schema: type: object required: - - federationContextId - - appId - - statusInfo + - federationContextId + - appId + - statusInfo properties: federationContextId: $ref: '#/components/schemas/FederationIdentifier' @@ -2159,99 +2289,106 @@ paths: items: type: object required: - - zoneId - - onboardStatusInfo + - zoneId + - onboardStatusInfo properties: zoneId: $ref: '#/components/schemas/ZoneIdentifier' onboardStatusInfo: - description: Defines change in application status. This change could be related to application itself or an application instance status + description: Defines change in application status. + This change could be related to application itself + or an application instance status type: string enum: - - PENDING - - ONBOARDED - - DEBOARDING - - REMOVED - - FAILED + - PENDING + - ONBOARDED + - DEBOARDING + - REMOVED + - FAILED minItems: 1 responses: - "204": + '204': description: Application status updated - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' + parameters: + - $ref: '#/components/parameters/XInternalHeader' + - $ref: '#/components/parameters/XPartnerApiRootHeader' /{federationContextId}/application/onboarding/app/{appId}: delete: summary: Deboards the application from any zones, if any, and deletes the App. operationId: DeleteApp tags: - - ApplicationOnboardingManagement + - ApplicationOnboardingManagement parameters: - - name: federationContextId - in: path - required: true - schema: - $ref: '#/components/schemas/FederationContextId' - - name: appId - in: path - required: true - schema: - $ref: '#/components/schemas/AppIdentifier' + - name: federationContextId + in: path + required: true + schema: + $ref: '#/components/schemas/FederationContextId' + - name: appId + in: path + required: true + schema: + $ref: '#/components/schemas/AppIdentifier' responses: '200': description: App deletion successful '400': - $ref: '#/components/responses/400' + $ref: '#/components/responses/400' '401': - $ref: '#/components/responses/401' + $ref: '#/components/responses/401' '404': - $ref: '#/components/responses/404' + $ref: '#/components/responses/404' '409': - $ref: '#/components/responses/409' + $ref: '#/components/responses/409' '422': - $ref: '#/components/responses/422' + $ref: '#/components/responses/422' '500': - $ref: '#/components/responses/500' + $ref: '#/components/responses/500' '503': - $ref: '#/components/responses/503' + $ref: '#/components/responses/503' '520': - $ref: '#/components/responses/520' + $ref: '#/components/responses/520' default: - $ref: '#/components/responses/default' + $ref: '#/components/responses/default' patch: - summary: Updates partner OP about changes in application compute resource requirements, QOS Profile, associated descriptor or change in associated components + summary: Updates partner OP about changes in application compute resource requirements, + QOS Profile, associated descriptor or change in associated components operationId: UpdateApplication tags: - - ApplicationOnboardingManagement + - ApplicationOnboardingManagement parameters: - - name: federationContextId - in: path - required: true - schema: - $ref: '#/components/schemas/FederationContextId' - - name: appId - in: path - required: true - schema: - $ref: '#/components/schemas/AppIdentifier' + - name: federationContextId + in: path + required: true + schema: + $ref: '#/components/schemas/FederationContextId' + - name: appId + in: path + required: true + schema: + $ref: '#/components/schemas/AppIdentifier' requestBody: required: true - description: Details about application compute resource requirements, associated artefact and QOS profile that needs to be updated. + description: Details about application compute resource requirements, associated + artefact and QOS profile that needs to be updated. content: application/json: schema: @@ -2259,46 +2396,56 @@ paths: minProperties: 1 properties: appUpdQoSProfile: - description: Parameters corresponding to the performance constraints, tenancy details etc. + description: Parameters corresponding to the performance constraints, + tenancy details etc. type: object anyOf: - - required: - - latencyConstraint - - required: - - bandwidthRequired - - required: - - mobilitySupport - - required: - - multiUserClients - - required: - - appProvisioning + - required: + - latencyConstraint + - required: + - bandwidthRequired + - required: + - mobilitySupport + - required: + - multiUserClients + - required: + - appProvisioning properties: latencyConstraints: type: string enum: - - NONE - - LOW - - ULTRALOW - description: Latency requirements for the application.Allowed values (non-standardized) are none, low and ultra-low. Ultra-Low may corresponds to range 15 - 30 msec, Low correspond to range 30 - 50 msec. None means 51 and above + - NONE + - LOW + - ULTRALOW + description: Latency requirements for the application.Allowed + values (non-standardized) are none, low and ultra-low. Ultra-Low + may corresponds to range 15 - 30 msec, Low correspond to range + 30 - 50 msec. None means 51 and above bandwidthRequired: type: integer format: int32 minimum: 1 - description: Data transfer bandwidth requirement (minimum limit) for the application. It should in Mbits/sec + description: Data transfer bandwidth requirement (minimum limit) + for the application. It should in Mbits/sec mobilitySupport: type: boolean default: false - description: Indicates if an application is sensitive to user mobility and can be relocated. Default is “FALSE” + description: "Indicates if an application is sensitive to user\ + \ mobility and can be relocated. Default is \u201CFALSE\u201D" multiUserClients: type: string enum: - - APP_TYPE_SINGLE_USER - - APP_TYPE_MULTI_USER - description: Single user type application are designed to serve just one client. Multi user type application is designed to serve multiple clients + - APP_TYPE_SINGLE_USER + - APP_TYPE_MULTI_USER + description: Single user type application are designed to serve + just one client. Multi user type application is designed to + serve multiple clients noOfUsersPerAppInst: type: integer default: 1 - description: Maximum no of clients that can connect to an instance of this application. This parameter is relevant only for application of type multi user + description: Maximum no of clients that can connect to an instance + of this application. This parameter is relevant only for application + of type multi user appProvisioning: type: boolean default: true @@ -2306,23 +2453,23 @@ paths: appComponentSpecs: $ref: '#/components/schemas/AppComponentSpecs' responses: - "202": + '202': description: Application update request accepted - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' @@ -2330,45 +2477,48 @@ paths: summary: Retrieves application details from partner OP operationId: ViewApplication tags: - - ApplicationOnboardingManagement + - ApplicationOnboardingManagement parameters: - - name: federationContextId - in: path - required: true - schema: - $ref: '#/components/schemas/FederationContextId' - - name: appId - in: path - required: true - schema: - $ref: '#/components/schemas/AppIdentifier' + - name: federationContextId + in: path + required: true + schema: + $ref: '#/components/schemas/FederationContextId' + - name: appId + in: path + required: true + schema: + $ref: '#/components/schemas/AppIdentifier' responses: - "200": + '200': description: Application details content: application/json: schema: type: object required: - - appId - - appProviderId - - appDeploymentZones - - appMetaData - - appQoSProfile - - appComponentSpecs + - appId + - appProviderId + - appDeploymentZones + - appMetaData + - appQoSProfile + - appComponentSpecs properties: appId: $ref: '#/components/schemas/AppIdentifier' appProviderId: $ref: '#/components/schemas/AppProviderId' appDeploymentZones: - description: Details about partner OP zones where the application should be made available; This field when specified will instruct the OP to restrict application instantiation only on the listed zones. + description: Details about partner OP zones where the application + should be made available; This field when specified will instruct + the OP to restrict application instantiation only on the listed + zones. type: array items: type: object required: - - countryCode - - zoneInfo + - countryCode + - zoneInfo properties: countryCode: $ref: '#/components/schemas/CountryCode' @@ -2381,48 +2531,53 @@ paths: $ref: '#/components/schemas/AppQoSProfile' appComponentSpecs: $ref: '#/components/schemas/AppComponentSpecs' - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' + parameters: + - $ref: '#/components/parameters/XInternalHeader' + - $ref: '#/components/parameters/XPartnerApiRootHeader' /{federationContextId}/application/lcm: post: summary: Instantiates an application on a partner OP zone. operationId: InstallApp tags: - - ApplicationDeploymentManagement + - ApplicationDeploymentManagement parameters: - - name: federationContextId - in: path - required: true - schema: - $ref: '#/components/schemas/FederationContextId' + - name: federationContextId + in: path + required: true + schema: + $ref: '#/components/schemas/FederationContextId' requestBody: - description: Details about application and zones where application instance should be created. It also definea call back URI which the partner OP shall use update home OP about a change in instance status. + description: Details about application and zones where application instance + should be created. It also definea call back URI which the partner OP shall + use update home OP about a change in instance status. content: application/json: schema: type: object required: - - appId - - appProviderId - - appVersion - - zoneInfo - - appInstCallbackLink + - appId + - appProviderId + - appVersion + - zoneInfo + - appInstCallbackLink properties: appId: $ref: '#/components/schemas/AppIdentifier' @@ -2434,59 +2589,67 @@ paths: zoneInfo: type: object required: - #- zoneId - - flavourId + - flavourId properties: zoneId: type: string - #$ref: '#/components/schemas/ZoneIdentifier' flavourId: $ref: '#/components/schemas/FlavourId' resourceConsumption: type: string enum: - - RESERVED_RES_SHALL - - RESERVED_RES_PREFER - - RESERVED_RES_AVOID - - RESERVED_RES_FORBID + - RESERVED_RES_SHALL + - RESERVED_RES_PREFER + - RESERVED_RES_AVOID + - RESERVED_RES_FORBID default: RESERVED_RES_AVOID - description: Specifies if the application can be instantiated using pre-reserved resource or not. App provider can pre-reserve a pool of compute resource on each zone. 'RESERVED_RES_SHALL' instruct OP to use only the pre-reserved resources. 'RESERVED_RES_PREFER' instruct to first try using pre-reserved resource, if none available go for non-reserved resources. 'RESERVED_RES_AVOID' instruct OP not to use pre-reserved resource if possible, it is a choice depending upon circumstances 'RESERVED_RES_FORBID' instruct OP not to use pre-reserved resources. + description: Specifies if the application can be instantiated + using pre-reserved resource or not. App provider can pre-reserve + a pool of compute resource on each zone. 'RESERVED_RES_SHALL' + instruct OP to use only the pre-reserved resources. 'RESERVED_RES_PREFER' + instruct to first try using pre-reserved resource, if none + available go for non-reserved resources. 'RESERVED_RES_AVOID' + instruct OP not to use pre-reserved resource if possible, + it is a choice depending upon circumstances 'RESERVED_RES_FORBID' + instruct OP not to use pre-reserved resources. resPool: type: string pattern: ^[A-Za-z0-9][A-Za-z0-9_]{6,30}[A-Za-z0-9]$ - description: Resource pool to be used for application instantiation on this zone. Valid only if IE 'resourceConsumption' is set to 'RESERVED_RES_SHALL' or 'RESERVED_RES_PREFER' + description: Resource pool to be used for application instantiation + on this zone. Valid only if IE 'resourceConsumption' is set + to 'RESERVED_RES_SHALL' or 'RESERVED_RES_PREFER' appInstCallbackLink: $ref: '#/components/schemas/Uri' responses: - "202": + '202': description: Application instance creation request accepted. content: application/json: schema: type: object required: - - zoneId - - appInstIdentifier + - zoneId + - appInstIdentifier properties: zoneId: $ref: '#/components/schemas/ZoneIdentifier' appInstIdentifier: $ref: '#/components/schemas/InstanceIdentifier' - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' @@ -2501,11 +2664,11 @@ paths: schema: type: object required: - - federationContextId - - appId - - appInstanceId - - zoneId - - appInstanceInfo + - federationContextId + - appId + - appInstanceId + - zoneId + - appInstanceInfo properties: federationContextId: $ref: '#/components/schemas/FederationIdentifier' @@ -2521,27 +2684,31 @@ paths: appInstanceState: type: string enum: - - PENDING - - READY - - FAILED - - TERMINATING + - PENDING + - READY + - FAILED + - TERMINATING description: Running status of the application instance. message: type: string description: Event information or failure message. accesspointInfo: - description: Information about the IP and Port exposed by the OP. Application clients shall use these access points to reach this application instance + description: Information about the IP and Port exposed + by the OP. Application clients shall use these access + points to reach this application instance type: array items: type: object required: - - interfaceId - - accessPoints + - interfaceId + - accessPoints properties: interfaceId: type: string pattern: ^[A-Za-z0-9][A-Za-z0-9_]{6,30}[A-Za-z0-9]$ - description: This is the interface Identifier that app provider defines when application is onboarded. + description: This is the interface Identifier + that app provider defines when application is + onboarded. accessPoints: $ref: '#/components/schemas/ServiceEndpoint' minItems: 1 @@ -2549,57 +2716,61 @@ paths: modificationDate: type: string format: date-time - description: Date and time of the instance state modification by partner OP. + description: Date and time of the instance state modification + by partner OP. responses: - "204": + '204': description: Application instance state notification acknowledged - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' + parameters: + - $ref: '#/components/parameters/XInternalHeader' + - $ref: '#/components/parameters/XPartnerApiRootHeader' /{federationContextId}/application/lcm/app/{appId}/instance/{appInstanceId}/zone/{zoneId}: get: summary: Retrieves an application instance details from partner OP. operationId: GetAppInstanceDetails tags: - - ApplicationDeploymentManagement + - ApplicationDeploymentManagement parameters: - - name: federationContextId - in: path - required: true - schema: - $ref: '#/components/schemas/FederationContextId' - - name: appId - in: path - required: true - schema: - $ref: '#/components/schemas/AppIdentifier' - - name: appInstanceId - in: path - required: true - schema: - $ref: '#/components/schemas/InstanceIdentifier' - - name: zoneId - in: path - required: true - schema: - $ref: '#/components/schemas/ZoneIdentifier' + - name: federationContextId + in: path + required: true + schema: + $ref: '#/components/schemas/FederationContextId' + - name: appId + in: path + required: true + schema: + $ref: '#/components/schemas/AppIdentifier' + - name: appInstanceId + in: path + required: true + schema: + $ref: '#/components/schemas/InstanceIdentifier' + - name: zoneId + in: path + required: true + schema: + $ref: '#/components/schemas/ZoneIdentifier' responses: - "200": + '200': description: Application instance details content: application/json: @@ -2609,37 +2780,40 @@ paths: appInstanceState: $ref: '#/components/schemas/InstanceState' accesspointInfo: - description: Information about the IP and Port exposed by the OP. Application clients shall use these access points to reach this application instance + description: Information about the IP and Port exposed by the + OP. Application clients shall use these access points to reach + this application instance type: array items: type: object required: - - interfaceId - - accessPoints + - interfaceId + - accessPoints properties: interfaceId: type: string pattern: ^[A-Za-z0-9][A-Za-z0-9_]{6,30}[A-Za-z0-9]$ - description: This is the interface identifier that app provider defines when application is onboarded. + description: This is the interface identifier that app provider + defines when application is onboarded. accessPoints: $ref: '#/components/schemas/ServiceEndpoint' minItems: 1 minProperties: 1 - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' @@ -2647,73 +2821,76 @@ paths: summary: Terminate an application instance on a partner OP zone. operationId: RemoveApp tags: - - ApplicationDeploymentManagement + - ApplicationDeploymentManagement parameters: - - name: federationContextId - in: path - required: true - schema: - $ref: '#/components/schemas/FederationContextId' - - name: appId - in: path - required: true - schema: - $ref: '#/components/schemas/AppIdentifier' - - name: appInstanceId - in: path - required: true - schema: - $ref: '#/components/schemas/InstanceIdentifier' - - name: zoneId - in: path - required: true - schema: - $ref: '#/components/schemas/ZoneIdentifier' + - name: federationContextId + in: path + required: true + schema: + $ref: '#/components/schemas/FederationContextId' + - name: appId + in: path + required: true + schema: + $ref: '#/components/schemas/AppIdentifier' + - name: appInstanceId + in: path + required: true + schema: + $ref: '#/components/schemas/InstanceIdentifier' + - name: zoneId + in: path + required: true + schema: + $ref: '#/components/schemas/ZoneIdentifier' responses: - "200": + '200': description: Application instance termination request accepted - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' + parameters: + - $ref: '#/components/parameters/XInternalHeader' + - $ref: '#/components/parameters/XPartnerApiRootHeader' /{federationContextId}/application/lcm/app/{appId}/appProvider/{appProviderId}: get: summary: Retrieves all application instance of partner OP operationId: GetAllAppInstances tags: - - ApplicationDeploymentManagement + - ApplicationDeploymentManagement parameters: - - name: federationContextId - in: path - required: true - schema: - $ref: '#/components/schemas/FederationContextId' - - name: appId - in: path - required: true - schema: - $ref: '#/components/schemas/AppIdentifier' - - name: appProviderId - in: path - required: true - schema: - $ref: '#/components/schemas/AppProviderId' + - name: federationContextId + in: path + required: true + schema: + $ref: '#/components/schemas/FederationContextId' + - name: appId + in: path + required: true + schema: + $ref: '#/components/schemas/AppIdentifier' + - name: appProviderId + in: path + required: true + schema: + $ref: '#/components/schemas/AppProviderId' responses: - "200": + '200': description: Application Instance details content: application/json: @@ -2722,8 +2899,8 @@ paths: items: type: object required: - - zoneId - - appInstanceInfo + - zoneId + - appInstanceInfo properties: zoneId: $ref: '#/components/schemas/ZoneIdentifier' @@ -2732,8 +2909,8 @@ paths: items: type: object required: - - appInstIdentifier - - appInstanceState + - appInstIdentifier + - appInstanceState properties: appInstIdentifier: $ref: '#/components/schemas/InstanceIdentifier' @@ -2741,21 +2918,24 @@ paths: $ref: '#/components/schemas/InstanceState' minItems: 1 minItems: 1 - "400": + '400': $ref: '#/components/responses/400' - "401": + '401': $ref: '#/components/responses/401' - "404": + '404': $ref: '#/components/responses/404' - "409": + '409': $ref: '#/components/responses/409' - "422": + '422': $ref: '#/components/responses/422' - "500": + '500': $ref: '#/components/responses/500' - "503": + '503': $ref: '#/components/responses/503' - "520": + '520': $ref: '#/components/responses/520' default: $ref: '#/components/responses/default' + parameters: + - $ref: '#/components/parameters/XInternalHeader' + - $ref: '#/components/parameters/XPartnerApiRootHeader'