hashgraph / hashgraph/solo-weaver
Block node "no override" plugin preset deploys solo-provisioner's stale template plugins.names instead of the chart default
- Dominant language
- Go
- Stars
- 3
- Forks
- 0
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 46
Description
## Problem
The `--plugin-preset=none` option (TUI label "Use Values File / Chart Default — no override") is meant to leave `plugins.names` entirely to the operator's `--values` file or, absent that, the block-node chart's own default. It does not currently do the latter.
`ComputeValuesFile` (`internal/blocknode/values.go`) renders solo-provisioner's embedded values template (`internal/templates/files/block-node/full-values.yaml`, `nano-values.yaml`), and that template **hardcodes its own `plugins.names`**. For the `none` preset, `injectPluginsConfig` is a no-op (it only sets `plugins.names` when the resolved list is non-empty), so the template's value survives into the computed values file passed to Helm via `-f`. Because `-f` values override the chart's packaged `values.yaml`, the chart's own default never applies.
Concretely, `--plugin-preset=none` with no `--values` deploys solo-provisioner's template list:
```
facility-messaging,block-access-service,health,server-status,stream-publisher,stream-subscriber,verification,blocks-file-historic,blocks-file-recent,backfill
```
— a stale 10-plugin list that omits `roster-bootstrap-rsa`/`roster-bootstrap-tss` and diverges from the chart's own v0.37.1 default (12 plugins, in the chart's packaged `values.yaml`). So the "Chart Default" half of the label is inaccurate.
**Where the chart default lives:** inside the pulled chart artifact (`oci://ghcr.io/hiero-ledger/hiero-block-node/block-node-server:`), in its own `values.yaml`. Helm coalesces user-supplied `-f` values over that base, so a `plugins.names` absent from the `-f` file falls back to the chart's value. solo-provisioner neither stores nor reads it.
## Proposed fix
Remove the `plugins.names` line from `full-values.yaml` and `nano-values.yaml` (keep `mavenImage`, `repositories`, etc.). Then, for `none` + no `--values`, the computed `-f` file carries no `plugins.names`, and Helm falls back to the chart's own default — automatically version-correct and matching the label. Other paths are unaffected because they explicitly write `plugins.names`:
- known presets (`tier1-lfh` / `tier1-rfh`) via `injectPluginsConfig`;
- `--plugins` or a `--values` file that defines `plugins.names`, via the operator's list.
## Acceptance
- [ ] `block node install --plugin-preset=none` with no `--values` → `helm get values block-node -n block-node --all` shows the **chart's own** default `plugins.names` (not solo-provisioner's template list). Use `--all`: plain `helm get values` shows only the user-supplied layer, which after the fix won't contain `plugins.names`.
- [ ] `--plugin-preset=none` with a `--values` file defining `plugins.names` → operator's list deployed unchanged.
- [ ] `tier1-lfh` / `tier1-rfh` presets and `--plugins` still inject their lists exactly as before (no regression).
## Context
Found while implementing #829 / #872 (adding `roster-bootstrap` to the 0.37.1 presets). Not a regression from those PRs — the template `plugins.names` predates them — but the divergence became visible once the presets were refreshed for 0.37.1. The team has decided **against** dynamically sourcing the plugin list from the block-node version, so this fix (delegating the no-override case to the chart's own default) is the agreed direction rather than a version-aware fetch.
Contributor guide
Research direction
Start with ComputeValuesFile in internal/blocknode/values.go and the plugins.names entries in internal/templates/files/block-node/full-values.yaml and nano-values.yaml. Remove the template-level entries, then validate the documented helm get values command for the none preset and confirm explicit values and preset/plugin list injection remain unchanged.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, kubernetes
- Domain
- devops, infrastructure
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 76/100