refactor: provisioning service refactoring

pull/11801/head
Torkel Ödegaard 8 years ago
parent 14bb7832af
commit 053c2039bb
  1. 11
      pkg/api/http_server.go
  2. 8
      pkg/cmd/grafana-server/server.go
  3. 2
      pkg/services/provisioning/dashboards/config_reader.go
  4. 7
      pkg/services/provisioning/dashboards/dashboard.go
  5. 36
      pkg/services/provisioning/provisioning.go
  6. 8
      pkg/setting/setting.go

@ -26,9 +26,14 @@ import (
"github.com/grafana/grafana/pkg/middleware" "github.com/grafana/grafana/pkg/middleware"
"github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/plugins" "github.com/grafana/grafana/pkg/plugins"
"github.com/grafana/grafana/pkg/registry"
"github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/setting"
) )
func init() {
registry.RegisterService(&HTTPServer{})
}
type HTTPServer struct { type HTTPServer struct {
log log.Logger log log.Logger
macaron *macaron.Macaron macaron *macaron.Macaron
@ -41,12 +46,14 @@ type HTTPServer struct {
Bus bus.Bus `inject:""` Bus bus.Bus `inject:""`
} }
func (hs *HTTPServer) Init() { func (hs *HTTPServer) Init() error {
hs.log = log.New("http.server") hs.log = log.New("http.server")
hs.cache = gocache.New(5*time.Minute, 10*time.Minute) hs.cache = gocache.New(5*time.Minute, 10*time.Minute)
return nil
} }
func (hs *HTTPServer) Start(ctx context.Context) error { func (hs *HTTPServer) Run(ctx context.Context) error {
var err error var err error
hs.context = ctx hs.context = ctx

@ -17,7 +17,6 @@ import (
"github.com/grafana/grafana/pkg/middleware" "github.com/grafana/grafana/pkg/middleware"
"github.com/grafana/grafana/pkg/registry" "github.com/grafana/grafana/pkg/registry"
"github.com/grafana/grafana/pkg/services/dashboards" "github.com/grafana/grafana/pkg/services/dashboards"
"github.com/grafana/grafana/pkg/services/provisioning"
"golang.org/x/sync/errgroup" "golang.org/x/sync/errgroup"
@ -37,6 +36,7 @@ import (
_ "github.com/grafana/grafana/pkg/services/alerting" _ "github.com/grafana/grafana/pkg/services/alerting"
_ "github.com/grafana/grafana/pkg/services/cleanup" _ "github.com/grafana/grafana/pkg/services/cleanup"
_ "github.com/grafana/grafana/pkg/services/notifications" _ "github.com/grafana/grafana/pkg/services/notifications"
_ "github.com/grafana/grafana/pkg/services/provisioning"
_ "github.com/grafana/grafana/pkg/services/search" _ "github.com/grafana/grafana/pkg/services/search"
) )
@ -75,10 +75,6 @@ func (g *GrafanaServerImpl) Start() error {
login.Init() login.Init()
social.NewOAuthService() social.NewOAuthService()
if err := provisioning.Init(g.context, setting.HomePath, g.cfg.Raw); err != nil {
return fmt.Errorf("Failed to provision Grafana from config. error: %v", err)
}
tracingCloser, err := tracing.Init(g.cfg.Raw) tracingCloser, err := tracing.Init(g.cfg.Raw)
if err != nil { if err != nil {
return fmt.Errorf("Tracing settings is not valid. error: %v", err) return fmt.Errorf("Tracing settings is not valid. error: %v", err)
@ -116,7 +112,7 @@ func (g *GrafanaServerImpl) Start() error {
g.log.Info("Initializing " + reflect.TypeOf(service).Elem().Name()) g.log.Info("Initializing " + reflect.TypeOf(service).Elem().Name())
if err := service.Init(); err != nil { if err := service.Init(); err != nil {
return fmt.Errorf("Service init failed %v", err) return fmt.Errorf("Service init failed: %v", err)
} }
} }

@ -69,7 +69,7 @@ func (cr *configReader) readConfig() ([]*DashboardsAsConfig, error) {
parsedDashboards, err := cr.parseConfigs(file) parsedDashboards, err := cr.parseConfigs(file)
if err != nil { if err != nil {
return nil, err
} }
if len(parsedDashboards) > 0 { if len(parsedDashboards) > 0 {

@ -10,19 +10,16 @@ import (
type DashboardProvisioner struct { type DashboardProvisioner struct {
cfgReader *configReader cfgReader *configReader
log log.Logger log log.Logger
ctx context.Context
} }
func Provision(ctx context.Context, configDirectory string) (*DashboardProvisioner, error) { func NewDashboardProvisioner(configDirectory string) *DashboardProvisioner {
log := log.New("provisioning.dashboard") log := log.New("provisioning.dashboard")
d := &DashboardProvisioner{ d := &DashboardProvisioner{
cfgReader: &configReader{path: configDirectory, log: log}, cfgReader: &configReader{path: configDirectory, log: log},
log: log, log: log,
ctx: ctx,
} }
err := d.Provision(ctx) return d
return d, err
} }
func (provider *DashboardProvisioner) Provision(ctx context.Context) error { func (provider *DashboardProvisioner) Provision(ctx context.Context) error {

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

@ -56,7 +56,6 @@ var (
HomePath string HomePath string
DataPath string DataPath string
PluginsPath string PluginsPath string
ProvisioningPath string
CustomInitPath = "conf/custom.ini" CustomInitPath = "conf/custom.ini"
// Log settings. // Log settings.
@ -187,6 +186,9 @@ var (
type Cfg struct { type Cfg struct {
Raw *ini.File Raw *ini.File
// Paths
ProvisioningPath string
// SMTP email settings // SMTP email settings
Smtp SmtpSettings Smtp SmtpSettings
@ -516,7 +518,7 @@ func (cfg *Cfg) Load(args *CommandLineArgs) error {
Env = iniFile.Section("").Key("app_mode").MustString("development") Env = iniFile.Section("").Key("app_mode").MustString("development")
InstanceName = iniFile.Section("").Key("instance_name").MustString("unknown_instance_name") InstanceName = iniFile.Section("").Key("instance_name").MustString("unknown_instance_name")
PluginsPath = makeAbsolute(iniFile.Section("paths").Key("plugins").String(), HomePath) PluginsPath = makeAbsolute(iniFile.Section("paths").Key("plugins").String(), HomePath)
ProvisioningPath = makeAbsolute(iniFile.Section("paths").Key("provisioning").String(), HomePath) cfg.ProvisioningPath = makeAbsolute(iniFile.Section("paths").Key("provisioning").String(), HomePath)
server := iniFile.Section("server") server := iniFile.Section("server")
AppUrl, AppSubUrl = parseAppUrlAndSubUrl(server) AppUrl, AppSubUrl = parseAppUrlAndSubUrl(server)
@ -719,6 +721,6 @@ func (cfg *Cfg) LogConfigSources() {
logger.Info("Path Data", "path", DataPath) logger.Info("Path Data", "path", DataPath)
logger.Info("Path Logs", "path", LogsPath) logger.Info("Path Logs", "path", LogsPath)
logger.Info("Path Plugins", "path", PluginsPath) logger.Info("Path Plugins", "path", PluginsPath)
logger.Info("Path Provisioning", "path", ProvisioningPath) logger.Info("Path Provisioning", "path", cfg.ProvisioningPath)
logger.Info("App mode " + Env) logger.Info("App mode " + Env)
} }

Loading…
Cancel
Save