Skip to content

Class: ApplicationDescription

Root class for an application description.

 classDiagram
    class ApplicationDescription
    click ApplicationDescription href "../ApplicationDescription/"
      ApplicationDescription : apiVersion

      ApplicationDescription : configuration





        ApplicationDescription --> "0..1" Configuration : configuration
        click Configuration href "../Configuration/"



      ApplicationDescription : deploymentProfiles





        ApplicationDescription --> "1..*" DeploymentProfileDescription : deploymentProfiles
        click DeploymentProfileDescription href "../DeploymentProfileDescription/"



      ApplicationDescription : kind

      ApplicationDescription : metadata





        ApplicationDescription --> "1" ApplicationMetadata : metadata
        click ApplicationMetadata href "../ApplicationMetadata/"



      ApplicationDescription : parameters





        ApplicationDescription --> "*" Parameter : parameters
        click Parameter href "../Parameter/"



Attributes

Name Cardinality and Range Description Inheritance
apiVersion 1
string
Identifier of the version of the API the object definition follows direct
kind 1
string
Specifies the object type; must be ApplicationDescription direct
metadata 1
ApplicationMetadata
Metadata element specifying characteristics about the application deployment direct
deploymentProfiles 1..*
DeploymentProfileDescription
Deployment profiles element specifying the types of deployments the applicati... direct
parameters *
Parameter
Parameters element specifying the configurable parameters to use when install... direct
configuration 0..1
Configuration
Configuration element specifying how parameters should be displayed to the us... direct

Examples

Following examples have been automatically validated against the schema of this class.

ApplicationDescription-helm_and_compose
apiVersion: margo.org/v1-alpha1
kind: ApplicationDescription
metadata:
  id: com-northstartida-digitron-orchestrator
  name: Digitron orchestrator
  description: The Digitron orchestrator application
  version: 1.2.1
  catalog:
    application:
      icon: ./resources/ndo-logo.png
      tagline: Northstar Industrial Application's next-gen, AI driven, Digitron instrument orchestrator.
      descriptionFile: ./resources/description.md
      releaseNotes: ./resources/release-notes.md
      licenseFile: ./resources/license.pdf
      site: http://www.northstar-ida.com
      tags: ["optimization", "instrumentation"]
    author:
      - name: Roger Wilkershank
        email: rpwilkershank@northstar-ida.com
    organization:
      - name: Northstar Industrial Applications
        site: http://northstar-ida.com
deploymentProfiles:
  - type: helm.v3
    id: com-northstartida-digitron-orchestrator-helm.v3-a
    description: This allows to install / run the application as a Helm chart deployment.
      The device where this application is installed needs to have a screen and a keyboard (as indicated in the required peripherals).
    components:
      - name: database-services
        properties:
          repository: oci://quay.io/charts/realtime-database-services
          revision: 2.3.7
          wait: true
          timeout: 8m30s
      - name: digitron-orchestrator
        properties:
          repository: oci://northstarida.azurecr.io/charts/northstarida-digitron-orchestrator
          revision: 1.0.9
          wait: true
    requiredResources:
      cpu:
        cores: 1.5
        architectures:
          - amd64
          - x86_64
      memory: 1024Mi
      storage: 10Gi
      peripherals:
        - type: gpu
          manufacturer: NVIDIA
        - type: display
      interfaces:
        - type: ethernet
        - type: bluetooth
  - type: compose
    id: com-northstartida-digitron-orchestrator-compose-a
    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
parameters:
  idpName:
    targets:
      - pointer: idp.name
        components: ["digitron-orchestrator"]
      - pointer: ENV.IDP_NAME
        components: ["digitron-orchestrator-docker"]
  idpProvider:
    targets:
      - pointer: idp.provider
        components: ["digitron-orchestrator"]
      - pointer: ENV.IDP_PROVIDER
        components: ["digitron-orchestrator-docker"]
  idpClientId:
    targets:
      - pointer: idp.clientId
        components: ["digitron-orchestrator"]
      - pointer: ENV.IDP_CLIENT_ID
        components: ["digitron-orchestrator-docker"]
  idpUrl:
    targets:
      - pointer: idp.providerUrl
        components: ["digitron-orchestrator"]
      - pointer: idp.providerMetadata
        components: ["digitron-orchestrator"]
      - pointer: ENV.IDP_URL
        components: ["digitron-orchestrator-docker"]
  adminName:
    targets:
      - pointer: administrator.name
        components: ["digitron-orchestrator"]
      - pointer: ENV.ADMIN_NAME
        components: ["digitron-orchestrator-docker"]
  adminPrincipalName:
    targets:
      - pointer: administrator.userPrincipalName
        components: ["digitron-orchestrator"]
      - pointer: ENV.ADMIN_PRINCIPALNAME
        components: ["digitron-orchestrator-docker"]
  pollFrequency:
    value: 30
    targets:
      - pointer: settings.pollFrequency
        components: ["digitron-orchestrator", "database-services"]
      - pointer: ENV.POLL_FREQUENCY
        components: ["digitron-orchestrator-docker"]
  siteId:
    targets:
      - pointer: settings.siteId
        components: ["digitron-orchestrator", "database-services"]
      - pointer: ENV.SITE_ID
        components: ["digitron-orchestrator-docker"]
  cpuLimit:
    value: 1
    targets:
      - pointer: settings.limits.cpu
        components: ["digitron-orchestrator"]
  memoryLimit:
    value: 16384
    targets:
      - pointer: settings.limits.memory
        components: ["digitron-orchestrator"]
