diff --git a/pkg/plugins/dashboard_importer.go b/pkg/plugins/dashboard_importer.go index 874b4ac4a0e..bf516818e3c 100644 --- a/pkg/plugins/dashboard_importer.go +++ b/pkg/plugins/dashboard_importer.go @@ -49,10 +49,6 @@ func ImportDashboard(cmd *ImportDashboardCommand) error { if dashboard, err = loadPluginDashboard(cmd.PluginId, cmd.Path); err != nil { return err } - - if err = createDashboardFolderForPlugin(cmd, dashboard); err != nil { - return err - } } else { dashboard = m.NewDashboardFromJson(cmd.Dashboard) } @@ -93,63 +89,6 @@ func ImportDashboard(cmd *ImportDashboardCommand) error { return nil } -func createDashboardFolderForPlugin(cmd *ImportDashboardCommand, dashboard *m.Dashboard) error { - var err error - var plugin *PluginBase - - if plugin, err = getPlugin(cmd.PluginId); err != nil { - return err - } - - var pluginType string - - if plugin.Type == "datasource" { - pluginType = "Datasource" - } else if plugin.Type == "app" { - pluginType = "App" - } - - folderTitle := fmt.Sprint(pluginType, ": ", plugin.Name) - - folderDash := simplejson.NewFromAny(map[string]interface{}{ - "schemaVersion": 16, - "title": folderTitle, - "editable": true, - "hideControls": true, - }) - - saveCmd := m.SaveDashboardCommand{ - Dashboard: folderDash, - OrgId: cmd.OrgId, - UserId: cmd.UserId, - PluginId: cmd.PluginId, - IsFolder: true, - } - - dashModel := saveCmd.GetDashboardModel() - - getDashboardQuery := m.GetDashboardQuery{ - OrgId: cmd.OrgId, - Slug: dashModel.Slug, - } - - if err := bus.Dispatch(&getDashboardQuery); err != nil { - return err - } - - if getDashboardQuery.Result != nil { - dashboard.FolderId = getDashboardQuery.Result.Id - return nil - } - - if err := bus.Dispatch(&saveCmd); err != nil { - return err - } - - dashboard.FolderId = saveCmd.Result.Id - return nil -} - type DashTemplateEvaluator struct { template *simplejson.Json inputs []ImportDashboardInput diff --git a/pkg/plugins/dashboard_importer_test.go b/pkg/plugins/dashboard_importer_test.go index 26b5c7ab072..78df94309f8 100644 --- a/pkg/plugins/dashboard_importer_test.go +++ b/pkg/plugins/dashboard_importer_test.go @@ -13,32 +13,12 @@ import ( ) func TestDashboardImport(t *testing.T) { - - Convey("When importing plugin dashboard", t, func() { - setting.Cfg = ini.Empty() - sec, _ := setting.Cfg.NewSection("plugin.test-app") - sec.NewKey("path", "../../tests/test-app") - err := Init() - - So(err, ShouldBeNil) - - folderId := int64(1000) + pluginScenario("When importing a plugin dashboard", t, func() { var importedDash *m.Dashboard - var createdFolder *m.Dashboard + bus.AddHandler("test", func(cmd *m.SaveDashboardCommand) error { - if cmd.IsFolder { - createdFolder = cmd.GetDashboardModel() - createdFolder.Id = folderId - cmd.Result = createdFolder - } else { - importedDash = cmd.GetDashboardModel() - cmd.Result = importedDash - } - - return nil - }) - - bus.AddHandler("test", func(cmd *m.GetDashboardQuery) error { + importedDash = cmd.GetDashboardModel() + cmd.Result = importedDash return nil }) @@ -52,7 +32,7 @@ func TestDashboardImport(t *testing.T) { }, } - err = ImportDashboard(&cmd) + err := ImportDashboard(&cmd) So(err, ShouldBeNil) Convey("should install dashboard", func() { @@ -67,78 +47,6 @@ func TestDashboardImport(t *testing.T) { panel := importedDash.Data.Get("rows").GetIndex(0).Get("panels").GetIndex(0) So(panel.Get("datasource").MustString(), ShouldEqual, "graphite") - - So(importedDash.FolderId, ShouldEqual, folderId) - }) - - Convey("should create app folder", func() { - So(createdFolder.Title, ShouldEqual, "App: Test App") - So(createdFolder.Id, ShouldEqual, folderId) - }) - }) - - Convey("When re-importing plugin dashboard", t, func() { - setting.Cfg = ini.Empty() - sec, _ := setting.Cfg.NewSection("plugin.test-app") - sec.NewKey("path", "../../tests/test-app") - err := Init() - - So(err, ShouldBeNil) - - folderId := int64(1000) - var importedDash *m.Dashboard - var createdFolder *m.Dashboard - bus.AddHandler("test", func(cmd *m.SaveDashboardCommand) error { - if cmd.IsFolder { - cmd.Result = cmd.GetDashboardModel() - } else { - importedDash = cmd.GetDashboardModel() - cmd.Result = importedDash - } - - return nil - }) - - bus.AddHandler("test", func(cmd *m.GetDashboardQuery) error { - cmd.Result = &m.Dashboard{ - Id: 1000, - Title: "Something", - } - - return nil - }) - - cmd := ImportDashboardCommand{ - PluginId: "test-app", - Path: "dashboards/connections.json", - OrgId: 1, - UserId: 1, - Inputs: []ImportDashboardInput{ - {Name: "*", Type: "datasource", Value: "graphite"}, - }, - } - - err = ImportDashboard(&cmd) - So(err, ShouldBeNil) - - Convey("should install dashboard", func() { - So(importedDash, ShouldNotBeNil) - - resultStr, _ := importedDash.Data.EncodePretty() - expectedBytes, _ := ioutil.ReadFile("../../tests/test-app/dashboards/connections_result.json") - expectedJson, _ := simplejson.NewJson(expectedBytes) - expectedStr, _ := expectedJson.EncodePretty() - - So(string(resultStr), ShouldEqual, string(expectedStr)) - - panel := importedDash.Data.Get("rows").GetIndex(0).Get("panels").GetIndex(0) - So(panel.Get("datasource").MustString(), ShouldEqual, "graphite") - - So(importedDash.FolderId, ShouldEqual, folderId) - }) - - Convey("should not create app folder", func() { - So(createdFolder, ShouldBeNil) }) }) @@ -177,3 +85,16 @@ func TestDashboardImport(t *testing.T) { }) } + +func pluginScenario(desc string, t *testing.T, fn func()) { + Convey("Given a plugin", t, func() { + setting.Cfg = ini.Empty() + sec, _ := setting.Cfg.NewSection("plugin.test-app") + sec.NewKey("path", "../../tests/test-app") + err := Init() + + So(err, ShouldBeNil) + + Convey(desc, fn) + }) +} diff --git a/pkg/plugins/dashboards.go b/pkg/plugins/dashboards.go index 2214ad6e213..37e3d8c0076 100644 --- a/pkg/plugins/dashboards.go +++ b/pkg/plugins/dashboards.go @@ -108,13 +108,3 @@ func loadPluginDashboard(pluginId, path string) (*m.Dashboard, error) { return m.NewDashboardFromJson(data), nil } - -func getPlugin(pluginId string) (*PluginBase, error) { - plugin, exists := Plugins[pluginId] - - if !exists { - return nil, PluginNotFoundError{pluginId} - } - - return plugin, nil -}