Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
b16131d
take over application description data model
Silvanoc Mar 13, 2026
f4d81a7
adapt application description data model
Silvanoc Mar 13, 2026
6149786
take over desired state data model
Silvanoc Mar 13, 2026
a43d7fc
adapt desired state data model
Silvanoc Mar 13, 2026
b2b2bc6
add desired state manifest data model
Silvanoc Mar 13, 2026
d47dcdb
add device capabilities data model
Silvanoc Mar 13, 2026
33b733e
add data model overview diagram
Silvanoc Mar 13, 2026
48f9af2
consolidate definition of "computing" resources
Silvanoc Mar 16, 2026
92a9cbe
consolidate definition of deployments
Silvanoc Mar 17, 2026
920d1d2
consolidate data models into single one
Silvanoc Mar 17, 2026
9089739
add complete data model diagram
Silvanoc Mar 17, 2026
996102c
add tool to validate examples
Silvanoc Mar 17, 2026
a9659f8
add tool to generate the json schemas
Silvanoc Mar 17, 2026
9873a50
add tool to draw class diagram with all data types
Silvanoc Mar 17, 2026
7e18eaa
add missing status data models
Silvanoc Mar 18, 2026
a5d50d1
improve diagram generation
Silvanoc Mar 18, 2026
00a9e1f
add generation of openapi yaml specification
Silvanoc Mar 23, 2026
670480e
add generation of html documentation
Silvanoc Mar 23, 2026
532e5ed
add tool to generate all needed artifacts
Silvanoc Mar 23, 2026
935472c
improve bash script format
Silvanoc Mar 23, 2026
1e65dbf
add examples to documentation
Silvanoc Mar 23, 2026
0cf5a3d
improve data model documentation generation
Silvanoc Mar 23, 2026
bc49cbb
improve data model documentation
Silvanoc Mar 23, 2026
b16d5fb
add html headers to make generated files recognizable
Silvanoc Apr 2, 2026
835d55f
use jinja2 comments instead of html ones
Silvanoc Apr 2, 2026
b025988
reduce visibility of detailed main class views
Silvanoc Apr 2, 2026
3b13217
beautify documentation pages
Silvanoc Apr 2, 2026
6805650
update documentation generation to changes
Silvanoc Apr 2, 2026
a7ba49f
generate full data model diagram also in png
Silvanoc Apr 2, 2026
dc8b94b
make data-model diagram easy to view
Silvanoc Apr 2, 2026
98b142d
beautify documentation
Silvanoc Apr 2, 2026
5856f79
no mkdocs build in docs generation
Silvanoc Apr 2, 2026
ffbeb47
make json-schemas downloadable
Silvanoc Apr 2, 2026
e51175d
data-model: report no valid examples provided
Silvanoc May 13, 2026
6b06ac1
data-model: fix configuration tooling
Silvanoc May 13, 2026
7ff3e57
data-model: use new tooling in ci and locally
Silvanoc May 13, 2026
4e02e0f
data-model: fix examples
Silvanoc May 13, 2026
146b037
data-model: small fixes
Silvanoc May 13, 2026
e41883e
data-model: add invalid examples for DesiredStateManifest
Silvanoc May 13, 2026
9f1f46f
data-model: document lack of consistency
Silvanoc May 13, 2026
2afdea2
data-model: default over explicit
Silvanoc May 13, 2026
64e4af7
data-model: add validation examples for deployment-status
Silvanoc May 13, 2026
43e1a13
data-model: add ai agents help
Silvanoc May 13, 2026
d48f86e
data-model: use upstream openapi generator
Silvanoc May 13, 2026
10da243
max supported python version is 3.13
Silvanoc May 15, 2026
2a265c6
add "cluster leader" role
Silvanoc May 20, 2026
f5565c7
make some device capabilities required
Silvanoc May 20, 2026
809557f
small improvements in data model element descriptions
Silvanoc May 20, 2026
092055c
add references to pre-existing documents
Silvanoc May 20, 2026
f80c6f5
fix openapi generation of resources schema
Silvanoc May 20, 2026
ba9ba8c
fix schemas versions
Silvanoc May 20, 2026
48949d9
generate openapi spec from data model
Silvanoc May 20, 2026
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
2 changes: 1 addition & 1 deletion .githooks/pre-push
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ do

# Check test examples
set -e
doc-generation/check-examples.bash
data-model/tools/check-examples.bash
set +e

fi
Expand Down
19 changes: 12 additions & 7 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ jobs:

- name: Run tests
run: |
doc-generation/check-examples.bash
data-model/tools/check-examples.bash

documents:
needs:
Expand Down Expand Up @@ -90,17 +90,18 @@ jobs:
- name: Install dependencies
run: poetry install --no-interaction --all-extras

- name: Generate MarkDown documentation
- name: Generate all artifacts
run: |
doc-generation/generate-documentation.bash
data-model/tools/generate-all.bash

- name: Share generated documentation with later jobs
- name: Share generated artifacts with later jobs
uses: actions/upload-artifact@v4
with:
name: generated-documentation
name: generated-artifacts
path: |
system-design/specification/applications/application-description.md
system-design/specification/margo-management-interface/desired-state.md
system-design/specification/margo-management-interface/workload-management-api-1.0.0.yaml

pages:
needs:
Expand Down Expand Up @@ -135,12 +136,16 @@ jobs:
- name: Install the project dependencies
run: poetry install

- name: Get generated documentation from previous jobs
- name: Get generated artifacts from previous jobs
uses: actions/download-artifact@v4
with:
name: generated-documentation
name: generated-artifacts
path: system-design/specification

