Skip to content

Device Capabilities

Schema for defining device capabilities. The purpose of the Device Capabilities is that WFMs can match application deployments with the capabilities of the target devices.

Object structure

DeviceCapabilitiesManifest Attributes

Attribute Type Required? Description
apiVersion string Y Identifier of the version the API resource follows.
kind string Y Must be DeviceCapabilitiesManifest.
properties Properties Y Element that defines characteristics about the device. See the Properties Attributes section below.

Detailed class view: DeviceCapabilitiesManifest

Properties Attributes

Attribute Type Required? Description
id string Y Unique deviceID assigned to the device via the Device Owner.
vendor string Y Defines the device vendor.
modelNumber string Y Defines the model number of the device.
serialNumber string Y Defines the serial number of the device.
roles []string Y Element that defines the device role it can provide to the Margo environment. MUST be one of the following: Standalone Cluster, or Standalone Device
resources Resources Y Element that defines the device's resources available to the application deployed on the device. See the Resources Attributes section below.

Detailed class view: Properties

Resources Attributes

Attribute Type Required? Description
cpu CPU N CPU element specifying the CPU requirements for the application. See the CPU section below.
memory string N The minimum amount of memory required. The value is given in binary units (Ki = Kibibytes, Mi = Mebibytes, Gi = Gibibytes). This is defined by the application developer. After deployment of the application, the device MUST provide this amount of memory for the application.
storage string N The amount of storage required for the application to run. This encompasses the installed application and the data it needs to store. The value is given in binary units (Ki = Kibibytes, Mi = Mebibytes, Gi = Gibibytes, Ti Tebibytes, Pi = Pebibytes, Ei = Exbibytes). This is defined by the application developer. After deployment of the application, the device MUST provide this amount of storage for the application
peripherals []Peripheral N Peripherals element specifying the peripherals required to run the application. See the Peripheral section below.
interfaces []CommunicationInterface N Interfaces element specifying the communication interfaces required to run the application. See the Communication Interfaces section below.

Detailed class view: Resources

CPU Attributes

Attribute Type Required? Description
cores double Y The required amount of CPU cores the application must use to run in its full functionality. Specified as decimal units of CPU cores (e.g., 0.5 is half a core). This is defined by the application developer. After deployment of the application, the device MUST provide this number of CPU cores for the application.
architectures []string N The CPU architectures supported by the application. This can be e.g. amd64, x86_64, arm64, arm. See the CpuArchitectureType definition for all permissible values. Multiple arcitecture types can be specified, as the deployment profile may support multiple CPU architectures.

Detailed class view: CPU

Peripheral Attributes

Attribute Type Required? Description
type None N None
manufacturer string N The name of the manufacturer. If manufacturer is specified as a requirement here, it may be difficult to find devices that can host the application. Please use these requirements with caution.
model string N The model of the peripheral. If model is specified as a requirement here, it may be difficult to find devices that can host the application. Please use these requirements with caution.

Detailed class view: Peripheral

CommunicationInterface Attributes

Attribute Type Required? Description
type None N None

Detailed class view: CommunicationInterface

JSON Schema

View JSON Schema in new tab or download