hashgraph / hashgraph/solo-weaver
feat(consensus): consensus node stop command
- Dominant language
- Go
- Stars
- 3
- Forks
- 0
- Avg merge
- 3d 5h
- Merged PRs (30d)
- 47
Description
Implement `solo-provisioner consensus node stop` command.
Parent epic: #408
Depends on: solo-operator PR hashgraph/solo-operator#1263 (declarative `spec.desiredRunState`) and epic hashgraph/solo-operator#1165
### Context — declarative model (updated)
The design pivoted away from the earlier imperative `ConsensusNodeStart`/`ConsensusNodeStop` CRDs. solo-operator PR #1263 adds a declarative field on the ConsensusCapsule:
- `spec.startPolicy`: `Auto` (default) | `Manual`.
- `spec.desiredRunState`: `Running` | `Stopped` (optional) — the operator actuates s6 in-place (pod stays up).
Setting `desiredRunState=Stopped` stops the process regardless of `startPolicy` (including an Auto node), so **stop is not restricted to `startPolicy=Manual`** (this supersedes the old acceptance criterion).
### Scope
- `solo-provisioner consensus node stop --node-id [--namespace]`
- Server-Side-Apply patch `spec.desiredRunState=Stopped` on the target ConsensusCapsule (no separate CR).
- Precheck: the ConsensusCapsule exists.
- Optionally wait for phase `Stopped`.
- Idempotent — patching to Stopped when already stopped is a no-op.
### Blocked until
Our vendored solo-operator API does not yet expose `desiredRunState`; this cannot be built until PR #1263 merges and we re-vendor.
### Acceptance Criteria
- [ ] `desiredRunState=Stopped` applied to the correct capsule via SSA
- [ ] Works regardless of `startPolicy` (no Auto/Manual gate)
- [ ] Optionally waits for phase Stopped
- [ ] Idempotent
- [ ] Clear, decorated error when the capsule is not found
Contributor guide
Assessment
This issue has not been assessed yet.