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:
Will Browne
2023-07-06 14:45:47 +02:00
committed by GitHub
co-authored by Todd Treece Todd Treece
parent 76974009d0
commit 4818568c65
15 changed files with 287 additions and 190 deletions
+3 -1
View File
@@ -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},
}
+8
View File
@@ -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
+3
View File
@@ -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,
)
}
+24 -1
View File
@@ -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