Skip to content
Open
Show file tree
Hide file tree
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
Original file line number Diff line number Diff line change
Expand Up @@ -337,28 +337,6 @@ classes:
range: CommunicationInterfaceType
required: true

HelmDeploymentProfile:
is_a: DeploymentProfile
#rank: 63
slot_usage:
type:
equals_string: "helm"
rank: 10
components:
range: HelmComponent
rank: 20

ComposeDeploymentProfile:
is_a: DeploymentProfile
#rank: 66
slot_usage:
type:
equals_string: "compose"
rank: 10
components:
range: ComposeComponent
rank: 20

Component:
description: A class representing a component of a deployment profile.
rank: 70
Expand All @@ -381,42 +359,49 @@ classes:
slots:
- x-placeholder-extensions

HelmComponent:
is_a: Component
#rank: 73

ComposeComponent:
is_a: Component
#rank: 76

ComponentProperties:
description: Properties dictionary for component deployment details.
description: >-
Typed component properties providing OCI coordinates
and optional deployment behavior settings.
Used by both Helm and Compose deployment types.
rank: 80
attributes:
repository:
description: Repository location for the component.
description: >-
OCI repository URI for the component package
(e.g., oci://registry.example.com/org/component-name).
MUST be a valid OCI reference using the oci:// scheme.
rank: 10
range: string
required: true
pattern: "^oci://.+"
revision:
description: Revision version for the component.
description: >-
OCI tag identifying the component version within the repository
(e.g., "1.0.0", "2.3.1", "1.0.0-rc1", "1.0.0_build.123").
MUST be a valid SemVer 2.0 string without a leading `v`.
SemVer build metadata separator `+` MUST be stored as `_`
because `+` is not a valid OCI tag character.
rank: 20
range: string
required: true
pattern: "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:_([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"
wait:
description: If True, indicates the device waits for the component installation to complete.
description: >-
Whether to wait for component installation to complete before proceeding.
For Helm: waits until the release is deployed.
For Compose: waits until all containers reach running state.
Default is true. Only applies when multiple components are provided.
rank: 30
range: boolean
timeout:
description: Time to wait for component installation to complete, formatted as "##m##s".
description: >-
Maximum time to wait for component installation to complete.
Format is "##m##s" (e.g., "5m0s", "8m30s").
If installation does not complete before timeout, deployment fails.
rank: 40
range: string
packageLocation:
description: The URL indicating the Compose package's location. It should be a direct path to the compose.yaml or compose.yaml file archived in tar.gz
rank: 50
range: string
keyLocation:
description: URL for the public key used to validate a digitally signed package.
rank: 60
range: string
pattern: "^\\d+m\\d+s$"

Parameter:
description: >-
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@ deploymentProfiles:
components:
- name: digitron-orchestrator-docker
properties:
packageLocation: https://northsitarida.com/digitron/docker/digitron-orchestrator.tar.gz
keyLocation: https://northsitarida.com/digitron/docker/public-key.asc
repository: oci://northstarida.azurecr.io/compose/digitron-orchestrator
revision: 1.0.9
parameters:
idpName:
targets:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ deploymentProfiles:
components:
- name: digitron-orchestrator-docker
properties:
packageLocation: https://northsitarida.com/digitron/docker/digitron-orchestrator.tar.gz
keyLocation: https://northsitarida.com/digitron/docker/public-key.asc
repository: oci://northstarida.azurecr.io/compose/digitron-orchestrator
revision: 1.0.9
parameters:
idpName:
value: "test"
Expand Down
25 changes: 6 additions & 19 deletions src/specification/applications/resources/index.md.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ which defines the [desired state](../margo-management-interface/desired-state.md
{% endfor -%}

{% for c in gen.all_class_objects()|sort(attribute='rank') %}
{%- if c.name != "ApplicationDescription" and not c.name.startswith("ComponentProperties") and not c.name.startswith("Helm") and not c.name.startswith("Compose") %}
{%- if c.name != "ApplicationDescription" and not c.name.startswith("ComponentProperties") %}

{# if c is a subclass of any: #}

Expand Down Expand Up @@ -98,27 +98,14 @@ Your Helm based application MUST NOT rely on the following Helm functions:
{%- if c.name.startswith("ComponentProperties") %}

### ComponentProperties Attributes
The expected properties for the suppported deployment types are indicated below.

- Properties for `helm` components

| Attribute | Type | Required? | Description |
| --- | --- | --- | --- |
| repository | string | Y | The URL indicating the helm chart's location.|
| revision | string | Y | The helm chart's full version.|
| wait | bool | N | If `True`, indicates the device MUST wait until the helm chart has finished installing before installing the next helm chart. The default is `True`. The Workload Fleet Management Client MUST support `True` and MAY support `False`. Only applies if multiple `helm` components are provided.|
| timeout | string | N | The time to wait for the component's installation to complete. If the installation does not completed before the timeout occurs the installation process fails. The format is "##m##s" indicating the total number of minutes and seconds to wait. |

- Properties for `compose` components

> **Investigation Needed**: We need to have more discussion about how Compose should be handled and what is required here.
The expected properties for all OCI-based deployment types (Helm and Compose) are indicated below.

| Attribute | Type | Required? | Description |
| --- | --- | --- | --- |
| packageLocation | string | Y | The URL indicating the Compose package's location. It should be a direct path to the compose.yaml or compose file archived in tar.gz |
| keyLocation | string | N | The public key used to validated the digitally signed package. It is highly recommend to digitally sign the package. When signing the package PGP MUST be used.|
| wait | bool | N | If `True`, indicates the device MUST wait until the Compose file has finished starting up before starting the next Compose file. The default is `True`. The Workload Fleet Management Client MUST support `True` and MAY support `False`. Only applies if multiple `compose` components are provided.|
| timeout | string | N | The time to wait for the component's installation to complete. If the installation does not completed before the timeout occurs the installation process fails. The format is "##m##s" indicating the total number of minutes and seconds to wait.|
| repository | string | Y | OCI repository URI for the component package (e.g., `oci://registry.example.com/org/component-name`). MUST be a valid OCI reference using the `oci://` scheme. See [Compose Component Registry](application-registry.md#compose-component-registry) for details.|
| revision | string | Y | OCI tag identifying the component version. MUST be a valid SemVer 2.0 string without a leading `v`. Build metadata separator `+` MUST be stored as `_` because `+` is not a valid OCI tag character.|
| wait | bool | N | If `True`, indicates the device MUST wait until the component installation completes before installing the next component. For Helm: waits until the release is deployed. For Compose: waits until all containers reach running state. The default is `True`. The Workload Fleet Management Client MUST support `True` and MAY support `False`. Only applies if multiple components are provided.|
| timeout | string | N | The time to wait for the component's installation to complete. If the installation does not complete before the timeout occurs the installation process fails. The format is "##m##s" indicating the total number of minutes and seconds to wait. |

## Defining configurable application parameters

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,74 +111,75 @@ classes:
DeploymentProfile:
description: A class representing a deployment profile.
rank: 40
# abstract: true
slots:
- type
- components
- x-placeholder-extensions

HelmDeploymentProfile:
is_a: DeploymentProfile
rank: 40
slot_usage:
type:
equals_string: "helm"
rank: 10
components:
range: HelmComponent
rank: 20

ComposeDeploymentProfile:
is_a: DeploymentProfile
rank: 40
slot_usage:
type:
equals_string: "compose"
rank: 10
components:
range: ComposeComponent
rank: 20

Component:
description: A class representing a component of a deployment profile.
rank: 50
# abstract: true
attributes:
name:
description: The name of the component.
# identifier: true
required: true
rank: 10
properties:
description: Properties associated with the component.
range: Property
description: >-
Component deployment properties providing OCI coordinates and behavior settings.
See the ComponentProperties section below.
range: ComponentProperties
required: true
multivalued: true
inlined: true
inlined_as_list: false
rank: 20
slots:
- x-placeholder-extensions

HelmComponent:
is_a: Component
rank: 50

ComposeComponent:
is_a: Component
rank: 50

Property:
rank: 80
ComponentProperties:
rank: 82
description: >-
Typed component properties providing OCI coordinates
and optional deployment behavior settings.
Used by both Helm and Compose deployment types.
attributes:
name:
identifier: true
repository:
description: >-
OCI repository URI for the component package
(e.g., oci://registry.example.com/org/component-name).
MUST be a valid OCI reference using the oci:// scheme.
range: string
required: true
pattern: "^oci://.+"
rank: 10
value:
revision:
description: >-
OCI tag identifying the component version within the repository
(e.g., "1.0.0", "2.3.1", "1.0.0-rc1", "1.0.0_build.123").
MUST be a valid SemVer 2.0 string without a leading `v`.
SemVer build metadata separator `+` MUST be stored as `_`
because `+` is not a valid OCI tag character.
range: string
rank: 20
required: true
pattern: "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:_([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"
rank: 20
wait:
description: >-
Whether to wait for component installation to complete before proceeding.
For Helm: waits until the release is deployed.
For Compose: waits until all containers reach running state.
Default is true. Only applies when multiple components are provided.
range: boolean
required: false
rank: 30
timeout:
description: >-
Maximum time to wait for component installation to complete.
Format is "##m##s" (e.g., "5m0s", "8m30s").
If installation does not complete before timeout, deployment fails.
range: string
required: false
pattern: "^\\d+m\\d+s$"
rank: 40

Parameter:
description: A class representing a single parameter.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ spec:
repository: oci://quay.io/charts/realtime-database-services
revision: 2.3.7
timeout: 8m30s
wait: "true"
wait: true
- name: digitron-orchestrator
properties:
repository: oci://northstarida.azurecr.io/charts/northstarida-digitron-orchestrator
revision: 1.0.9
wait: "true"
wait: true
parameters:
adminName:
value: Some One
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ spec:
components:
- name: digitron-orchestrator-docker
properties:
keyLocation: https://northsitarida.com/digitron/docker/public-key.asc
packageLocation: https://northsitarida.com/digitron/docker/digitron-orchestrator.tar.gz
repository: oci://northstarida.azurecr.io/compose/digitron-orchestrator
revision: 1.0.9
parameters:
adminName:
value: Some One
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ spec:
components:
- name: digitron-orchestrator-docker
properties:
keyLocation: https://northsitarida.com/digitron/docker/public-key.asc
packageLocation: https://northsitarida.com/digitron/docker/digitron-orchestrator.tar.gz
repository: oci://northstarida.azurecr.io/compose/digitron-orchestrator
revision: 1.0.9
parameters:
adminName:
value: Some One
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ spec:
components:
- name: digitron-orchestrator-docker
properties:
keyLocation: https://northsitarida.com/digitron/docker/public-key.asc
packageLocation: https://northsitarida.com/digitron/docker/digitron-orchestrator.tar.gz
repository: oci://northstarida.azurecr.io/compose/digitron-orchestrator
revision: 1.0.9
parameters:
adminName:
value: Some One
Expand Down
Loading
Loading