configuration:
  sections:
    - name: General
      settings:
        - parameter: pollFrequency
          name: Poll Frequency
          description: How often the service polls for updated data in seconds
          schema: pollRange
        - parameter: siteId
          name: Site Id
          description: Special identifier for the site (optional)
          schema: optionalText
    - name: Identity Provider
      settings:
        - parameter: idpName
          name: Name
          description: The name of the Identity Provider to use
          immutable: true
          schema: requiredText
        - parameter: idpProvider
          name: Provider
          description: Provider something something
          immutable: true
          schema: requiredText
        - parameter: idpClientId
          name: Client ID
          description: The client id
          immutable: true
          schema: requiredText
        - parameter: idpUrl
          name: Provider URL
          description: The url of the Identity Provider
          immutable: true
          schema: url
    - name: Administrator
      settings:
        - parameter: adminName
          name: Presentation Name
          description: The presentation name of the administrator
          schema: requiredText
        - parameter: adminPrincipalName
          name: Principal Name
          description: The principal name of the administrator
          schema: email
    - name: Resource Limits
      settings:
        - parameter: cpuLimit
          name: CPU Limit
          description: Maximum number of CPU cores to allow the application to consume
          schema: cpuRange
        - parameter: memoryLimit
          name: Memory Limit
          description: Maximum number of memory to allow the application to consume
          schema: memoryRange
  schema:
    - name: requiredText
      dataType: string
      maxLength: 45
      allowEmpty: false
    - name: email
      dataType: string
      allowEmpty: false
      regexMatch: .*@[a-z0-9.-]*
    - name: url
      dataType: string
      allowEmpty: false
      regexMatch: ^(http(s):\/\/.)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$
    - name: pollRange
      dataType: integer
      minValue: 30
      maxValue: 360
      allowEmpty: false
    - name: optionalText
      dataType: string
      minLength: 5
      allowEmpty: true
    - name: cpuRange
      dataType: double
      minValue: 0.5
      maxPrecision: 1
      allowEmpty: false
    - name: memoryRange
      dataType: integer
      minValue: 16384
      allowEmpty: false
ApplicationDescription-helm_only
apiVersion: margo.org/v1-alpha1
kind: ApplicationDescription
metadata:
  id: com-northstartida-hello-world
  name: Hello World
  description: A basic hello world application
  version: "1.0"
  catalog:
    application:
      icon: ./resources/hw-logo.png
      tagline: Northstar Industrial Application's hello world application.
      descriptionFile: ./resources/description.md
      releaseNotes: ./resources/release-notes.md
      licenseFile: ./resources/license.pdf
      site: http://www.northstar-ida.com
      tags: ["monitoring"]
    author:
      - name: Roger Wilkershank
        email: rpwilkershank@northstar-ida.com
    organization:
      - name: Northstar Industrial Applications
        site: http://northstar-ida.com
deploymentProfiles:
  - type: helm.v3
    id: com-northstartida-hello-world-helm.v3-a
    components:
      - name: hello-world
        properties:
          repository: oci://northstarida.azurecr.io/charts/hello-world
          revision: 1.0.1
          wait: true
parameters:
  greeting:
    value: Hello
    targets:
    - pointer: global.config.appGreeting
      components: ["hello-world"]
  greetingAddressee:
    value: World
    targets:
    - pointer: global.config.appGreetingAddressee
      components: ["hello-world"]
configuration:
  sections:
    - name: General Settings
      settings:
        - parameter: greeting
          name: Greeting
          description: The greeting to use.
          schema: requireText
        - parameter: greetingAddressee
          name: Greeting Addressee
          description: The person, or group, the greeting addresses.
          schema: requireText
  schema:
    - name: requireText
      dataType: string
      maxLength: 45
      allowEmpty: false

This section is only relevant for contributors of the specification

LinkML Source

Direct