- name: Generate merged documentation tree
run: |
data-model/tools/generate-docs.bash

- name: Build Pages
run: poetry run -- mkdocs build

Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,5 @@ system-design/specification/applications/application-description.md
src/specification/applications/docs
src/specification/margo-management-interface/docs
*.code-workspace
generated
merged
318 changes: 318 additions & 0 deletions AGENTS.md

Large diffs are not rendered by default.

128 changes: 128 additions & 0 deletions data-model/application-deployment.linkml.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
# yaml-language-server: $schema=https://linkml.io/linkml-model/linkml_model/jsonschema/meta.schema.json
id: https://specification.margo.org/application_deployment_schema
name: ApplicationDeployment
description: >-
Each workload is represented as an `ApplicationDeployment` YAML file that specifies its components, configuration, and parameters.
This resource is delivered via the Desired State API and referenced by `id` in the Deployment Status API.

Pre-data-model reference https://github.com/margo/specification/blob/3519aa7be4b565b2e2395134b99778fdc0379ace/system-design/specification/margo-management-interface/desired-state.md#applicationdeployment-yaml-definition
version: 1.0.0 #Arne: update later
prefixes:
linkml: https://w3id.org/linkml/
margo: https://specification.margo.org/
imports:
- linkml:types
- margo-deployments.linkml

default_prefix: margo
default_range: string

classes:
ApplicationDeployment:
description: >-
A class representing the desired state of an entity.

Pre-data-model reference https://github.com/margo/specification/blob/3519aa7be4b565b2e2395134b99778fdc0379ace/system-design/specification/margo-management-interface/desired-state.md#applicationdeployment-yaml-definition
attributes:
apiVersion:
description: Identifier of the version of the API the object definition follows.
required: true
range: string
kind:
description: Must be `ApplicationDeployment`.
equals_string: "ApplicationDeployment"
required: true
range: string
designates_type: true
metadata:
description: >-
Metadata element specifying characteristics about the application deployment.
See the [Metadata Attributes](#metadata-attributes) section below.

Pre-data-model reference https://github.com/margo/specification/blob/3519aa7be4b565b2e2395134b99778fdc0379ace/system-design/specification/margo-management-interface/desired-state.md#metadata-attributes
range: DeploymentMetadata
required: true
spec:
description: >-
Spec element that defines deployment profile and parameters associated with the application deployment.
See the [Spec Attributes](#spec-attributes) section below.

Pre-data-model reference https://github.com/margo/specification/blob/3519aa7be4b565b2e2395134b99778fdc0379ace/system-design/specification/margo-management-interface/desired-state.md#spec-attributes
range: Spec
required: true

DeploymentMetadata:
description: >-
Metadata associated with the desired state.

Pre-data-model reference https://github.com/margo/specification/blob/3519aa7be4b565b2e2395134b99778fdc0379ace/system-design/specification/margo-management-interface/desired-state.md#metadata-attributes
attributes:
annotations:
description: >-
Defines the application ID and unique identifier associated to the deployment specification.
Needs to be assigned by the Workload Orchestration Software.
See the [Annotation Attributes](#annotations-attributes) section below.

Pre-data-model reference https://github.com/margo/specification/blob/3519aa7be4b565b2e2395134b99778fdc0379ace/system-design/specification/margo-management-interface/desired-state.md#annotations-attributes
range: DeploymentAnnotations
required: true
name:
description: >-
When deploying to Kubernetes, the manifests name.
The name is chosen by the workload orchestration vendor and is not displayed anywhere.
required: true
range: string
namespace:
description: When deploying to Kubernetes, the namespace the manifest is added under. The namespace is chosen by the workload orchestration solution vendor.
required: true
range: string

DeploymentAnnotations:
description: >-
A class representing annotations.

Pre-data-model reference https://github.com/margo/specification/blob/3519aa7be4b565b2e2395134b99778fdc0379ace/system-design/specification/margo-management-interface/desired-state.md#annotations-attributes
attributes:
applicationId:
description: >-
An identifier for the application.
The id is used to help create unique identifiers where required, such as namespaces.
The id must be lower case letters and numbers and MAY contain dashes.
Uppercase letters, underscores and periods MUST NOT be used.
The id MUST NOT be more than 200 characters.
The applicationId MUST match the associated application package Metadata "id" attribute.
range: string
required: true
pattern: "^[-a-z0-9]{1,200}$"
id:
description: >-
The unique identifier UUID of the deployment specification.
Needs to be assigned by the Workload Orchestration Software.
range: string
required: true
pattern: "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"

Spec:
description: >-
Specification details of the desired state.

Pre-data-model reference https://github.com/margo/specification/blob/3519aa7be4b565b2e2395134b99778fdc0379ace/system-design/specification/margo-management-interface/desired-state.md#spec-attributes
attributes:
deploymentProfile:
description: >-
Section that defines deployment details including type and components.

Pre-data-model reference https://github.com/margo/specification/blob/3519aa7be4b565b2e2395134b99778fdc0379ace/system-design/specification/margo-management-interface/desired-state.md#deploymentprofile-attributes
range: DeploymentProfile
required: true
parameters:
description: >-
Describes the configured parameters applied via the end-user.

Pre-data-model reference https://github.com/margo/specification/blob/3519aa7be4b565b2e2395134b99778fdc0379ace/system-design/specification/margo-management-interface/desired-state.md#parameter-attributes
range: Parameter
required: true
multivalued: true
inlined: true
inlined_as_list: false

Loading
Loading