Both plugins read one yaml file. It is a subset of core’s own config, parsed with core’s loader, so the key names and defaults match core exactly. Only the keys below are used.
etcd:
machines:
- http://127.0.0.1:2379
prefix: "/eru-gpu"
etcd:
machines:
- http://127.0.0.1:2379
prefix: "/eru-storage"
scheduler:
max_deploy_count: 50
| Key | Used by | Required | Default | Meaning |
|---|---|---|---|---|
etcd.machines |
both | yes | — | etcd endpoints holding per-node capacity and usage |
etcd.prefix |
both | yes | /eru |
key namespace; the plugin writes <prefix>/resource/gpu/<node> or <prefix>/resource/storage/<node> |
etcd.lock_prefix |
both | no | __lock__/eru |
inherited from core’s config struct, unused by the plugins |
etcd.ca, etcd.cert, etcd.key |
both | no | — | TLS material for the etcd client |
etcd.auth.username, etcd.auth.password |
both | no | — | etcd authentication |
scheduler.max_deploy_count |
storage | no | 10000 |
upper bound on the deploy capacity one node reports and on the volume plans returned for it |
scheduler.max_deploy_count caps the deploy capacity one node reports: outright when a request needs no
volume placement, and as the bound on the capacity count get-nodes-deploy-capacity computes otherwise.
calculate-deploy plans only the count core asks for. Raising the cap lets a node report a larger deploy
capacity for small volume requests.
The GPU plugin has no scheduler section — GPU capacity is an integer count per product, so a node’s capacity is computed directly rather than enumerated.
A plugin resolves its config in this order:
--config <path> on the command line, before the subcommand.ERU_RESOURCE_CONFIG_PATH in the environment.gpu.yaml / storage.yaml, relative to the working directory.Core sets the working directory to resource_plugin.dir before executing a plugin, so option 3 resolves
next to the binary. Core does not set ERU_RESOURCE_CONFIG_PATH itself; export it in core’s own
environment to point both plugins elsewhere.
A missing or incomplete config is a hard failure: the plugin exits non-zero with
Machines is required, but blank rather than starting without a store.