Forráskód Böngészése

Provisioning: Support folder that doesn't exist yet in dashboard provisioning (#17407)

closes #17320
Augustin Husson 6 éve
szülő
commit
c8382ba435

+ 8 - 2
pkg/services/provisioning/dashboards/dashboard.go

@@ -3,6 +3,7 @@ package dashboards
 import (
 	"context"
 	"fmt"
+	"os"
 
 	"github.com/grafana/grafana/pkg/infra/log"
 	"github.com/grafana/grafana/pkg/util/errutil"
@@ -38,8 +39,13 @@ func NewDashboardProvisionerImpl(configDirectory string) (*DashboardProvisionerI
 
 func (provider *DashboardProvisionerImpl) Provision() error {
 	for _, reader := range provider.fileReaders {
-		err := reader.startWalkingDisk()
-		if err != nil {
+		if err := reader.startWalkingDisk(); err != nil {
+			if os.IsNotExist(err) {
+				// don't stop the provisioning service in case the folder is missing. The folder can appear after the startup
+				provider.log.Warn("Failed to provision config", "name", reader.Cfg.Name, "error", err)
+				return nil
+			}
+
 			return errutil.Wrapf(err, "Failed to provision config %v", reader.Cfg.Name)
 		}
 	}

+ 1 - 3
pkg/services/provisioning/dashboards/file_reader.go

@@ -72,9 +72,7 @@ func (fr *fileReader) startWalkingDisk() error {
 	fr.log.Debug("Start walking disk", "path", fr.Path)
 	resolvedPath := fr.resolvedPath()
 	if _, err := os.Stat(resolvedPath); err != nil {
-		if os.IsNotExist(err) {
-			return err
-		}
+		return err
 	}
 
 	folderId, err := getOrCreateFolderId(fr.Cfg, fr.dashboardProvisioningService)