fix(#3471): keep Metrics Drilldown, which declarativePlugins had silently removed
Setting declarativePlugins to any list -- the empty one included -- also sets upstream's plugins.preinstall_disabled, which nixpkgs defaults to declarativePlugins != null. Preinstall is what fetches the Drilldown apps on first start, so claiming the plugin directory removed them without touching anything a person had installed. The comment above that line reasoned about the plugin path and the update check and never about preinstall, and its closing claim -- nothing is taken over on a hive with no plugins -- was true only of plugins a PERSON installs. Upstream installs some itself, and those are the ones that went missing. Listing it as a package is better than the preinstall it replaces: store pinned, no runtime fetch from grafana.com, survives a state reset. Its Logs/Traces/Profiles siblings stay off -- they front Loki, Tempo and Pyroscope, none of which this swarm runs.
This commit is contained in:
parent
72b2a0357b
commit
5e6f26f209
1 changed files with 26 additions and 7 deletions
|
|
@ -177,7 +177,8 @@ in
|
||||||
|
|
||||||
plugins = lib.mkOption {
|
plugins = lib.mkOption {
|
||||||
type = lib.types.listOf lib.types.package;
|
type = lib.types.listOf lib.types.package;
|
||||||
default = [ ];
|
default = [ pkgs.grafanaPlugins.grafana-metricsdrilldown-app ];
|
||||||
|
defaultText = lib.literalExpression "[ pkgs.grafanaPlugins.grafana-metricsdrilldown-app ]";
|
||||||
example = lib.literalExpression "[ pkgs.grafanaPlugins.grafana-piechart-panel ]";
|
example = lib.literalExpression "[ pkgs.grafanaPlugins.grafana-piechart-panel ]";
|
||||||
description = ''
|
description = ''
|
||||||
Grafana plugins to install, as packages. Declarative rather than
|
Grafana plugins to install, as packages. Declarative rather than
|
||||||
|
|
@ -193,9 +194,18 @@ in
|
||||||
and in git, so they survive a container rebuild and a state reset,
|
and in git, so they survive a container rebuild and a state reset,
|
||||||
and the container needs no runtime egress to grafana.com.
|
and the container needs no runtime egress to grafana.com.
|
||||||
|
|
||||||
Empty by default, which leaves grafana's own plugin handling
|
⚠️ This list is the ONLY way a plugin reaches this Grafana.
|
||||||
untouched. Setting it takes over the plugin directory entirely —
|
Setting it at all disables upstream's `preinstall` mechanism (see
|
||||||
anything installed by other means stops being visible.
|
the `declarativePlugins` comment below), which is what normally
|
||||||
|
fetches the Drilldown apps on first start — so a plugin left off
|
||||||
|
this list is absent, not merely un-pinned.
|
||||||
|
|
||||||
|
Metrics Drilldown is on by default because this swarm's Grafana
|
||||||
|
exists to read VictoriaMetrics, and the queryless metrics browser
|
||||||
|
is the part of that people actually reach for. Its Logs / Traces /
|
||||||
|
Profiles siblings are deliberately NOT here: they front Loki,
|
||||||
|
Tempo and Pyroscope, none of which this swarm runs, so they would
|
||||||
|
install a UI for a backend that does not answer.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -475,9 +485,18 @@ in
|
||||||
# property this option exists for — it should not arrive only
|
# property this option exists for — it should not arrive only
|
||||||
# once a plugin happens to be listed.
|
# once a plugin happens to be listed.
|
||||||
#
|
#
|
||||||
# Nothing is taken over by claiming the directory on a hive with no
|
# - 🩸 and the one this comment used to miss: it also sets
|
||||||
# plugins: manual installation is already impossible here (see the
|
# upstream's `plugins.preinstall_disabled` (nixpkgs'
|
||||||
# option's description), so there is nothing in it to lose.
|
# grafana.nix defaults it to `declarativePlugins != null`,
|
||||||
|
# saying preinstall "causes issues with declarativePlugins").
|
||||||
|
# Preinstall is what fetches the Drilldown apps on first
|
||||||
|
# start, so claiming this directory silently removes them.
|
||||||
|
# That is why the option's default is not empty.
|
||||||
|
#
|
||||||
|
# The claim that used to sit here — "nothing is taken over on a
|
||||||
|
# hive with no plugins, manual installation is impossible anyway"
|
||||||
|
# — reasoned only about plugins a PERSON installs. Upstream
|
||||||
|
# installs some itself, and those are the ones that went missing.
|
||||||
declarativePlugins = cfg.plugins;
|
declarativePlugins = cfg.plugins;
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue