From 88df5db7109539fab1fc1d6445eee59ffbd5e0c2 Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Wed, 18 May 2022 11:02:49 -0400 Subject: [PATCH] LibraryPanels: Fix library panels not connecting properly in imported dashboards (#49161) (#49176) * Use saved dashboard model to create library panel connections when importing * Rename variables in dashboard import for clarity (cherry picked from commit 71e13053646e55c1aebb9ac7365e0ec760afcea9) Co-authored-by: Josh Hunt --- .../dashboardimport/service/service.go | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/pkg/services/dashboardimport/service/service.go b/pkg/services/dashboardimport/service/service.go index 7772a1ce4a3..4cb2f0cfe9f 100644 --- a/pkg/services/dashboardimport/service/service.go +++ b/pkg/services/dashboardimport/service/service.go @@ -42,7 +42,7 @@ type ImportDashboardService struct { } func (s *ImportDashboardService) ImportDashboard(ctx context.Context, req *dashboardimport.ImportDashboardRequest) (*dashboardimport.ImportDashboardResponse, error) { - var dashboard *models.Dashboard + var draftDashboard *models.Dashboard if req.PluginId != "" { loadReq := &plugindashboards.LoadPluginDashboardRequest{ PluginID: req.PluginId, @@ -51,13 +51,13 @@ func (s *ImportDashboardService) ImportDashboard(ctx context.Context, req *dashb if resp, err := s.pluginDashboardService.LoadPluginDashboard(ctx, loadReq); err != nil { return nil, err } else { - dashboard = resp.Dashboard + draftDashboard = resp.Dashboard } } else { - dashboard = models.NewDashboardFromJson(req.Dashboard) + draftDashboard = models.NewDashboardFromJson(req.Dashboard) } - evaluator := utils.NewDashTemplateEvaluator(dashboard.Data, req.Inputs) + evaluator := utils.NewDashTemplateEvaluator(draftDashboard.Data, req.Inputs) generatedDash, err := evaluator.Eval() if err != nil { return nil, err @@ -79,33 +79,33 @@ func (s *ImportDashboardService) ImportDashboard(ctx context.Context, req *dashb User: req.User, } - savedDash, err := s.dashboardService.ImportDashboard(ctx, dto) + savedDashboard, err := s.dashboardService.ImportDashboard(ctx, dto) if err != nil { return nil, err } - err = s.libraryPanelService.ImportLibraryPanelsForDashboard(ctx, req.User, savedDash, req.FolderId) + err = s.libraryPanelService.ImportLibraryPanelsForDashboard(ctx, req.User, savedDashboard, req.FolderId) if err != nil { return nil, err } - err = s.libraryPanelService.ConnectLibraryPanelsForDashboard(ctx, req.User, dashboard) + err = s.libraryPanelService.ConnectLibraryPanelsForDashboard(ctx, req.User, savedDashboard) if err != nil { return nil, err } return &dashboardimport.ImportDashboardResponse{ - UID: savedDash.Uid, + UID: savedDashboard.Uid, PluginId: req.PluginId, - Title: savedDash.Title, + Title: savedDashboard.Title, Path: req.Path, - Revision: savedDash.Data.Get("revision").MustInt64(1), - FolderId: savedDash.FolderId, - ImportedUri: "db/" + savedDash.Slug, - ImportedUrl: savedDash.GetUrl(), - ImportedRevision: dashboard.Data.Get("revision").MustInt64(1), + Revision: savedDashboard.Data.Get("revision").MustInt64(1), + FolderId: savedDashboard.FolderId, + ImportedUri: "db/" + savedDashboard.Slug, + ImportedUrl: savedDashboard.GetUrl(), + ImportedRevision: savedDashboard.Data.Get("revision").MustInt64(1), Imported: true, - DashboardId: savedDash.Id, - Slug: savedDash.Slug, + DashboardId: savedDashboard.Id, + Slug: savedDashboard.Slug, }, nil }