Details
name: ApplicationDescription
description: Root class for an application description.
from_schema: https://specification.margo.org/data-model
attributes:
  apiVersion:
    name: apiVersion
    description: Identifier of the version of the API the object definition follows.
    from_schema: https://specification.margo.org/application-schema
    domain_of:
    - ApplicationDeployment
    - ApplicationDescription
    - DeviceCapabilitiesManifest
    - DeploymentStatusManifest
    range: string
    required: true
  kind:
    name: kind
    description: Specifies the object type; must be `ApplicationDescription`.
    from_schema: https://specification.margo.org/application-schema
    designates_type: true
    domain_of:
    - ApplicationDeployment
    - ApplicationDescription
    - DeviceCapabilitiesManifest
    - DeploymentStatusManifest
    range: string
    required: true
    equals_string: ApplicationDescription
  metadata:
    name: metadata
    description: Metadata element specifying characteristics about the application
      deployment. See the [Metadata Attributes](#metadata-attributes) section below.
    from_schema: https://specification.margo.org/application-schema
    domain_of:
    - ApplicationDeployment
    - ApplicationDescription
    range: ApplicationMetadata
    required: true
  deploymentProfiles:
    name: deploymentProfiles
    description: Deployment profiles element specifying the types of deployments the
      application supports. See the [Deployment](#deploymentprofile-attributes) section
      below.
    from_schema: https://specification.margo.org/application-schema
    domain_of:
    - ApplicationDescription
    range: DeploymentProfileDescription
    required: true
    multivalued: true
    inlined: true
    inlined_as_list: true
  parameters:
    name: parameters
    description: Parameters element specifying the configurable parameters to use
      when installing, or updating, the application. See the [Parameter](#parameter-attributes)
      section below.
    from_schema: https://specification.margo.org/application-schema
    domain_of:
    - Spec
    - ApplicationDescription
    range: Parameter
    multivalued: true
    inlined: true
    inlined_as_list: false
  configuration:
    name: configuration
    description: Configuration element specifying how parameters should be displayed
      to the user for setting the value as well as the rules to use to validate the
      user's input. See the [Configuration](#configuration-attributes) section below.
    from_schema: https://specification.margo.org/application-schema
    domain_of:
    - ApplicationDescription
    range: Configuration

Induced

Details
name: ApplicationDescription
description: Root class for an application description.
from_schema: https://specification.margo.org/data-model
attributes:
  apiVersion:
    name: apiVersion
    description: Identifier of the version of the API the object definition follows.
    from_schema: https://specification.margo.org/application-schema
    alias: apiVersion
    owner: ApplicationDescription
    domain_of:
    - ApplicationDeployment
    - ApplicationDescription
    - DeviceCapabilitiesManifest
    - DeploymentStatusManifest
    range: string
    required: true
  kind:
    name: kind
    description: Specifies the object type; must be `ApplicationDescription`.
    from_schema: https://specification.margo.org/application-schema
    designates_type: true
    alias: kind
    owner: ApplicationDescription
    domain_of:
    - ApplicationDeployment
    - ApplicationDescription
    - DeviceCapabilitiesManifest
    - DeploymentStatusManifest
    range: string
    required: true
    equals_string: ApplicationDescription
  metadata:
    name: metadata
    description: Metadata element specifying characteristics about the application
      deployment. See the [Metadata Attributes](#metadata-attributes) section below.
    from_schema: https://specification.margo.org/application-schema
    alias: metadata
    owner: ApplicationDescription
    domain_of:
    - ApplicationDeployment
    - ApplicationDescription
    range: ApplicationMetadata
    required: true
  deploymentProfiles:
    name: deploymentProfiles
    description: Deployment profiles element specifying the types of deployments the
      application supports. See the [Deployment](#deploymentprofile-attributes) section
      below.
    from_schema: https://specification.margo.org/application-schema
    alias: deploymentProfiles
    owner: ApplicationDescription
    domain_of:
    - ApplicationDescription
    range: DeploymentProfileDescription
    required: true
    multivalued: true
    inlined: true
    inlined_as_list: true
  parameters:
    name: parameters
    description: Parameters element specifying the configurable parameters to use
      when installing, or updating, the application. See the [Parameter](#parameter-attributes)
      section below.
    from_schema: https://specification.margo.org/application-schema
    alias: parameters
    owner: ApplicationDescription
    domain_of:
    - Spec
    - ApplicationDescription
    range: Parameter
    multivalued: true
    inlined: true
    inlined_as_list: false
  configuration:
    name: configuration
    description: Configuration element specifying how parameters should be displayed
      to the user for setting the value as well as the rules to use to validate the
      user's input. See the [Configuration](#configuration-attributes) section below.
    from_schema: https://specification.margo.org/application-schema
    alias: configuration
    owner: ApplicationDescription
    domain_of:
    - ApplicationDescription
    range: Configuration