Application Provider Capabilities¶
This document provides instructions on how to complete the capability statement for Application Builders. The Capability Statement, formatted in JSON, outlines the capabilities a device must have to be compatible with the application and its specified version.
For each new version of an application, the Application Builder must complete and submit this file to Industrial Edge. This process ensures that the application and its version are added to the Compatibility Checker's list of available applications. Only then can the application and its version be processed within the scope of the Industrial Edge Compatibility Checker.
Providing data¶
-
Copy the following
Capability Statement for Applications
JSON document:Capability Statement for Applications
{ "applicationId": "", "applicationName": "", "version": "", "capability": { "ie.device.service.securestorage": { "minVersion": "" }, "ie.device.system.docker": { "minVersion": "" }, "ie.device.system.hostnet": {}, "ie.device.kernel": { "minVersion": "", "arch": "" }, "ie.device.system.shutdown": { "minVersion": "" }, "ie.device.system.iedk": { "minVersion": "" }, "ie.device.hardware.cpu_allocation": { "core": "", "optional": true }, "ie.device.hardware.gpu_allocation": { "optional": true }, "ie.device.hardware.gpio": { "optional": true }, "ie.device.hardware.nic_allocation": { "nicCount": "", "optional": true }, "ie.device.hardware.memory": { "requiredInMB": "" }, "ie.device.system.shared_memory": { "optional": true } } }
-
Fill the document with the actual data for your app and respective version, according to the instructions given in this page.
-
Provide the document to Industrial Edge Ecosystem team:
- For external partners - Send it via industrialedgeecosystem.industry@siemens.com.
- For internal partners - Create a new ticket in: https://code.siemens.com/industrial-edge/infrastructure/app-iehub-request-management/-/issues and select the template "capabilities_for_compatibility_checker"
NOTICE
You can also provide this document while onboarding your application. Refer to the instructions: Application Onboarding
How to fill the document¶
This section provides detailed instructions on how to complete each section of the document.
Meta Data¶
Parameter | Description |
---|---|
applicationId | Unique identifier for the application. Generally, this can be obtained after unpacking the application bundle file (.app) and retrieving it from the detailed.json file. |
applicationName | Name of the application. |
version | Version of the application as per Semantic Versioning 2.0.0 (https://semver.org/) |
Capabilities¶
ie.device.service.securestorage¶
The Secure Storage Service allows an app to store and retrieve confidential and integrity-protected data via a REST-based API. Access to the API is authenticated by determining the container from which the request comes by Linux means. The storage is encrypted and can be bound to the TPM of the host system (if existent). Each application has a separate "area" to store key-value pairs in. The content of the Secure Storage Area will be backed up with the app backup in the future.
If this capability is not required by your application, this item should be excluded from the application capability statement JSON file.
Refer following documentation for more details:
Property | Description |
---|---|
minVersion | The minimum version of the secure storage API that the device must support. Value should be as per Semantic Versioning 2.0.0 (https://semver.org/). Example 2.0.0 |
Notice
If your IEDK version is older version than 1.9.0, it does not provide support for secure storage.
Secure Storage Version | IEDK Version |
---|---|
Secure storage is not available | < 1.9.0 |
1.0.0 | 1.9.0 <= X < 1.19.0 |
2.0.0 | >= 1.19.0 |
ie.device.system.docker¶
What is the minimum required Docker engine version for your application, on a target device?
If your application does not require a specific version of Docker supported by the device, this item should be excluded from the application capability statement JSON file.
Property | Description |
---|---|
minVersion | The minimum version of Docker engine supported by your application. Example 20.0.0 , 23.0.3 |
NOTICE
We take exactly 3 digits(MAJOR.MINOR.PATCH) of version number for comparison.
ie.device.system.hostnet¶
In the context of containerization and Linux networking, the term "host network namespace" refers to the network namespace of the host operating system. In Docker context, this property specifies whether a container should use the host's network namespace.
If this capability is not needed by your application, this item should be excluded from the application capability statement JSON file. Include this item only if your application requires the use of the host's network namespace.
ie.device.kernel¶
What is the minimum Linux kernel version needed by your application?
If your application does not require a specific kernel version supported by the device, this item should be excluded from the application capability statement JSON file.
Property | Description |
---|---|
minVersion | Minimum Linux Kernel version required by the application. Example 6.5.0-15-generic . |
arch | The specific architecture required by the application. Supported values are only x86_64 or arm64 . |
Notice
We take exactly 3 digits(MAJOR.MINOR.PATCH) of version number for comparison.
ie.device.system.shutdown¶
If this capability is not needed by your application, this item should be excluded from the application capability statement JSON file. Include this item only if your application requires the system shutdown operation.
Refer Graceful Shutdown API for more information.
Property | Description |
---|---|
minVersion | The minimum version of shutdown API required by your application. Value should be as per Semantic Versioning 2.0.0 (https://semver.org/). Example 2.0.0 |
ie.device.system.iedk¶
What is the minimum version of IEDK required by your application?
If your application does not require a specific version of IEDK supported by the device, this item should be excluded from the application capability statement JSON file.
Property | Description |
---|---|
minVersion | The minimum IEDK version required by your application, should be decided based on the availability of used APIs and services from IEDK. Value should be as per Semantic Versioning 2.0.0 (https://semver.org/). Example, 1.21.0 . Refer to the List of Release Notes section of the Industrial Edge documentation to find out which features have been released in which IEDK version. |
ie.device.hardware.cpu_allocation¶
Does your application require CPU allocation?
If this capability is not needed by your application, this item should be excluded from the application capability statement JSON file. Include this item only if your application requires CPU cores which are configured as "isolatable" by a device.
Check the Resource Manager documentation for details.
Property | Description |
---|---|
core | The number of isolatable CPU cores required by the application. Value should be integer, such as 2 . |
optional | Boolean flag with either true or false values. If the flag is set to true , it means the application optionally requires the capability. |
ie.device.hardware.gpu_allocation¶
Does your application require GPU allocation?
If this capability is not needed by your application, this item should be excluded from the application capability statement JSON file. Include this item only if your application requires accessing to the GPU Card available on a target device.
Check the Resource Manager documentation for details.
Property | Description |
---|---|
optional | Boolean flag with either true or false values. If the flag is set to true , it means the application optionally requires the capability. |
ie.device.hardware.gpio¶
Does your device require GPIO allocation?
If this capability is not needed by your application, this item should be excluded from the application capability statement JSON file. Include this item only if your application requires accessing to the General Purpose I/O (GPIO) chip available on a target device.
Check the Resource Manager documentation for details.
Property | Description |
---|---|
optional | Boolean flag with either true or false values. If the flag is set to true , it means the application optionally requires the capability. |
ie.device.hardware.nic_allocation¶
Does your application require NIC allocation?
A network interface is a hardware component that connects a device to a network. This capability manages the NIC and its other properties.
If this capability is not needed by your application, this item should be excluded from the application capability statement JSON file. Include this item only if your application requires network interfaces, which are configured as "isolatable" by a device.
Refer to Resource Manager documentation for details.
Property | Description |
---|---|
nicCount | The number of isolatable network interfaces required by the application. Value should be integer, such as 2 . |
optional | Boolean flag with either true or false values. If the flag is set to true , it means the application optionally requires the capability. |
ie.device.hardware.memory¶
Specify the required memory (in MB) for your application.
This capability item is mandatory to be filled in the application capability statement JSON file.
Property | Description |
---|---|
requiredInMB | Memory in megabytes required by the application. Value should be integer. Example 200 . |
ie.device.system.shared_memory¶
Shared memory is memory that may be simultaneously accessed by multiple programs with an intent to provide communication among them or avoid redundant copies.
An application on the host system can allocate memory through the resource manager, and other applications can read from and write to this memory.
If this capability is not needed by your application, this item should be excluded from the application capability statement JSON file. Include this item only if your application requires shared memory.
Refer to Resource Manager documentation for details.
Property | Description |
---|---|
optional | Boolean flag with either true or false values. If the flag is set to true , it means the application optionally requires the capability. |
NOTICE
- The values for
applicationId
,applicationName
,version
,minVersion
,arch
,core
,optional
,requiredInMB
, andnicCount
are currently empty (or default value) in the JSON file. Make sure to update them with the appropriate values as per your application's requirements. - Ensure not to add any extra capabilities or properties to the provided JSON.