From 3d4810c1458056988f329358942b5e3cbfea35a1 Mon Sep 17 00:00:00 2001 From: Chris Grindstaff Date: Mon, 3 Jun 2024 12:06:00 -0400 Subject: [PATCH] fix: Harvest should log errors when grafana import fails Thanks to Chris Gautcher (@gautcher) for raising. --- cmd/tools/grafana/grafana.go | 15 +++++++++------ integration/test/dashboard_test.go | 2 +- integration/test/grafana/grafana_mgr.go | 8 ++------ 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/cmd/tools/grafana/grafana.go b/cmd/tools/grafana/grafana.go index 6e00e2ac5..86d2cf59c 100644 --- a/cmd/tools/grafana/grafana.go +++ b/cmd/tools/grafana/grafana.go @@ -380,7 +380,7 @@ func doImport(_ *cobra.Command, _ []string) { opts.command = "import" _, err := conf.LoadHarvestConfig(opts.config) if err != nil { - return + printErrorAndExit(err) } adjustOptions() @@ -392,6 +392,11 @@ func doImport(_ *cobra.Command, _ []string) { importDashboards(opts) } +func printErrorAndExit(err error) { + fmt.Println(err) + os.Exit(1) +} + func validateImport() { // default case if opts.dir == "" && opts.serverfolder.name == "" { @@ -418,7 +423,7 @@ func initImportVars() { switch { case opts.dir == "grafana/dashboards" && opts.serverfolder.name == "": m[filepath.Join(opts.dir, "cmode")] = &Folder{name: "Harvest-" + harvestRelease + "-cDOT"} - m[filepath.Join(opts.dir, "cmode", "details")] = &Folder{name: "Harvest-" + harvestRelease + "-cDOT Details"} + m[filepath.Join(opts.dir, "cmode-details")] = &Folder{name: "Harvest-" + harvestRelease + "-cDOT Details"} m[filepath.Join(opts.dir, "7mode")] = &Folder{name: "Harvest-" + harvestRelease + "-7mode"} m[filepath.Join(opts.dir, "storagegrid")] = &Folder{name: "Harvest-" + harvestRelease + "-StorageGrid"} case opts.dir != "" && opts.serverfolder.name != "": @@ -431,8 +436,7 @@ func initImportVars() { if opts.customizeDir == "" { err := checkAndCreateServerFolder(v) if err != nil { - fmt.Print(err) - os.Exit(1) + printErrorAndExit(err) } } opts.dirGrafanaFolderMap[k] = v @@ -488,8 +492,7 @@ func importFiles(dir string, folder *Folder) { return } if files, err = os.ReadDir(dir); err != nil { - // TODO check for not exist - return + printErrorAndExit(err) } for _, file := range files { diff --git a/integration/test/dashboard_test.go b/integration/test/dashboard_test.go index cf9b304cc..4ccba0f17 100644 --- a/integration/test/dashboard_test.go +++ b/integration/test/dashboard_test.go @@ -40,7 +40,7 @@ func TestGrafanaAndPrometheusAreConfigured(t *testing.T) { cDotFolder = "Harvest-" + version.VERSION + "-cDOT" sevenModeFolder = "Harvest-" + version.VERSION + "-7mode" log.Info().Str("cMode", cDotFolder).Str("7mode", sevenModeFolder).Msg("Folder name details") - status, out := new(grafana.Mgr).Import("") // send empty so that it will import all dashboards + status, out := new(grafana.Mgr).Import() if !status { t.Errorf("Grafana import operation failed out=%s", out) } diff --git a/integration/test/grafana/grafana_mgr.go b/integration/test/grafana/grafana_mgr.go index 2ce0dfaff..de379f780 100644 --- a/integration/test/grafana/grafana_mgr.go +++ b/integration/test/grafana/grafana_mgr.go @@ -12,7 +12,7 @@ import ( type Mgr struct { } -func (g *Mgr) Import(jsonDir string) (bool, string) { +func (g *Mgr) Import() (bool, string) { var ( importOutput string status bool @@ -31,15 +31,11 @@ func (g *Mgr) Import(jsonDir string) (bool, string) { if err != nil { panic(err) } - directoryOption := "" - if jsonDir != "" { - directoryOption = "--directory" - } grafanaURL := utils.GetGrafanaURL() if docker.IsDockerBasedPoller() { grafanaURL = "grafana:3000" } - importCmds := []string{"grafana", "import", "--overwrite", "--addr", grafanaURL, directoryOption, jsonDir} + importCmds := []string{"grafana", "import", "--overwrite", "--addr", grafanaURL} if docker.IsDockerBasedPoller() { params := []string{"exec", containerIDs[0].ID, "bin/harvest"} params = append(params, importCmds...)