a0a6766740
* structs: piggyback csi volumes on host volumes for job specs * state_store: CSIVolumeByID always includes plugins, matches usecase * scheduler/feasible: csi volume checker * scheduler/stack: add csi volumes * contributing: update rpc checklist * scheduler: add volumes to State interface * scheduler/feasible: introduce new checker collection tgAvailable * scheduler/stack: taskGroupCSIVolumes checker is transient * state_store CSIVolumeDenormalizePlugins comment clarity * structs: remote TODO comment in TaskGroup Validate * scheduler/feasible: CSIVolumeChecker hasPlugins improve comment * scheduler/feasible_test: set t.Parallel * Update nomad/state/state_store.go Co-Authored-By: Danielle <dani@hashicorp.com> * Update scheduler/feasible.go Co-Authored-By: Danielle <dani@hashicorp.com> * structs: lift ControllerRequired to each volume * state_store: store plug.ControllerRequired, use it for volume health * feasible: csi match fast path remove stale host volume copied logic * scheduler/feasible: improve comments Co-authored-by: Danielle <dani@builds.terrible.systems>
1.4 KiB
1.4 KiB
New RPC Endpoint Checklist
Prefer adding a new message to changing any existing RPC messages.
Code
-
Request
struct and*RequestType
constant innomad/structs/structs.go
. Append the constant, old constant values must remain unchanged -
In
nomad/fsm.go
, add a dispatch case to the switch statement in(n *nomadFSM) Apply
*nomadFSM
method to decode the request and call the state method
-
State method for modifying objects in a
Txn
innomad/state/state_store.go
nomad/state/state_store_test.go
-
Handler for the request in
nomad/foo_endpoint.go
- RPCs are resolved by matching the method name for bound structs net/rpc
- Check ACLs for security, list endpoints filter by ACL
- Register new RPC struct in
nomad/server.go
- Check ACLs to enforce security
-
Wrapper for the HTTP request in
command/agent/foo_endpoint.go
- Backwards compatibility requires a new endpoint, an upgraded client or server may be forwarding this request to an old server, without support for the new RPC
- RPCs triggered by an internal process may not need support
- Check ACLs as an optimization
-
nomad/core_sched.go
sends many RPCsServersMeetMinimumVersion
asserts that the server cluster is upgraded, so use this to gaurd sending the new RPC, else send the old RPC- Version must match the actual release version!
Docs
- Changelog