feat/cluster-dashboard #250

Merged
stremblay merged 19 commits from feat/cluster-dashboard into master 2026-04-16 19:48:22 +00:00

19 Commits

Author SHA1 Message Date
b87b8a7667 fix: adding missing file
All checks were successful
Run Check Script / check (pull_request) Successful in 2m29s
2026-04-16 15:38:44 -04:00
bcacd3b51f fix: workspace issues in Cargo.toml files
Some checks failed
Run Check Script / check (pull_request) Failing after 31s
2026-04-16 15:23:34 -04:00
de7fe19b9b Merge branch 'master' into feat/cluster-dashboard 2026-04-16 15:09:27 -04:00
a935dba8e8 move some files around...
Some checks failed
Run Check Script / check (pull_request) Failing after 10s
2026-04-16 14:59:12 -04:00
4985109ef3 fix: formatting
Some checks failed
Run Check Script / check (pull_request) Failing after 12s
2026-04-16 14:55:40 -04:00
dd587d856d feat(grafana): auto-detect cluster type and expose Grafana via Route or Ingress
Some checks failed
Run Check Script / check (pull_request) Failing after 11s
- Move domain-resolution logic from `K8sAnywhereTopology::get_domain`
    to `K8sClient::get_domain()` in `harmony-k8s` so both
    `K8sAnywhereTopology` and `HAClusterTopology` can resolve hostnames
    without requiring the `Ingress` trait bound.
  - `ClusterDashboardsScore::create_grafana` now auto-detects the k8s
    distribution: OpenShift → `.spec.route` on the Grafana CR (as
    before), non-OpenShift → `.spec.ingress` with hostname from
    `K8sClient::get_domain`.
  - Add typed `GrafanaIngress` sub-tree to `crd_grafana.rs` matching the
    upstream CRD's standard k8s IngressSpec shape.
  - `K8sAnywhereTopology::get_domain` retains its k3d shortcut, then
    delegates to the client for all other cases.
2026-04-16 07:41:09 -04:00
8ad447c42a refactor(grafana): use typed CRs, audit crd_grafana against upstream
Some checks failed
Run Check Script / check (pull_request) Failing after 21s
- Rewrite `GrafanaSpec` to match the real
    `grafanas.grafana.integreatly.org/v1beta1` schema (verified against
    the live CRD). Drop non-existent fields (top-level `admin_user`/
    `admin_password`, `ingress{enabled,hosts}`, `persistence`, top-level
    `resources`). Model `.spec.config` as nested `BTreeMap` to preserve
    arbitrary `grafana.ini` sections (including `auth.anonymous`). Add
    narrow `deployment` and `route` sub-trees.
  - Replace raw-YAML + `apply_dynamic` in `cluster_dashboards` with
    typed CRs applied via `K8sResourceScore::single`. Migrate the two
    all-`None` `GrafanaSpec` call sites to `GrafanaSpec::default()`.
  - Flag `rhob_grafana.rs` as a stale duplicate with a module-level
    warning; keep it in place since its only caller passes all `None`.
2026-04-15 13:48:07 -04:00
7f25007c3b feat(grafana): standalone example + OCP-aware operator install
Some checks failed
Run Check Script / check (pull_request) Failing after 27s
- Add `examples/grafana` demonstrating a standalone Grafana install via
    the existing helm-chart score, with chart version pinned and an env.sh
  - Add `chart_version` parameter to `grafana_helm_chart_score`
  - Introduce `GrafanaOperatorScore`: composite score that auto-detects
    OpenShift (via `K8sClient::get_k8s_distribution`) and applies the
    `route.openshift.io` ClusterRole/Binding the operator needs before
    running the helm install
  - Make `HelmChartInterpret` idempotent on re-run: if the release is
    already at the requested chart version, warn and skip; if at a
    different version, refuse rather than silently upgrade
  - Hand Route ownership to grafana-operator in `ClusterDashboardsScore`
    by adding `.spec.route` to the Grafana CR and dropping the manual
    Route creation
  - Rename the Grafana-to-Prometheus ServiceAccount from
    `cluster-grafana-sa` to `grafana-prometheus-datasource-sa` to avoid
    a collision with the SA grafana-operator creates for the Grafana pod
2026-04-15 12:45:58 -04:00
b1ff4e4a0f feat: add json versions of dashboards
Some checks failed
Run Check Script / check (pull_request) Failing after 30s
2026-04-03 14:08:24 -04:00
ee8f033143 feat: add the route creation to the score
Some checks failed
Run Check Script / check (pull_request) Failing after 16s
2026-03-15 18:00:26 -04:00
1298ac9a18 feat: all 8 dashboards now available 2026-03-15 17:34:22 -04:00
53e361e84e feat: create a dashboard. needs refactoring for multiple dashboards 2026-03-15 16:42:40 -04:00
220e0c2bb8 feat: add creation of the prometheus datasource 2026-03-15 14:34:29 -04:00
82e47d22a2 feat: add creation of the secret with the token to access prometheus datasource 2026-03-15 14:01:55 -04:00
fb17d7ed40 feat: add creation of grafana crd 2026-03-15 13:43:17 -04:00
d4bf80779e chore: refactor: extracting stuff into functions 2026-03-14 14:29:31 -04:00
28dadf3a70 feat: starting to implement score for cluster_dashboards 2026-03-14 14:07:47 -04:00
15c454aa65 feat: creating dashboards 2026-03-14 12:02:35 -04:00
f9a3e51529 wip: working on cluster monitoring dashboard 2026-03-13 16:46:39 -04:00