From fd4e08e318b1c19aeb75743b9a604c23deb959aa Mon Sep 17 00:00:00 2001 From: Ryan McKinley Date: Mon, 17 Mar 2025 20:01:29 +0300 Subject: [PATCH] K8s/Dashboards: Remove slug annotation (#102270) --- pkg/apimachinery/utils/meta.go | 12 ---------- .../dashboards/service/dashboard_service.go | 3 ++- public/app/features/apiserver/types.ts | 22 ++++++++++++++----- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/pkg/apimachinery/utils/meta.go b/pkg/apimachinery/utils/meta.go index 53cb66fca4a..c285c202bc7 100644 --- a/pkg/apimachinery/utils/meta.go +++ b/pkg/apimachinery/utils/meta.go @@ -35,7 +35,6 @@ const AnnoKeyCreatedBy = "grafana.app/createdBy" const AnnoKeyUpdatedTimestamp = "grafana.app/updatedTimestamp" const AnnoKeyUpdatedBy = "grafana.app/updatedBy" const AnnoKeyFolder = "grafana.app/folder" -const AnnoKeySlug = "grafana.app/slug" const AnnoKeyBlob = "grafana.app/blob" const AnnoKeyMessage = "grafana.app/message" @@ -88,9 +87,6 @@ type GrafanaMetaAccessor interface { SetMessage(msg string) SetAnnotation(key string, val string) - GetSlug() string - SetSlug(v string) - SetBlob(v *BlobInfo) GetBlob() *BlobInfo @@ -270,14 +266,6 @@ func (m *grafanaMetaAccessor) SetMessage(uid string) { m.SetAnnotation(AnnoKeyMessage, uid) } -func (m *grafanaMetaAccessor) GetSlug() string { - return m.get(AnnoKeySlug) -} - -func (m *grafanaMetaAccessor) SetSlug(v string) { - m.SetAnnotation(AnnoKeySlug, v) -} - // This will be removed in Grafana 13. Do not add any new usage of it. func (m *grafanaMetaAccessor) GetDeprecatedInternalID() int64 { labels := m.obj.GetLabels() diff --git a/pkg/services/dashboards/service/dashboard_service.go b/pkg/services/dashboards/service/dashboard_service.go index cd55eb029e2..ad6c51afde2 100644 --- a/pkg/services/dashboards/service/dashboard_service.go +++ b/pkg/services/dashboards/service/dashboard_service.go @@ -1949,11 +1949,12 @@ func (dr *DashboardServiceImpl) UnstructuredToLegacyDashboard(ctx context.Contex dashVersion := obj.GetGeneration() spec["version"] = dashVersion + title, _, _ := unstructured.NestedString(spec, "title") out := dashboards.Dashboard{ OrgID: orgID, ID: obj.GetDeprecatedInternalID(), // nolint:staticcheck UID: uid, - Slug: obj.GetSlug(), + Slug: slugify.Slugify(title), FolderUID: obj.GetFolder(), Version: int(dashVersion), Data: simplejson.NewFromAny(spec), diff --git a/public/app/features/apiserver/types.ts b/public/app/features/apiserver/types.ts index 6df2e903ca0..06199f6d677 100644 --- a/public/app/features/apiserver/types.ts +++ b/public/app/features/apiserver/types.ts @@ -37,11 +37,7 @@ export const AnnoKeyCreatedBy = 'grafana.app/createdBy'; export const AnnoKeyUpdatedTimestamp = 'grafana.app/updatedTimestamp'; export const AnnoKeyUpdatedBy = 'grafana.app/updatedBy'; export const AnnoKeyFolder = 'grafana.app/folder'; -export const AnnoKeyFolderTitle = 'grafana.app/folderTitle'; -export const AnnoKeyFolderId = 'grafana.app/folderId'; -export const AnnoKeyFolderUrl = 'grafana.app/folderUrl'; export const AnnoKeyMessage = 'grafana.app/message'; -export const AnnoKeySlug = 'grafana.app/slug'; export enum ManagerKind { Repo = 'repo', @@ -56,12 +52,25 @@ export const AnnoKeySourcePath = 'grafana.app/sourcePath'; export const AnnoKeySourceChecksum = 'grafana.app/sourceChecksum'; export const AnnoKeySourceTimestamp = 'grafana.app/sourceTimestamp'; +// for auditing... when saving from the UI, mark which version saved it from where export const AnnoKeySavedFromUI = 'grafana.app/saved-from-ui'; -export const AnnoKeyDashboardNotFound = 'grafana.app/dashboard-not-found'; + +/** @deprecated NOT A REAL annotation -- this is just a shim */ +export const AnnoKeySlug = 'grafana.app/slug'; +/** @deprecated NOT A REAL annotation -- this is just a shim */ export const AnnoKeyDashboardIsSnapshot = 'grafana.app/dashboard-is-snapshot'; +/** @deprecated NOT A REAL annotation -- this is just a shim */ export const AnnoKeyDashboardSnapshotOriginalUrl = 'grafana.app/dashboard-snapshot-original-url'; +/** @deprecated NOT A REAL annotation -- this is just a shim */ export const AnnoKeyDashboardGnetId = 'grafana.app/dashboard-gnet-id'; +/** @deprecated NOT A REAL annotation -- this is just a shim */ +export const AnnoKeyFolderTitle = 'grafana.app/folderTitle'; +/** @deprecated NOT A REAL annotation -- this is just a shim */ +export const AnnoKeyFolderId = 'grafana.app/folderId'; +/** @deprecated NOT A REAL annotation -- this is just a shim */ +export const AnnoKeyFolderUrl = 'grafana.app/folderUrl'; + // labels export const DeprecatedInternalId = 'grafana.app/deprecatedInternalID'; @@ -71,7 +80,6 @@ type GrafanaAnnotations = { [AnnoKeyUpdatedTimestamp]?: string; [AnnoKeyUpdatedBy]?: string; [AnnoKeyFolder]?: string; - [AnnoKeySlug]?: string; [AnnoKeyManagerKind]?: ManagerKind; [AnnoKeyManagerIdentity]?: string; @@ -83,6 +91,8 @@ type GrafanaAnnotations = { // Annotations provided by the front-end client type GrafanaClientAnnotations = { [AnnoKeyMessage]?: string; + + [AnnoKeySlug]?: string; [AnnoKeyFolderTitle]?: string; [AnnoKeyFolderUrl]?: string; [AnnoKeyFolderId]?: number;