Skip to content

Commit 9c2ab02

Browse files
committed
basic application requirements
Signed-off-by: Arne Broering <arne.broering@siemens.com>
1 parent 76409c1 commit 9c2ab02

File tree

3 files changed

+257
-1
lines changed

3 files changed

+257
-1
lines changed

src/margo-api-reference/workload-api/application-package-api/application-description.linkml.yaml

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,10 +201,138 @@ classes:
201201
DeploymentProfile:
202202
description: Represents a deployment configuration for the application.
203203
rank: 60
204+
attributes:
205+
requiredResources:
206+
description: >-
207+
Required resources element specifying the resources required to install the application.
208+
See the [Required Resources](#requiredresources-attributes) section below.
209+
rank: 30
210+
range: RequiredResources
211+
required: false
212+
requiredPeripherals:
213+
description: >-
214+
Required peripherals element specifying the peripherals required to install the application.
215+
See the [Required Peripherals](#requiredperipherals-attributes) section below.
216+
rank: 40
217+
range: RequiredPeripherals
218+
required: false
219+
multivalued: true
220+
inlined: true
221+
inlined_as_list: true
222+
requiredInterfaces:
223+
description: >-
224+
Required interfaces element specifying the communication interfaces required to install the application.
225+
See the [Required Interfaces](#requiredinterfaces-attributes) section below.
226+
rank: 50
227+
range: RequiredInterfaces
228+
required: false
229+
multivalued: true
230+
inlined: true
231+
inlined_as_list: true
204232
slots:
205233
- type
206234
- components
207235

236+
RequiredResources:
237+
description: >-
238+
Required resources element specifying the resources required to install the application.
239+
rank: 61
240+
attributes:
241+
cpu:
242+
description: >-
243+
CPU element specifying the CPU requirements for the application.
244+
See the [CPU](#cpu-attributes) section below.
245+
range: CPU
246+
required: false
247+
memory:
248+
description: >-
249+
Memory element specifying the memory requirements for the application.
250+
See the [Memory](#memory-attributes) section below.
251+
range: Memory
252+
required: false
253+
storage:
254+
description: >-
255+
Storage element specifying the storage requirements for the application.
256+
See the [Storage](#storage-attributes) section below.
257+
range: Storage
258+
required: false
259+
260+
CPU:
261+
description: >-
262+
CPU element specifying the CPU requirements for the application.
263+
rank: 62
264+
attributes:
265+
coreCountMinimum:
266+
description: The number of CPU cores required by the application to run in its full functionality.
267+
This is defined by the application developer.
268+
After deployment of the application, the device MUST provide this number of CPU cores for the application.
269+
rank: 10
270+
range: integer
271+
required: true
272+
architecture:
273+
description: The CPU architecture required by the application. This can be e.g. amd64, x86_64, arm64, arm (according to CpuArchitectureType).
274+
rank: 20
275+
range: CpuArchitectureType
276+
required: false
277+
278+
Memory:
279+
description: >-
280+
Memory element specifying the memory requirements for the application.
281+
rank: 63
282+
attributes:
283+
sizeMinimum:
284+
description: The minimum amount of memory required. Specified in megabyte (MB).
285+
This is defined by the application developer.
286+
After deployment of the application, the device MUST provide this amount of memory for the application.
287+
rank: 10
288+
range: integer
289+
required: true
290+
291+
Storage:
292+
description: >-
293+
Storage element specifying the storage requirements for the application.
294+
rank: 64
295+
attributes:
296+
sizeMinimum:
297+
description: The amount of storage required. Specified in megabyte (MB).
298+
This is defined by the application developer.
299+
After deployment of the application, the device MUST provide this amount of storage for the application
300+
rank: 10
301+
range: integer
302+
required: true
303+
304+
RequiredPeripherals:
305+
description: >-
306+
Peripherals required to run the application.
307+
rank: 65
308+
attributes:
309+
type:
310+
description: The type of peripheral. This can be e.g. GPU, display, camera, microphone, speaker (according to PeripheralType).
311+
rank: 20
312+
range: PeripheralType
313+
required: true
314+
manufacturer:
315+
description: The name of the manufacturer.
316+
rank: 30
317+
range: string
318+
required: false
319+
model:
320+
description: The model of the peripheral.
321+
rank: 40
322+
range: string
323+
required: false
324+
325+
RequiredInterfaces:
326+
description: >-
327+
Communication interfaces required to run the application.
328+
rank: 66
329+
attributes:
330+
type:
331+
description: The type of interface required to run the application. This can be e.g. Ethernet, WiFi, Cellular, Bluetooth, USB, CANBus, RS232 (according to CommunicationInterfaceType)
332+
rank: 30
333+
range: CommunicationInterfaceType
334+
required: false
335+
208336
HelmDeploymentProfile:
209337
is_a: DeploymentProfile
210338
#rank: 63
@@ -583,3 +711,45 @@ slots:
583711
inlined_as_list: true
584712
rank: 20
585713

714+
enums:
715+
CpuArchitectureType:
716+
permissible_values:
717+
amd64:
718+
description: AMD 64-bit architecture.
719+
x86_64:
720+
description: x86 64-bit architecture.
721+
arm64:
722+
description: ARM 64-bit architecture.
723+
arm:
724+
description: ARM 32-bit architecture.
725+
726+
CommunicationInterfaceType:
727+
permissible_values:
728+
Ethernet:
729+
description: This type stands for an Ethernet interface.
730+
WiFi:
731+
description: This type stands for an WiFi interface.
732+
Cellular:
733+
description: This type stands for cellular communication technologies such as 5G, LTE, 3G, 2G, ....
734+
Bluetooth:
735+
description: This type stands for a Bluetooth or Bluetooth Low-Energy (BLE) interface.
736+
USB:
737+
description: This type stands for a USB interface.
738+
CANBus:
739+
description: This type stands for a CANBus interface.
740+
RS232:
741+
description: This type stands for a RS232 interface.
742+
743+
PeripheralType:
744+
permissible_values:
745+
GPU:
746+
description: This type stands for a Graphics Processing Unit (GPU) peripheral.
747+
Display:
748+
description: This type stands for a display peripheral.
749+
Camera:
750+
description: This type stands for a camera peripheral.
751+
Microphone:
752+
description: This type stands for a microphone peripheral.
753+
Speaker:
754+
description: This type stands for a speaker peripheral.
755+

src/margo-api-reference/workload-api/application-package-api/resources/examples/valid/ApplicationDescription-002.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,21 @@ deploymentProfiles:
3434
repository: oci://northstarida.azurecr.io/charts/northstarida-digitron-orchestrator
3535
revision: 1.0.9
3636
wait: true
37+
requiredResources:
38+
cpu:
39+
coreCountMinimum: 1
40+
architecture: amd64 # or: x86_64
41+
memory:
42+
sizeMinimum: 1024 # MB
43+
storage:
44+
sizeMinimum: 10000 # MB := 10 GB
45+
requiredPeripherals:
46+
- type: GPU
47+
manufacturer: NVIDIA
48+
- type: Display
49+
requiredInterfaces:
50+
- type: Ethernet
51+
- type: Bluetooth
3752
- type: compose
3853
components:
3954
- name: digitron-orchestrator-docker

system-design/margo-api-reference/workload-api/application-package-api/application-description.md

Lines changed: 72 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,64 @@ Represents a deployment configuration for the application. <br>
7171

7272
| Attribute | Type | Required? | Description |
7373
| --- | --- | --- | --- |
74-
| type | string | Y | Defines the type of this deployment configuration for the application. The allowed values are `helm.v3`, to indicate the component's package format is Helm version 3, and `compose` to indicate the component's package format is a Compose file. When installing the application on a device supporting the Kubernetes platform all `helm.v3` components, and only `helm.v3` components, will be provided to the device in same order they are listed in the application description file. When installing the application on a device supporting Compose all `compose` components, and only `compose` components, will be provided to the device in the same order they are listed in the application description file. The device will install the components in the same order they are listed in the application description file.|
74+
| type | string | Y | Indicates the components's deployment configuration. The values are `helm.v3` to indicate the component's package format is Helm version 3 and `compose` to indicate the component's package format is a Compose file. When installing the application on a device supporting the Kubernetes platform all `helm.v3` components, and only `helm.v3` components, will be provided to the device in same order they are listed in the application description file. When installing the application on a device supporting Compose all `compose` components, and only `compose` components, will be provided to the device in the same order they are listed in the application description file. The device will install the components in the same order they are listed in the application description file.|
7575
| components | []Component | Y | Component element indicating the components to deploy when installing the application. See the [Component](#component-attributes) section below.|
76+
| requiredResources | RequiredResources | N | Required resources element specifying the resources required to install the application. See the [Required Resources](#requiredresources-attributes) section below.|
77+
| requiredPeripherals | []RequiredPeripherals | N | Required peripherals element specifying the peripherals required to install the application. See the [Required Peripherals](#requiredperipherals-attributes) section below.|
78+
| requiredInterfaces | []RequiredInterfaces | N | Required interfaces element specifying the communication interfaces required to install the application. See the [Required Interfaces](#requiredinterfaces-attributes) section below.|
79+
80+
81+
### RequiredResources Attributes <br><br>
82+
Required resources element specifying the resources required to install the application. <br>
83+
84+
| Attribute | Type | Required? | Description |
85+
| --- | --- | --- | --- |
86+
| cpu | CPU | N | CPU element specifying the CPU requirements for the application. See the [CPU](#cpu-attributes) section below.|
87+
| memory | Memory | N | Memory element specifying the memory requirements for the application. See the [Memory](#memory-attributes) section below.|
88+
| storage | Storage | N | Storage element specifying the storage requirements for the application. See the [Storage](#storage-attributes) section below.|
89+
90+
91+
### CPU Attributes <br><br>
92+
CPU element specifying the CPU requirements for the application. <br>
93+
94+
| Attribute | Type | Required? | Description |
95+
| --- | --- | --- | --- |
96+
| coreCountMinimum | integer | Y | The number of CPU cores required by the application to run in its full functionality. This is defined by the application developer. After deployment of the application, the device MUST provide this number of CPU cores for the application.|
97+
| architecture | CpuArchitectureType | N | The CPU architecture required by the application. This can be e.g. amd64, x86_64, arm64, arm (according to CpuArchitectureType).|
98+
99+
100+
### Memory Attributes <br><br>
101+
Memory element specifying the memory requirements for the application. <br>
102+
103+
| Attribute | Type | Required? | Description |
104+
| --- | --- | --- | --- |
105+
| sizeMinimum | integer | Y | The minimum amount of memory required. Specified in megabyte (MB). This is defined by the application developer. After deployment of the application, the device MUST provide this amount of memory for the application.|
106+
107+
108+
### Storage Attributes <br><br>
109+
Storage element specifying the storage requirements for the application. <br>
110+
111+
| Attribute | Type | Required? | Description |
112+
| --- | --- | --- | --- |
113+
| sizeMinimum | integer | Y | The amount of storage required. Specified in megabyte (MB). This is defined by the application developer. After deployment of the application, the device MUST provide this amount of storage for the application|
114+
115+
116+
### RequiredPeripherals Attributes <br><br>
117+
Peripherals required to run the application. <br>
118+
119+
| Attribute | Type | Required? | Description |
120+
| --- | --- | --- | --- |
121+
| type | PeripheralType | Y | The type of peripheral. This can be e.g. GPU, display, camera, microphone, speaker (according to PeripheralType).|
122+
| manufacturer | string | N | The name of the manufacturer.|
123+
| model | string | N | The model of the peripheral.|
124+
125+
126+
### RequiredInterfaces Attributes <br><br>
127+
Communication interfaces required to run the application. <br>
128+
129+
| Attribute | Type | Required? | Description |
130+
| --- | --- | --- | --- |
131+
| type | CommunicationInterfaceType | N | The type of interface required to run the application. This can be e.g. Ethernet, WiFi, Cellular, Bluetooth, USB, CANBus, RS232 (according to CommunicationInterfaceType)|
76132

77133

78134
### Component Attributes <br><br>
@@ -333,6 +389,21 @@ deploymentProfiles:
333389
repository: oci://northstarida.azurecr.io/charts/northstarida-digitron-orchestrator
334390
revision: 1.0.9
335391
wait: true
392+
requiredResources:
393+
cpu:
394+
coreCountMinimum: 1
395+
architecture: amd64 # or: x86_64
396+
memory:
397+
sizeMinimum: 1024 # MB
398+
storage:
399+
sizeMinimum: 10000 # MB := 10 GB
400+
requiredPeripherals:
401+
- type: GPU
402+
manufacturer: NVIDIA
403+
- type: Display
404+
requiredInterfaces:
405+
- type: Ethernet
406+
- type: Bluetooth
336407
- type: compose
337408
components:
338409
- name: digitron-orchestrator-docker

0 commit comments

Comments
 (0)