Grafana CLI Wire Runner (#41012)

* Set up Wire build graph

* Remove enterprise Wire set

* Move runner package outside commands

* Update Makefile (gen-go path)

* Minor prettier fix

* Include new Wire enterprise file into .gitignore

* Update Wire deps

* Update the grabpl version

Co-authored-by: Dan Cech <dcech@grafana.com>
This commit is contained in:
Joan López de la Franca Beltran
2021-11-17 20:43:09 +01:00
committed by GitHub
parent 1b99d88337
commit d49230d291
10 changed files with 206 additions and 43 deletions

View File

@@ -0,0 +1,27 @@
package runner
import (
"github.com/grafana/grafana/pkg/services/encryption"
"github.com/grafana/grafana/pkg/services/secrets"
"github.com/grafana/grafana/pkg/services/sqlstore"
"github.com/grafana/grafana/pkg/setting"
)
type Runner struct {
Cfg *setting.Cfg
SQLStore *sqlstore.SQLStore
SettingsProvider setting.Provider
EncryptionService encryption.Internal
SecretsService secrets.Service
}
func New(cfg *setting.Cfg, sqlStore *sqlstore.SQLStore, settingsProvider setting.Provider,
encryptionService encryption.Internal, secretsService secrets.Service) Runner {
return Runner{
Cfg: cfg,
SQLStore: sqlStore,
SettingsProvider: settingsProvider,
EncryptionService: encryptionService,
SecretsService: secretsService,
}
}

View File

@@ -0,0 +1,76 @@
//go:build wireinject
// +build wireinject
package runner
import (
"context"
"github.com/google/wire"
"github.com/grafana/grafana/pkg/api/routing"
"github.com/grafana/grafana/pkg/bus"
"github.com/grafana/grafana/pkg/infra/localcache"
"github.com/grafana/grafana/pkg/infra/usagestats"
"github.com/grafana/grafana/pkg/services/secrets"
secretsDatabase "github.com/grafana/grafana/pkg/services/secrets/database"
secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager"
"github.com/grafana/grafana/pkg/services/sqlstore"
"github.com/grafana/grafana/pkg/setting"
"github.com/grafana/grafana/pkg/web"
)
var wireSet = wire.NewSet(
New,
localcache.ProvideService,
bus.ProvideBus,
wire.Bind(new(bus.Bus), new(*bus.InProcBus)),
sqlstore.ProvideService,
wire.InterfaceValue(new(usagestats.Service), noOpUsageStats{}),
wire.InterfaceValue(new(routing.RouteRegister), noOpRouteRegister{}),
secretsDatabase.ProvideSecretsStore,
wire.Bind(new(secrets.Store), new(*secretsDatabase.SecretsStoreImpl)),
secretsManager.ProvideSecretsService,
wire.Bind(new(secrets.Service), new(*secretsManager.SecretsService)),
)
func Initialize(cfg *setting.Cfg) (Runner, error) {
wire.Build(wireExtsSet)
return Runner{}, nil
}
// NoOp implementations of those dependencies that makes no sense to
// inject on CLI command executions (like the route registerer, for instance).
type noOpUsageStats struct{}
func (noOpUsageStats) GetUsageReport(context.Context) (usagestats.Report, error) {
return usagestats.Report{}, nil
}
func (noOpUsageStats) RegisterMetricsFunc(_ usagestats.MetricsFunc) {}
func (noOpUsageStats) RegisterSendReportCallback(_ usagestats.SendReportCallbackFunc) {}
func (noOpUsageStats) ShouldBeReported(string) bool { return false }
type noOpRouteRegister struct{}
func (noOpRouteRegister) Get(string, ...web.Handler) {}
func (noOpRouteRegister) Post(string, ...web.Handler) {}
func (noOpRouteRegister) Delete(string, ...web.Handler) {}
func (noOpRouteRegister) Put(string, ...web.Handler) {}
func (noOpRouteRegister) Patch(string, ...web.Handler) {}
func (noOpRouteRegister) Any(string, ...web.Handler) {}
func (noOpRouteRegister) Group(string, func(routing.RouteRegister), ...web.Handler) {}
func (noOpRouteRegister) Insert(string, func(routing.RouteRegister), ...web.Handler) {}
func (noOpRouteRegister) Register(routing.Router) {}
func (noOpRouteRegister) Reset() {}

View File

@@ -0,0 +1,27 @@
//go:build wireinject && oss
// +build wireinject,oss
package runner
import (
"github.com/google/wire"
"github.com/grafana/grafana/pkg/registry"
"github.com/grafana/grafana/pkg/services/encryption"
"github.com/grafana/grafana/pkg/services/encryption/ossencryption"
"github.com/grafana/grafana/pkg/services/kmsproviders"
"github.com/grafana/grafana/pkg/services/kmsproviders/osskmsproviders"
"github.com/grafana/grafana/pkg/services/sqlstore/migrations"
"github.com/grafana/grafana/pkg/setting"
)
var wireExtsSet = wire.NewSet(
wireSet,
migrations.ProvideOSSMigrations,
wire.Bind(new(registry.DatabaseMigrator), new(*migrations.OSSMigrations)),
setting.ProvideProvider,
wire.Bind(new(setting.Provider), new(*setting.OSSImpl)),
osskmsproviders.ProvideService,
wire.Bind(new(kmsproviders.Service), new(osskmsproviders.Service)),
ossencryption.ProvideService,
wire.Bind(new(encryption.Internal), new(*ossencryption.Service)),
)