Chore: Convert background service registry to dskit module (#64062)
* Chore: Add initial support for deployment modes * revert CLI changes and start modules independently * add modules to codeowners * additional comments * add Engine and Manager interface to fix test issues * convert background service registry to dskit module * remove extra context from serviceListener logger Co-authored-by: Will Browne <wbrowne@users.noreply.github.com> * Remove whitespace * fix import * undo ide changes * only register All by default * with registry * add test * add comments * re-add debug log * fix import * reorganize arg * undo kind changes * add provide service test * fix import * rejig systemd calls * update codeowners --------- Co-authored-by: Todd Treece <todd.treece@grafana.com> Co-authored-by: Todd Treece <360020+toddtreece@users.noreply.github.com>
This commit is contained in:
co-authored by
Todd Treece
Todd Treece
parent
76974009d0
commit
4818568c65
@@ -3,9 +3,11 @@ package modules
|
||||
const (
|
||||
// All includes all modules necessary for Grafana to run as a standalone application.
|
||||
All string = "all"
|
||||
// BackgroundServices includes all Grafana services that run in the background
|
||||
BackgroundServices string = "background-services"
|
||||
)
|
||||
|
||||
// dependencyMap defines Module Targets => Dependencies
|
||||
var dependencyMap = map[string][]string{
|
||||
All: {},
|
||||
All: {BackgroundServices},
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
"github.com/grafana/grafana/pkg/systemd"
|
||||
)
|
||||
|
||||
type Engine interface {
|
||||
@@ -98,6 +99,13 @@ func (m *service) Run(ctx context.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
err = m.serviceManager.AwaitHealthy(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
systemd.NotifyReady(m.log)
|
||||
|
||||
err = m.serviceManager.AwaitStopped(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/grafana/grafana/pkg/modules"
|
||||
"github.com/grafana/grafana/pkg/server/backgroundsvcs"
|
||||
)
|
||||
|
||||
type Registry interface{}
|
||||
@@ -16,10 +17,12 @@ type registry struct {
|
||||
|
||||
func ProvideRegistry(
|
||||
moduleManager modules.Manager,
|
||||
backgroundServiceRunner *backgroundsvcs.BackgroundServiceRunner,
|
||||
) *registry {
|
||||
return newRegistry(
|
||||
log.New("modules.registry"),
|
||||
moduleManager,
|
||||
backgroundServiceRunner,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -9,9 +9,32 @@ import (
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/grafana/grafana/pkg/modules"
|
||||
"github.com/grafana/grafana/pkg/server/backgroundsvcs"
|
||||
)
|
||||
|
||||
func TestRegistry(t *testing.T) {
|
||||
func TestProvideRegistry(t *testing.T) {
|
||||
var registeredInvisibleModules []string
|
||||
var registeredModules []string
|
||||
|
||||
moduleManager := &modules.MockModuleManager{
|
||||
RegisterModuleFunc: func(name string, initFn func() (services.Service, error)) {
|
||||
registeredModules = append(registeredModules, name)
|
||||
},
|
||||
RegisterInvisibleModuleFunc: func(name string, initFn func() (services.Service, error)) {
|
||||
registeredInvisibleModules = append(registeredInvisibleModules, name)
|
||||
},
|
||||
}
|
||||
|
||||
svcRegistry := backgroundsvcs.NewBackgroundServiceRegistry()
|
||||
svcRunner := backgroundsvcs.ProvideBackgroundServiceRunner(svcRegistry)
|
||||
|
||||
r := ProvideRegistry(moduleManager, svcRunner)
|
||||
require.NotNil(t, r)
|
||||
require.Equal(t, []string{modules.BackgroundServices}, registeredInvisibleModules)
|
||||
require.Equal(t, []string{modules.All}, registeredModules)
|
||||
}
|
||||
|
||||
func TestNewRegistry(t *testing.T) {
|
||||
var registeredInvisibleModules []string
|
||||
var registeredModules []string
|
||||
|
||||
|
||||
Reference in New Issue
Block a user