Dashboard: Fix dashboard slug for api V1 and V2 (#108475)
This commit is contained in:
@@ -144,6 +144,7 @@ describe('v1 dashboard API', () => {
|
||||
|
||||
const api = new K8sDashboardAPI();
|
||||
const result = await api.getDashboardDTO('test');
|
||||
expect(result.meta.slug).toBe('test');
|
||||
expect(result.meta.isFolder).toBe(false);
|
||||
expect(result.meta.folderId).toBe(1);
|
||||
expect(result.meta.folderTitle).toBe('New Folder');
|
||||
@@ -204,6 +205,7 @@ describe('v1 dashboard API', () => {
|
||||
});
|
||||
|
||||
expect(result.uid).toBe('adh59cn');
|
||||
expect(result.slug).toBe('new-dashboard-saved');
|
||||
expect(result.version).toBe(1);
|
||||
expect(result.url).toBe('/d/adh59cn/new-dashboard-saved');
|
||||
});
|
||||
@@ -229,6 +231,7 @@ describe('v1 dashboard API', () => {
|
||||
folderUid: 'test',
|
||||
});
|
||||
|
||||
expect(result.slug).toBe('new-dashboard-saved');
|
||||
expect(result.uid).toBe('adh59cn');
|
||||
expect(result.version).toBe(1);
|
||||
expect(result.url).toBe('/grafana/d/adh59cn/new-dashboard-saved');
|
||||
@@ -248,6 +251,7 @@ describe('v1 dashboard API', () => {
|
||||
});
|
||||
|
||||
expect(result.uid).toBe('adh59cn');
|
||||
expect(result.slug).toBe('new-dashboard-saved');
|
||||
expect(result.version).toBe(1);
|
||||
expect(result.url).toBe('/d/adh59cn/new-dashboard-saved');
|
||||
});
|
||||
@@ -274,6 +278,7 @@ describe('v1 dashboard API', () => {
|
||||
});
|
||||
|
||||
expect(result.uid).toBe('adh59cn');
|
||||
expect(result.slug).toBe('new-dashboard-saved');
|
||||
expect(result.version).toBe(1);
|
||||
expect(result.url).toBe('/grafana/d/adh59cn/new-dashboard-saved');
|
||||
});
|
||||
|
||||
@@ -86,11 +86,13 @@ export class K8sDashboardAPI implements DashboardAPI<DashboardDTO, Dashboard> {
|
||||
}
|
||||
|
||||
asSaveDashboardResponseDTO(v: Resource<DashboardDataDTO>): SaveDashboardResponseDTO {
|
||||
const slug = kbn.slugifyForUrl(v.spec.title.trim());
|
||||
|
||||
const url = locationUtil.assureBaseUrl(
|
||||
getDashboardUrl({
|
||||
uid: v.metadata.name,
|
||||
currentQueryParams: '',
|
||||
slug: kbn.slugifyForUrl(v.spec.title.trim()),
|
||||
slug,
|
||||
})
|
||||
);
|
||||
|
||||
@@ -100,7 +102,7 @@ export class K8sDashboardAPI implements DashboardAPI<DashboardDTO, Dashboard> {
|
||||
id: v.spec.id ?? 0,
|
||||
status: 'success',
|
||||
url,
|
||||
slug: '',
|
||||
slug,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -124,6 +126,7 @@ export class K8sDashboardAPI implements DashboardAPI<DashboardDTO, Dashboard> {
|
||||
const result: DashboardDTO = {
|
||||
meta: {
|
||||
...dash.access,
|
||||
slug: kbn.slugifyForUrl(dash.spec.title.trim()),
|
||||
isNew: false,
|
||||
isFolder: false,
|
||||
uid: dash.metadata.name,
|
||||
|
||||
@@ -178,7 +178,7 @@ describe('v2 dashboard API', () => {
|
||||
id: 123,
|
||||
uid: 'test-dash',
|
||||
url: '/d/test-dash/testdashboard',
|
||||
slug: '',
|
||||
slug: 'testdashboard',
|
||||
status: 'success',
|
||||
version: 2,
|
||||
});
|
||||
@@ -198,6 +198,7 @@ describe('v2 dashboard API', () => {
|
||||
name: 'existing-dash',
|
||||
},
|
||||
});
|
||||
expect(result.slug).toBe('chaingtitledashboard');
|
||||
expect(result.version).toBe(2);
|
||||
});
|
||||
|
||||
|
||||
@@ -73,6 +73,12 @@ export class K8sDashboardV2API
|
||||
dashboard.metadata.annotations[AnnoKeyFolder] = '';
|
||||
}
|
||||
|
||||
// Ensure a consistent dashboard slug
|
||||
if (!dashboard.access?.slug) {
|
||||
dashboard.access = dashboard.access ?? {};
|
||||
dashboard.access.slug = kbn.slugifyForUrl(dashboard.spec.title.trim());
|
||||
}
|
||||
|
||||
return dashboard;
|
||||
} catch (e) {
|
||||
const status = getStatusFromError(e);
|
||||
@@ -145,11 +151,13 @@ export class K8sDashboardV2API
|
||||
}
|
||||
|
||||
asSaveDashboardResponseDTO(v: Resource<DashboardV2Spec>): SaveDashboardResponseDTO {
|
||||
const slug = kbn.slugifyForUrl(v.spec.title.trim());
|
||||
|
||||
const url = locationUtil.assureBaseUrl(
|
||||
getDashboardUrl({
|
||||
uid: v.metadata.name,
|
||||
currentQueryParams: '',
|
||||
slug: kbn.slugifyForUrl(v.spec.title.trim()),
|
||||
slug,
|
||||
})
|
||||
);
|
||||
|
||||
@@ -164,7 +172,7 @@ export class K8sDashboardV2API
|
||||
id: dashId,
|
||||
status: 'success',
|
||||
url,
|
||||
slug: '',
|
||||
slug,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user