Skip to main content
Version: Next

Aos object identification

General information

AosEdge object represents a different type of entities. Each entity is identified by a bunch of properties. Such objects are called AosNamedObject

The list of named objects

Object type nameDescription
aosServiceRepresent service create by a Service provider and run on AosUnit
aosLayerService layer that contains common libraries for aosService
aosComponentA system component of an Aos unit. E.g. boot, rootFileSystem, UEFI, etc.
aosSubjectEntity that provides relations between components/services and units. In some cases can be treated as subscription
aosOEMOriginal Equipment Manufacturer. Entity that owns and manages aosComponents, aosLayers, Unit fleets, Units, subject
aosSPService provider. Entity that owns and manages aosService.
aosFleetEntity that owns and manages Aos units. Depends on an OEM

AosEdge has objects that can be shared across OEMs, Service providers, Fleets

Such objects as aosComponent, aosService, aosLayer can be executed or ran on aosRuntime. All running objects might have one or more dependencies

All executable objects can support one or more runtimes. E.g.: aosService and aosLayer can use runtimes: runc, crun, xrun, etc. aosComponent can use aosRuntime from the same aosOEM or from external one.

Example of JSON representation

Example shows Aos component "RootFS" that depends on "BootLoader" and "BIOS.another-oem.aoscloud.io"

[
{
"identifier": {
"type": "aosComponent",
"id": "00000000-0000-0000-0000-000000000001",
"codename": "RootFS",
"title": "Main file system",
"urn": "urn:aos:component:demo-oem.aoscloud.io/rootfs",
"description": "Root file system with AosCore modules and basic settings"
},
"version": "1.0.2",
"archFamily": "ARM64",
"arch": "ARMv7",
"runtimes": [
{
"codename": "rt_RootFS"
}
],
"dependencies": [
{
"condition": "mustBeInstalled",
"versions": ">=1.0.0,<2.0.0",
"identifier": {
"type": "aosComponent",
"codename": "bootLoader"
}
},
{
"condition": "mustBeInstalled",
"versions": ">=1.0.0,<2.0.0",
"includePrerelease": true,
"identifier": {
"urn": "urn:aos:component:another-oem.aoscloud.io/bios"
}
}
]
},
{
"identifier": {
"type": "aosComponent",
"id": "00000000-0000-0000-0000-000000000002",
"codename": "bootLoader"
},
"version": "1.0.0",
"runtimes": [
{
"codename": "rt_Boot"
}
]
},
{
"identifier": {
"urn": "urn:aos:component:another-oem.aoscloud.io/bios"
},
"version": "1.0.0",
"runtimes": [
{
"urn": "urn:aos:runtime:another-oem.aoscloud.io/bios"
}
]
}
]

Aos object identification

Each Aos object has a property called identifier. This property contains next information All names are case-insensitive.

PropertyTypeUniquenessGenerated byExampleComments
idUUIDAosCloud instanceAosCloud00000000-0000-0000-0000-000000000001
codenamestringOEM/SP onlydeveloperdemo-serviceAllowed chars: [A-Z][a-z][0-9]-_
titlestring-developerdemo-serviceHuman readable name, shown to AosCloud users
urnURNGlobalAosCloudurn:aos:service:demo-sp.aoscloud.io/demo-serviceBased on RFC2141. included type, OEN/SP name, cloud domain
typestring-developeraosServiceRestricted list
descriptionstring-developerDemo service

Objects list that has name identification

ObjectType identifierExampleComments
Componentcomponenturn:aos:component:demo-oem.aoscloud.io/bios1Aos update component
Serviceserviceurn:aos:service:demo-sp.aoscloud.io/demo-service
Layerlayerurn:aos:layer:demo-oem.aoscloud.io/python-libs
Runtimeruntimeurn:aos:runtime:runcrunc, crun, xrun have to be predefined
Subjectsubjecturn:aos:layer:demo-oem.aoscloud.io/#00000000-0000-0000-0000-000000000021
OEMoemurn:aos:oem:demo-oem.aoscloud.io
SPspurn:aos:sp:demo-sp.aoscloud.io

Aos objects (components, services, and layers) has property runtimes. runtime shows how to pin and start objects. Components needs to specify unique runtime to be identified by AosCore. Service can be run on globally well-known runtimes such as crun, runc, xen Allowing global name to runtimes leads to build system which can run components from other OEMs.