hashgraph / hashgraph/solo-weaver

feat(consensus): consensus node stop command

Open
#1,068 0 comments 0 reactions 1 assignee Claimed by @leninmehedy View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.