Skip to content

Commit

Permalink
new file: contributing/checklist-rpc-endpoint.md
Browse files Browse the repository at this point in the history
  • Loading branch information
langmartin committed Jun 26, 2019
1 parent 143e66d commit 3cc4c64
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions contributing/checklist-rpc-endpoint.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# New RPC Endpoint Checklist

Prefer adding a new message to changing any existing RPC messages.

## Code

* [ ] `Request` struct and `RequestType` constant in `nomad/structs/structs.go`
* [ ] In `nomad/fsm.go`, add a dispatch case to the switch statement in `Apply`
* `*nomadFSM` method to decode the request and call the state method
* [ ] State method for modifying objects in a `Txn` in `nomad/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](https://golang.org/pkg/net/rpc/)
* 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
* [ ] `nomad/core_sched.go` sends many RPCs
* `ServersMeetMinimumVersion` 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

0 comments on commit 3cc4c64

Please sign in to comment.