Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update EdgeCloud_LcM.yaml #188

Merged
merged 7 commits into from
Feb 16, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 32 additions & 66 deletions code/API_definitions/EdgeCloud_LcM.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,7 @@ components:
properties:
name:
type: string
pattern: ^[A-Za-z][A-Za-z0-9_]{1,63}$
description: Name of the application.
version:
type: integer
Expand All @@ -420,81 +421,67 @@ components:
- VM
- CONTAINER
- HELM
fileName:
type: string
minLength: 8
maxLength: 32
description: Name of the file with the extension eg. zip, targz, etc.
repository:
operatingSystem:
$ref: '#/components/schemas/OperatingSystem'
appRepo:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With the name "appRepo", this makes it sound like the URL below is the URL for the repository, i.e. docker.io, rather than the URL for the image, i.e. docker.io/hashicorp/httpecho:2.3.1. I suggest to rename the "url" field below to "imagePath", so it is clear the URL is for the image.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is valid. Will provide a change for this.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes done and committed to PR

type: object
required:
- type
- url
- imagePath
properties:
type:
type: string
enum:
- PRIVATEREPO
- PUBLICREPO
description: Artifact repository location. PUBLICREPO is used of public urls like github, helm repo etc,
PRIVATEREPO is used for private repo managed by the application developer.
url:
description: Application repository and image URI information. PUBLICREPO is used of public urls like github, helm repo etc. PRIVATEREPO is used for private repo managed by the application developer. Private repo can be accessed by using the app developer provided userName and password. Password is recommended to be the personal access token created by developer e.g. in Github repo.
imagePath:
$ref: '#/components/schemas/Uri'
userName:
type: string
description: Username is mandatory to access the artifact repository in case of private repository
password:
type: string
description: Password to access the artifact repository
token:
type: string
description: Authorization token access the artifact repository
description: Username to acces the Helm chart, docker-compose file or VM image repository
credentials:
type: string
maxLength: 128
description: Password or personal access token created by developer to acces the app repository. API users can generate a personal access token e.g. docker clients to use them as password,
authType:
type: string
enum:
- DOCKER
- HTTP_BASIC
- HTTP_BEARER
- NONE
description: The credentials can also be formatted as a Basic auth or Bearer auth in HTTP "Authorization" header.
checksum:
type: string
description: MD5 checksum for VM and file-based images, sha256 digest for containers
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 artifact is being defined at component level this section should have information just about the component.
In case the artifact is being defined at application level the section should provide details about all the components.
description: Information defined in "appRepo" point to the application descriptor e.g. Helm chart, docker-compose yaml file etc. The descriptor may contain one or more containers and their associated meta-data. A component refers to additional details about these containers to expose the instances of the containers to external client applications. App provider can define one or more components (via the associated network port) in componentSpec corresponding to the containers in helm charts or docker-compose yaml file as part of app descriptors.
type: array
items:
type: object
required:
- componentName
- operatingSystem
- cpuArchitecture
- networkInterfaces
- numOfInstances
- restartPolicy
properties:
componentName:
type: string
description: Component name must be unique with an application
operatingSystem:
$ref: '#/components/schemas/OperatingSystem'
cpuArchitecture:
$ref: '#/components/schemas/CpuArchType'
networkInterfaces:
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.The underlying platform may assign a dynamic port against the "extPort" that the application clients will use to connect with edge application instance.
type: array
items:
type: object
required:
- interfaceId
- protocol
- port
- network
- interfaceName
- 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 uniquley idenify the interface.
network:
type: string
description: Name of the network. In case the application has to be assoisated with more then 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 then default.
pattern: ^[A-Za-z][A-Za-z0-9_]{3,31}$
description: Each Port and corresponding traffic protocol exposed by the component is identified by a name. Application client on user device requires this to uniquley idenify the interface.
protocol:
type: string
enum:
Expand All @@ -507,43 +494,21 @@ components:
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 containerPort.
interfaceName:
type: string
description: Interface Name. Required only if application has to be attatched to a network other then default.
description: Port number exposed by the component. OP may generate a dynamic port towards the component instance which forwards external traffic to the component 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 containerPort
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 extPort
type: string
enum:
- VISIBILITY_EXTERNAL
- VISIBILITY_INTERNAL
minItems: 1
numOfInstances:
type: integer
format: int32
description: Number of component instances to be launched.
restartPolicy:
type: string
enum:
- RESTART_POLICY_ALWAYS
- RESTART_POLICY_NEVER
description: How the platform shall handle component failure

required:
- name
- virtType
- fileName
- repository
- componentSpec
CpuArchType:
type: string
enum:
- x86_64
- arm_64
description: CPU Instruction Set Architecture (ISA) E.g., Intel, Arm etc.
Comment on lines -541 to -546
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if we should remove this. We sometimes see container images build for specific arch. I would like to see what others experience is here.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think technically I am fully aligned with your comment. Only thing in this attempt is to keep the API simple in first revision with the assumption that first revision is for x86_64 and in future revisions these variations can be introduced again.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clear, Thanks!


AppInstanceInfo:
description: Information about the application instance.
type: object
Expand Down Expand Up @@ -655,6 +620,7 @@ components:
$ref: '#/components/schemas/AppId'
Uri:
type: string
example: https://charts.bitnami.com/bitnami/helm/example-chart:0.1.0
description: A Uniform Resource Identifier (URI) as per RFC 3986, identifies the endpoint within an Edge Cloud Node where the user equipment may connect to the selected application instance

responses:
Expand Down