hashgraph / hashgraph/solo-weaver

feat(consensus): consensus jobs run/list commands

Open
#1,073 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 jobs run` and `consensus jobs list` commands for executing phase-scoped K8s Jobs from a deployment package.

Parent epic: #408
Depends on: #1045
Blocked by: hashgraph/solo-operator#1077 (`pkg/jobs/` shared library)

### Context
Per HIP-1494, the deployment package may contain optional K8s Job descriptors in `jobs/`. Each declares a context (install/upgrade), phase, sequence, and failure policy. While automatic operations (upgrade) have the daemon/UC as triggerer, the CLI must support **all phases** for manual operations and recovery scenarios (e.g. re-running a failed `prepare` or `post-upgrade` job).

### Commands

**`consensus jobs list`**
- `--deployment-package-dir ` (required)
- Lists all job descriptors grouped by phase, showing name, sequence, failurePolicy
- Optional `--phase ` filter

**`consensus jobs run`**
- `--deployment-package-dir ` (required)
- `--phase ` (required) — which phase to execute
- `--node-id ` / `--namespace` / `--orbit` — target CN context
- `--operation-id ` — for idempotency label injection (auto-generated if not provided)
- Runs all jobs matching the phase in `phase.sequence` order
- Respects `failurePolicy`: Abort halts, Ignore logs and continues
- Idempotent via label-based lookup before creating

### Supported phases (all, for manual/recovery use)

| Phase | Context | Normal triggerer | CLI use case |
|---|---|---|---|
| `pre-install` | install | CLI | Fresh install |
| `post-install` | install | CLI | Fresh install |
| `prepare` | upgrade | UC sidecar | Manual re-run / recovery |
| `frozen` | upgrade | Daemon | Manual re-run / recovery |
| `post-upgrade` | upgrade | UC sidecar | Manual re-run / recovery |

### Acceptance Criteria
- [ ] Uses shared `pkg/jobs/` library from solo-operator
- [ ] `consensus jobs list` shows all descriptors with phase/sequence/failurePolicy
- [ ] `consensus jobs run --phase ` executes matching jobs in sequence order
- [ ] All 5 phases supported
- [ ] `failurePolicy: Abort` stops execution; `Ignore` logs and continues
- [ ] Idempotent via operation-id + job-file label lookup
- [ ] Job completion determined by pod exit code
- [ ] Clear output showing job progress and results

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.