converge
converge copied to clipboard
V2 RPC API
I've painted myself into a corner on the V1 RPC API. Notably, it sprawled to many different services and structs and isn't at all well architected. The server itself is fine, but the semantics are very busted. I'd like to suggest a clean break. The V2 API should do only these things:
- run plan and apply given a module location
- stream output from stages as plan and apply finish
- serve binaries and files (optionally)
- respond to ping
- limit itself to one plan and one apply at once. It doesn't currently, which could be a race condition.
In the future, it should:
- stream optional output from stages as they go through internal steps (similar to logging) (#212)
- run plan and apply given a bundle (#204)
- serve module bundles (optionally) (#204)
And I'd like to remove:
- health checks: this is a special case of plan that should be more of a client concern.
- module validation: this should be local.
- return/serialize graphs for modules: this should be local or the concern of a cluster server.
Any feedback on any of the above? I'm going to plan out this work for the 0.7.0 release.
That sounds reasonable to me.