Give each Perses dashboard a unique metadata.name#2401
Merged
Conversation
Perses surfaces the dashboard model's metadata.name as .status.dashboard.id, so duplicate names made distinct dashboards collide on the same Perses dashboard (last writer wins). 16 groups of dashboards shared an opaque metadata.name copied from the Grafana source uid. Rename every dashboard metadata.name to kubedb-<db>-<type>, i.e. normalize(spec.display.name), which equals the PersesDashboard CR name the chart derives. 88 dashboards, all names now unique. Signed-off-by: Arnob Kumar Saha <arnob@appscode.com>
ArnobKumarSaha
added a commit
that referenced
this pull request
Jul 23, 2026
Perses surfaces the dashboard model's metadata.name as .status.dashboard.id, so duplicate names made distinct dashboards collide on the same Perses dashboard (last writer wins). 16 groups of dashboards shared an opaque metadata.name copied from the Grafana source uid. Rename every dashboard metadata.name to kubedb-<db>-<type>, i.e. normalize(spec.display.name), which equals the PersesDashboard CR name the chart derives. 88 dashboards, all names now unique. Signed-off-by: Arnob Kumar Saha <arnob@appscode.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Different
PersesDashboardCRs reported the same.status.dashboard.id(e.g.kubedb-mysql-podandkubedb-mariadb-podbothFktZiiOnz). That id is the dashboard model'smetadata.name, surfaced verbatim by the operator. Two dashboards with the same name land on the same Perses dashboard (scoped only by project + folder), so each colliding pair overwrote the other — one dashboard per group was effectively missing.Root cause:
percli migratecopies the Grafana sourceuidintometadata.name, and the source carried duplicate uids. 16 groups (~30 files) collided. (Grafana dashboards don't collide because the chart omitsuidand Grafana assigns its own id.)Fix
Rename every dashboard
metadata.nametokubedb-<db>-<type>=normalize(spec.display.name)(lower, strip spaces, split/, join-) — the exact rule the chart uses to derive thePersesDashboardCR name, sometadata.namenow equals the CR name. Only the model'smetadata.namechanges; display names, panels, and variables are untouched.Verification
helm templaterenders 88 models with 88 unique names, zero duplicates.opnpulse/grafana-dashboardssource data and theopnpulse/perses-dashboardsgenerator, so future migrations are collision-proof.