|
|
|
@ -23,7 +23,6 @@ import ( |
|
|
|
|
"github.com/grafana/grafana/pkg/login/social" |
|
|
|
|
"github.com/grafana/grafana/pkg/registry" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/provisioning" |
|
|
|
|
secretsMigrations "github.com/grafana/grafana/pkg/services/secrets/kvstore/migrations" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/user" |
|
|
|
|
|
|
|
|
|
"github.com/grafana/grafana/pkg/setting" |
|
|
|
@ -44,10 +43,10 @@ type Options struct { |
|
|
|
|
func New(opts Options, cfg *setting.Cfg, httpServer *api.HTTPServer, roleRegistry accesscontrol.RoleRegistry, |
|
|
|
|
provisioningService provisioning.ProvisioningService, backgroundServiceProvider registry.BackgroundServiceRegistry, |
|
|
|
|
usageStatsProvidersRegistry registry.UsageStatsProvidersRegistry, statsCollectorService *statscollector.Service, |
|
|
|
|
secretMigrationService secretsMigrations.SecretMigrationService, userService user.Service, loginAttemptService loginattempt.Service, |
|
|
|
|
userService user.Service, loginAttemptService loginattempt.Service, |
|
|
|
|
) (*Server, error) { |
|
|
|
|
statsCollectorService.RegisterProviders(usageStatsProvidersRegistry.GetServices()) |
|
|
|
|
s, err := newServer(opts, cfg, httpServer, roleRegistry, provisioningService, backgroundServiceProvider, secretMigrationService, userService, loginAttemptService) |
|
|
|
|
s, err := newServer(opts, cfg, httpServer, roleRegistry, provisioningService, backgroundServiceProvider, userService, loginAttemptService) |
|
|
|
|
if err != nil { |
|
|
|
|
return nil, err |
|
|
|
|
} |
|
|
|
@ -60,30 +59,28 @@ func New(opts Options, cfg *setting.Cfg, httpServer *api.HTTPServer, roleRegistr |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func newServer(opts Options, cfg *setting.Cfg, httpServer *api.HTTPServer, roleRegistry accesscontrol.RoleRegistry, |
|
|
|
|
provisioningService provisioning.ProvisioningService, backgroundServiceProvider registry.BackgroundServiceRegistry, |
|
|
|
|
secretMigrationService secretsMigrations.SecretMigrationService, userService user.Service, loginAttemptService loginattempt.Service, |
|
|
|
|
provisioningService provisioning.ProvisioningService, backgroundServiceProvider registry.BackgroundServiceRegistry, userService user.Service, loginAttemptService loginattempt.Service, |
|
|
|
|
) (*Server, error) { |
|
|
|
|
rootCtx, shutdownFn := context.WithCancel(context.Background()) |
|
|
|
|
childRoutines, childCtx := errgroup.WithContext(rootCtx) |
|
|
|
|
|
|
|
|
|
s := &Server{ |
|
|
|
|
context: childCtx, |
|
|
|
|
childRoutines: childRoutines, |
|
|
|
|
HTTPServer: httpServer, |
|
|
|
|
provisioningService: provisioningService, |
|
|
|
|
roleRegistry: roleRegistry, |
|
|
|
|
shutdownFn: shutdownFn, |
|
|
|
|
shutdownFinished: make(chan struct{}), |
|
|
|
|
log: log.New("server"), |
|
|
|
|
cfg: cfg, |
|
|
|
|
pidFile: opts.PidFile, |
|
|
|
|
version: opts.Version, |
|
|
|
|
commit: opts.Commit, |
|
|
|
|
buildBranch: opts.BuildBranch, |
|
|
|
|
backgroundServices: backgroundServiceProvider.GetServices(), |
|
|
|
|
secretMigrationService: secretMigrationService, |
|
|
|
|
userService: userService, |
|
|
|
|
loginAttemptService: loginAttemptService, |
|
|
|
|
context: childCtx, |
|
|
|
|
childRoutines: childRoutines, |
|
|
|
|
HTTPServer: httpServer, |
|
|
|
|
provisioningService: provisioningService, |
|
|
|
|
roleRegistry: roleRegistry, |
|
|
|
|
shutdownFn: shutdownFn, |
|
|
|
|
shutdownFinished: make(chan struct{}), |
|
|
|
|
log: log.New("server"), |
|
|
|
|
cfg: cfg, |
|
|
|
|
pidFile: opts.PidFile, |
|
|
|
|
version: opts.Version, |
|
|
|
|
commit: opts.Commit, |
|
|
|
|
buildBranch: opts.BuildBranch, |
|
|
|
|
backgroundServices: backgroundServiceProvider.GetServices(), |
|
|
|
|
userService: userService, |
|
|
|
|
loginAttemptService: loginAttemptService, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return s, nil |
|
|
|
@ -107,12 +104,11 @@ type Server struct { |
|
|
|
|
buildBranch string |
|
|
|
|
backgroundServices []registry.BackgroundService |
|
|
|
|
|
|
|
|
|
HTTPServer *api.HTTPServer |
|
|
|
|
roleRegistry accesscontrol.RoleRegistry |
|
|
|
|
provisioningService provisioning.ProvisioningService |
|
|
|
|
secretMigrationService secretsMigrations.SecretMigrationService |
|
|
|
|
userService user.Service |
|
|
|
|
loginAttemptService loginattempt.Service |
|
|
|
|
HTTPServer *api.HTTPServer |
|
|
|
|
roleRegistry accesscontrol.RoleRegistry |
|
|
|
|
provisioningService provisioning.ProvisioningService |
|
|
|
|
userService user.Service |
|
|
|
|
loginAttemptService loginattempt.Service |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// init initializes the server and its services.
|
|
|
|
@ -137,10 +133,6 @@ func (s *Server) init() error { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if err := s.secretMigrationService.Migrate(s.context); err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return s.provisioningService.RunInitProvisioners(s.context) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|