Migrate to Wire for dependency injection (#32289)

Fixes #30144

Co-authored-by: dsotirakis <sotirakis.dim@gmail.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Ida Furjesova <ida.furjesova@grafana.com>
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
Co-authored-by: spinillos <selenepinillos@gmail.com>
Co-authored-by: Karl Persson <kalle.persson@grafana.com>
Co-authored-by: Leonard Gram <leo@xlson.com>
This commit is contained in:
Arve Knudsen
2021-08-25 15:11:22 +02:00
committed by GitHub
co-authored by dsotirakis Marcus Efraimsson Ida Furjesova Jack Westbrook Will Browne Leon Sorokin Andrej Ocenas spinillos Karl Persson Leonard Gram
parent e61bc33163
commit 78596a6756
180 changed files with 2384 additions and 2401 deletions
+30 -30
View File
@@ -19,40 +19,40 @@ import (
"github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/plugins/backendplugin"
"github.com/grafana/grafana/pkg/plugins/backendplugin/instrumentation"
"github.com/grafana/grafana/pkg/registry"
"github.com/grafana/grafana/pkg/setting"
"github.com/grafana/grafana/pkg/util/errutil"
"github.com/grafana/grafana/pkg/util/proxyutil"
)
func init() {
registry.RegisterServiceWithPriority(&manager{
logger: log.New("plugins.backend"),
plugins: map[string]backendplugin.Plugin{},
}, registry.MediumHigh)
func ProvideService(cfg *setting.Cfg, licensing models.Licensing,
pluginRequestValidator models.PluginRequestValidator) *Manager {
s := &Manager{
Cfg: cfg,
License: licensing,
PluginRequestValidator: pluginRequestValidator,
logger: log.New("plugins.backend"),
plugins: map[string]backendplugin.Plugin{},
}
return s
}
type manager struct {
Cfg *setting.Cfg `inject:""`
License models.Licensing `inject:""`
PluginRequestValidator models.PluginRequestValidator `inject:""`
type Manager struct {
Cfg *setting.Cfg
License models.Licensing
PluginRequestValidator models.PluginRequestValidator
pluginsMu sync.RWMutex
plugins map[string]backendplugin.Plugin
logger log.Logger
}
func (m *manager) Init() error {
return nil
}
func (m *manager) Run(ctx context.Context) error {
func (m *Manager) Run(ctx context.Context) error {
<-ctx.Done()
m.stop(ctx)
return ctx.Err()
}
// Register registers a backend plugin
func (m *manager) Register(pluginID string, factory backendplugin.PluginFactoryFunc) error {
func (m *Manager) Register(pluginID string, factory backendplugin.PluginFactoryFunc) error {
m.logger.Debug("Registering backend plugin", "pluginId", pluginID)
m.pluginsMu.Lock()
defer m.pluginsMu.Unlock()
@@ -97,7 +97,7 @@ func (m *manager) Register(pluginID string, factory backendplugin.PluginFactoryF
}
// RegisterAndStart registers and starts a backend plugin
func (m *manager) RegisterAndStart(ctx context.Context, pluginID string, factory backendplugin.PluginFactoryFunc) error {
func (m *Manager) RegisterAndStart(ctx context.Context, pluginID string, factory backendplugin.PluginFactoryFunc) error {
err := m.Register(pluginID, factory)
if err != nil {
return err
@@ -114,7 +114,7 @@ func (m *manager) RegisterAndStart(ctx context.Context, pluginID string, factory
}
// UnregisterAndStop unregisters and stops a backend plugin
func (m *manager) UnregisterAndStop(ctx context.Context, pluginID string) error {
func (m *Manager) UnregisterAndStop(ctx context.Context, pluginID string) error {
m.logger.Debug("Unregistering backend plugin", "pluginId", pluginID)
m.pluginsMu.Lock()
defer m.pluginsMu.Unlock()
@@ -139,13 +139,13 @@ func (m *manager) UnregisterAndStop(ctx context.Context, pluginID string) error
return nil
}
func (m *manager) IsRegistered(pluginID string) bool {
func (m *Manager) IsRegistered(pluginID string) bool {
p, _ := m.Get(pluginID)
return p != nil && !p.IsDecommissioned()
}
func (m *manager) Get(pluginID string) (backendplugin.Plugin, bool) {
func (m *Manager) Get(pluginID string) (backendplugin.Plugin, bool) {
m.pluginsMu.RLock()
p, ok := m.plugins[pluginID]
m.pluginsMu.RUnlock()
@@ -157,7 +157,7 @@ func (m *manager) Get(pluginID string) (backendplugin.Plugin, bool) {
return p, ok
}
func (m *manager) getAWSEnvironmentVariables() []string {
func (m *Manager) getAWSEnvironmentVariables() []string {
variables := []string{}
if m.Cfg.AWSAssumeRoleEnabled {
variables = append(variables, awsds.AssumeRoleEnabledEnvVarKeyName+"=true")
@@ -169,7 +169,7 @@ func (m *manager) getAWSEnvironmentVariables() []string {
return variables
}
func (m *manager) getAzureEnvironmentVariables() []string {
func (m *Manager) getAzureEnvironmentVariables() []string {
variables := []string{}
if m.Cfg.Azure.Cloud != "" {
variables = append(variables, "AZURE_CLOUD="+m.Cfg.Azure.Cloud)
@@ -185,7 +185,7 @@ func (m *manager) getAzureEnvironmentVariables() []string {
}
// start starts a managed backend plugin
func (m *manager) start(ctx context.Context, p backendplugin.Plugin) {
func (m *Manager) start(ctx context.Context, p backendplugin.Plugin) {
if !p.IsManaged() {
return
}
@@ -196,7 +196,7 @@ func (m *manager) start(ctx context.Context, p backendplugin.Plugin) {
}
// StartPlugin starts a non-managed backend plugin
func (m *manager) StartPlugin(ctx context.Context, pluginID string) error {
func (m *Manager) StartPlugin(ctx context.Context, pluginID string) error {
m.pluginsMu.RLock()
p, registered := m.plugins[pluginID]
m.pluginsMu.RUnlock()
@@ -212,7 +212,7 @@ func (m *manager) StartPlugin(ctx context.Context, pluginID string) error {
}
// stop stops all managed backend plugins
func (m *manager) stop(ctx context.Context) {
func (m *Manager) stop(ctx context.Context) {
m.pluginsMu.RLock()
defer m.pluginsMu.RUnlock()
var wg sync.WaitGroup
@@ -231,7 +231,7 @@ func (m *manager) stop(ctx context.Context) {
}
// CollectMetrics collects metrics from a registered backend plugin.
func (m *manager) CollectMetrics(ctx context.Context, pluginID string) (*backend.CollectMetricsResult, error) {
func (m *Manager) CollectMetrics(ctx context.Context, pluginID string) (*backend.CollectMetricsResult, error) {
p, registered := m.Get(pluginID)
if !registered {
return nil, backendplugin.ErrPluginNotRegistered
@@ -250,7 +250,7 @@ func (m *manager) CollectMetrics(ctx context.Context, pluginID string) (*backend
}
// CheckHealth checks the health of a registered backend plugin.
func (m *manager) CheckHealth(ctx context.Context, pluginContext backend.PluginContext) (*backend.CheckHealthResult, error) {
func (m *Manager) CheckHealth(ctx context.Context, pluginContext backend.PluginContext) (*backend.CheckHealthResult, error) {
var dsURL string
if pluginContext.DataSourceInstanceSettings != nil {
dsURL = pluginContext.DataSourceInstanceSettings.URL
@@ -290,7 +290,7 @@ func (m *manager) CheckHealth(ctx context.Context, pluginContext backend.PluginC
return resp, nil
}
func (m *manager) QueryData(ctx context.Context, req *backend.QueryDataRequest) (*backend.QueryDataResponse, error) {
func (m *Manager) QueryData(ctx context.Context, req *backend.QueryDataRequest) (*backend.QueryDataResponse, error) {
p, registered := m.Get(req.PluginContext.PluginID)
if !registered {
return nil, backendplugin.ErrPluginNotRegistered
@@ -321,7 +321,7 @@ type keepCookiesJSONModel struct {
KeepCookies []string `json:"keepCookies"`
}
func (m *manager) callResourceInternal(w http.ResponseWriter, req *http.Request, pCtx backend.PluginContext) error {
func (m *Manager) callResourceInternal(w http.ResponseWriter, req *http.Request, pCtx backend.PluginContext) error {
p, registered := m.Get(pCtx.PluginID)
if !registered {
return backendplugin.ErrPluginNotRegistered
@@ -382,7 +382,7 @@ func (m *manager) callResourceInternal(w http.ResponseWriter, req *http.Request,
}
// CallResource calls a plugin resource.
func (m *manager) CallResource(pCtx backend.PluginContext, reqCtx *models.ReqContext, path string) {
func (m *Manager) CallResource(pCtx backend.PluginContext, reqCtx *models.ReqContext, path string) {
var dsURL string
if pCtx.DataSourceInstanceSettings != nil {
dsURL = pCtx.DataSourceInstanceSettings.URL