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

closes #17320
This commit is contained in:
Augustin Husson 2019-06-04 22:23:08 +02:00 committed by Carl Bergquist
parent 87760d4fde
commit c8382ba435
2 changed files with 9 additions and 5 deletions

View File

@ -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)
}
}

View File

@ -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)