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 name | Description |
|---|---|
| aosService | Represent service create by a Service provider and run on AosUnit |
| aosLayer | Service layer that contains common libraries for aosService |
| aosComponent | A system component of an Aos unit. E.g. boot, rootFileSystem, UEFI, etc. |
| aosSubject | Entity that provides relations between components/services and units. In some cases can be treated as subscription |
| aosOEM | Original Equipment Manufacturer. Entity that owns and manages aosComponents, aosLayers, Unit fleets, Units, subject |
| aosSP | Service provider. Entity that owns and manages aosService. |
| aosFleet | Entity 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.
| Property | Type | Uniqueness | Generated by | Example | Comments |
|---|---|---|---|---|---|
| id | UUID | AosCloud instance | AosCloud | 00000000-0000-0000-0000-000000000001 | |
| codename | string | OEM/SP only | developer | demo-service | Allowed chars: [A-Z][a-z][0-9]-_ |
| title | string | - | developer | demo-service | Human readable name, shown to AosCloud users |
| urn | URN | Global | AosCloud | urn:aos:service:demo-sp.aoscloud.io/demo-service | Based on RFC2141. included type, OEN/SP name, cloud domain |
| type | string | - | developer | aosService | Restricted list |
| description | string | - | developer | Demo service |
Objects list that has name identification
| Object | Type identifier | Example | Comments |
|---|---|---|---|
| Component | component | urn:aos:component:demo-oem.aoscloud.io/bios1 | Aos update component |
| Service | service | urn:aos:service:demo-sp.aoscloud.io/demo-service | |
| Layer | layer | urn:aos:layer:demo-oem.aoscloud.io/python-libs | |
| Runtime | runtime | urn:aos:runtime:runc | runc, crun, xrun have to be predefined |
| Subject | subject | urn:aos:layer:demo-oem.aoscloud.io/#00000000-0000-0000-0000-000000000021 | |
| OEM | oem | urn:aos:oem:demo-oem.aoscloud.io | |
| SP | sp | urn:aos:sp:demo-sp.aoscloud.io |
Comments related to components
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.