|
|
@@ -2,30 +2,40 @@ package provisioning
|
|
|
|
|
|
import (
|
|
|
"context"
|
|
|
+ "fmt"
|
|
|
"path"
|
|
|
- "path/filepath"
|
|
|
|
|
|
+ "github.com/grafana/grafana/pkg/registry"
|
|
|
"github.com/grafana/grafana/pkg/services/provisioning/dashboards"
|
|
|
"github.com/grafana/grafana/pkg/services/provisioning/datasources"
|
|
|
- ini "gopkg.in/ini.v1"
|
|
|
+ "github.com/grafana/grafana/pkg/setting"
|
|
|
)
|
|
|
|
|
|
-func Init(ctx context.Context, homePath string, cfg *ini.File) error {
|
|
|
- provisioningPath := makeAbsolute(cfg.Section("paths").Key("provisioning").String(), homePath)
|
|
|
+func init() {
|
|
|
+ registry.RegisterService(&ProvisioningService{})
|
|
|
+}
|
|
|
+
|
|
|
+type ProvisioningService struct {
|
|
|
+ Cfg *setting.Cfg `inject:""`
|
|
|
+}
|
|
|
|
|
|
- datasourcePath := path.Join(provisioningPath, "datasources")
|
|
|
+func (ps *ProvisioningService) Init() error {
|
|
|
+ datasourcePath := path.Join(ps.Cfg.ProvisioningPath, "datasources")
|
|
|
if err := datasources.Provision(datasourcePath); err != nil {
|
|
|
- return err
|
|
|
+ return fmt.Errorf("Datasource provisioning error: %v", err)
|
|
|
}
|
|
|
|
|
|
- dashboardPath := path.Join(provisioningPath, "dashboards")
|
|
|
- _, err := dashboards.Provision(ctx, dashboardPath)
|
|
|
- return err
|
|
|
+ return nil
|
|
|
}
|
|
|
|
|
|
-func makeAbsolute(path string, root string) string {
|
|
|
- if filepath.IsAbs(path) {
|
|
|
- return path
|
|
|
+func (ps *ProvisioningService) Run(ctx context.Context) error {
|
|
|
+ dashboardPath := path.Join(ps.Cfg.ProvisioningPath, "dashboards")
|
|
|
+ dashProvisioner := dashboards.NewDashboardProvisioner(dashboardPath)
|
|
|
+
|
|
|
+ if err := dashProvisioner.Provision(ctx); err != nil {
|
|
|
+ return err
|
|
|
}
|
|
|
- return filepath.Join(root, path)
|
|
|
+
|
|
|
+ <-ctx.Done()
|
|
|
+ return ctx.Err()
|
|
|
}
|