resource-extend

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

Guides

Repository

Source and issue tracker: github.com/projecteru2/resource-extend. Part of the Eru cluster stack, alongside core, agent and cli.