hashgraph / hashgraph/solo-weaver
feat(consensus): consensus node start command
- Dominant language
- Go
- Stars
- 3
- Forks
- 0
- Avg merge
- 3d 5h
- Merged PRs (30d)
- 47
Description
Implement `solo-provisioner consensus node start` 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` — who starts the s6 process on pod boot.
- `spec.desiredRunState`: `Running` | `Stopped` (optional) — the desired s6 process state; the operator actuates s6 in-place (pod stays up).
Effective behavior: Auto + unset ⇒ runs; Auto + Stopped ⇒ stopped; Manual + unset ⇒ stopped; Manual + Running ⇒ runs. Setting `desiredRunState` drives the process regardless of `startPolicy`, so **start/stop is not restricted to `startPolicy=Manual`** (this supersedes the old acceptance criterion).
### Scope
- `solo-provisioner consensus node start --node-id [--namespace]`
- Server-Side-Apply patch `spec.desiredRunState=Running` on the target ConsensusCapsule (no separate CR).
- Precheck: the ConsensusCapsule exists.
- Reuse `WaitConsensusCapsuleReady` to wait for phase Running/Active (honor `--ready-timeout`).
- Idempotent — patching to Running when already running 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=Running` applied to the correct capsule via SSA
- [ ] Works regardless of `startPolicy` (no Auto/Manual gate)
- [ ] Waits for Running/Active with `--ready-timeout`
- [ ] Idempotent
- [ ] Clear, decorated error when the capsule is not found
Contributor guide
Assessment
This issue has not been assessed yet.