Out-of-tree resource plugins for eru core. resource-gpu schedules
GPUs by product model; resource-storage schedules volumes, disk IOPS/BPS quota and storage space. Core
executes each plugin as a binary — one subcommand per verb, the request as JSON on stdin, the result as JSON
on stdout — so a cluster gains either resource without rebuilding core.
eru-core
│ resource/cobalt
│ ├─► cpumem (built into core)
│ └─► binary plugins resource_plugin.dir
│ │
│ ├─ exec ./resource-gpu <verb> <── JSON ──> gpu.yaml
│ └─ exec ./resource-storage <verb> <── JSON ──> storage.yaml
│ │
└──────────────────────────────────┴──► etcd /resource/{gpu,storage}/<node>
Both binaries come from one Go module:
plugincmd/ the shared urfave/cli command tree, one handler per plugin verb
nodestore/ per-node capacity and usage in etcd
gpu/ the GPU plugin -> cmd/resource-gpu
storage/ the storage plugin -> cmd/resource-storage
gpu.yaml and storage.yaml readSource and issue tracker: github.com/projecteru2/resource-extend. Part of the Eru cluster stack, alongside core, agent and cli.