From 5da3276db14078ceff7a7a8bf3affa96971909ff Mon Sep 17 00:00:00 2001 From: Kirchen99 Date: Mon, 17 Aug 2020 21:00:10 +0200 Subject: [PATCH] Dashboard: Use same min refresh interval fallback in the API as in provisioning (#25926) * Dashboard: Solve the discrepancy between provisioning and the API, Handle min refresh interval when creating/updating dashboard via API * Docs: Add refresh field in the example dashboard http api docs * Update create dashboard API docs Add refresh field in the create dashboard example response * Fix create dashboard API docs * Fix create dashboard API docs * Update docs/sources/http_api/dashboard.md Co-authored-by: Sofia Papagiannaki Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com> --- docs/sources/http_api/dashboard.md | 4 +++- pkg/services/dashboards/dashboard_service.go | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/sources/http_api/dashboard.md b/docs/sources/http_api/dashboard.md index 7bb85c38986..8fdbbf8df29 100644 --- a/docs/sources/http_api/dashboard.md +++ b/docs/sources/http_api/dashboard.md @@ -44,7 +44,8 @@ Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk "tags": [ "templated" ], "timezone": "browser", "schemaVersion": 16, - "version": 0 + "version": 0, + "refresh": "25s" }, "folderId": 0, "overwrite": false @@ -59,6 +60,7 @@ JSON Body schema: - **folderId** – The id of the folder to save the dashboard in. - **overwrite** – Set to true if you want to overwrite existing dashboard with newer version, same dashboard title in folder or same dashboard uid. - **message** - Set a commit message for the version history. +- **refresh** - Set the dashboard refresh interval. If this is lower than [the minimum refresh interval]({{< relref "../administration/configuration.md#min_refresh_interval">}}), then Grafana will ignore it and will enforce the minimum refresh interval. For adding or updating an alert rule for a dashboard panel the user should declare a `dashboard.panels.alert` block. diff --git a/pkg/services/dashboards/dashboard_service.go b/pkg/services/dashboards/dashboard_service.go index 0674e74c115..6b1b999dc5f 100644 --- a/pkg/services/dashboards/dashboard_service.go +++ b/pkg/services/dashboards/dashboard_service.go @@ -277,6 +277,11 @@ func (dr *dashboardServiceImpl) SaveFolderForProvisionedDashboards(dto *SaveDash } func (dr *dashboardServiceImpl) SaveDashboard(dto *SaveDashboardDTO, allowUiUpdate bool) (*models.Dashboard, error) { + if err := validateDashboardRefreshInterval(dto.Dashboard); err != nil { + dr.log.Warn("Changing refresh interval for imported dashboard to minimum refresh interval", "dashboardUid", dto.Dashboard.Uid, "dashboardTitle", dto.Dashboard.Title, "minRefreshInterval", setting.MinRefreshInterval) + dto.Dashboard.Data.Set("refresh", setting.MinRefreshInterval) + } + cmd, err := dr.buildSaveDashboardCommand(dto, true, !allowUiUpdate) if err != nil { return nil, err