Skip to content

Commit

Permalink
Documentation of ExeUnit directory and runtime descriptor
Browse files Browse the repository at this point in the history
  • Loading branch information
nieznanysprawiciel committed Oct 31, 2023
1 parent 62f9026 commit c31b82f
Showing 1 changed file with 82 additions and 0 deletions.
82 changes: 82 additions & 0 deletions docs/provider/exe-unit/exe-units.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# ExeUnits

## How Provider agent finds ExeUnits?

`ya-provider` lists available ExeUnits by listing descriptors placed in [directory](../overview.md#provider-directories).

Example directory content:
```commandline
nieznanysprawiciel@laptop:~$ tree ~/.local/lib/yagna/plugins
/home/nieznanysprawiciel/.local/lib/yagna/plugins
├── exe-unit
├── ya-runtime-vm
│   ├── runtime
│   │   ├── bios-256k.bin
│   │   ├── efi-virtio.rom
│   │   ├── initramfs.cpio.gz
│   │   ├── kvmvapic.bin
│   │   ├── linuxboot_dma.bin
│   │   ├── self-test.gvmi
│   │   ├── vmlinuz-virt
│   │   └── vmrt
│   └── ya-runtime-vm
├── ya-runtime-vm.json
├── ya-runtime-wasi
└── ya-runtime-wasi.json
```
ExeUnit descriptors must be placed directly in plugins directory (not in nested structure).
Other ExeUnits' files can be moved into subdirectories, because descriptor is pointing to specific files.

## Descriptor

Example ExeUnit descriptor:
```json
[
{
"name": "custom",
"version": "0.2.2",
"supervisor-path": "exe-unit",
"runtime-path": "custom-runtime/custom",
"description": "Custom runtime for documentation purposes.",
"extra-args": ["--runtime-managed-image"],
"properties": {
"golem.custom-runtime.enable" : false,
"golem.custom-runtime.config" : {
"value": 32
}
},
"config": {
"counters": {
"golem.usage.network.in-mib": {
"name": "in-network-traffic",
"description": "Incoming network traffic usage in MiB",
"price": true
},
"golem.usage.network.out-mib": {
"name": "out-network-traffic",
"description": "Outgoing network traffic usage in MiB",
"price": true
},
"golem.usage.duration_sec": {
"name": "duration",
"description": "Activity duration in seconds",
"price": true
}
}
}
}
]
```


| property | optional | description |
|-----------------|----------|---------------------------------------------------------------------------------------------------------------------------------|
| name | No | Runtime name which will be placed in offer as `"golem.runtime.name"` |
| version | No | Runtime version following semantic versioning. Placed in Offer as `golem.runtime.version` |
| supervisor-path | No | Path to supervisor binary relative to this descriptor. |
| runtime-path | Yes | Path to runtime binary relative to this descriptor. |
| description | Yes | Human readable runtime description. |
| extra-args | Yes | Runtime specific arguments that will be appended to ExeUnit binary when starting. |
| properties | Yes | Properties that will be attached to Offer. Dictionary with keys used as a path in Offer which value can be any legal json type. |
| config | Yes | Runtime configuration that can be used by Provider. |
| config/counters | Yes | Dictionary of supported usage counters. |

0 comments on commit c31b82f

Please sign in to comment.