PostgreSQL: Read postgresDSUsePGX from config (#112170)
* PostgreSQL: Read `postgresDSUsePGX` from config * Update plugins_test
This commit is contained in:
@@ -237,7 +237,7 @@ func NewPlugin(pluginID string, cfg *setting.Cfg, httpClientProvider *httpclient
|
|||||||
case Tempo:
|
case Tempo:
|
||||||
svc = tempo.ProvideService(httpClientProvider, tracer)
|
svc = tempo.ProvideService(httpClientProvider, tracer)
|
||||||
case PostgreSQL:
|
case PostgreSQL:
|
||||||
svc = postgres.ProvideService(cfg, features)
|
svc = postgres.ProvideService(cfg)
|
||||||
case MySQL:
|
case MySQL:
|
||||||
svc = mysql.ProvideService()
|
svc = mysql.ProvideService()
|
||||||
case MSSQL:
|
case MSSQL:
|
||||||
|
|||||||
@@ -392,7 +392,7 @@ func Initialize(ctx context.Context, cfg *setting.Cfg, opts Options, apiOpts api
|
|||||||
prometheusService := prometheus.ProvideService(httpclientProvider)
|
prometheusService := prometheus.ProvideService(httpclientProvider)
|
||||||
tempoService := tempo.ProvideService(httpclientProvider, tracer)
|
tempoService := tempo.ProvideService(httpclientProvider, tracer)
|
||||||
testdatasourceService := testdatasource.ProvideService()
|
testdatasourceService := testdatasource.ProvideService()
|
||||||
postgresService := postgres.ProvideService(cfg, featureToggles)
|
postgresService := postgres.ProvideService(cfg)
|
||||||
mysqlService := mysql.ProvideService()
|
mysqlService := mysql.ProvideService()
|
||||||
mssqlService := mssql.ProvideService(cfg)
|
mssqlService := mssql.ProvideService(cfg)
|
||||||
entityEventsService := store.ProvideEntityEventsService(cfg, sqlStore, featureToggles)
|
entityEventsService := store.ProvideEntityEventsService(cfg, sqlStore, featureToggles)
|
||||||
@@ -994,7 +994,7 @@ func InitializeForTest(ctx context.Context, t sqlutil.ITestDB, testingT interfac
|
|||||||
prometheusService := prometheus.ProvideService(httpclientProvider)
|
prometheusService := prometheus.ProvideService(httpclientProvider)
|
||||||
tempoService := tempo.ProvideService(httpclientProvider, tracer)
|
tempoService := tempo.ProvideService(httpclientProvider, tracer)
|
||||||
testdatasourceService := testdatasource.ProvideService()
|
testdatasourceService := testdatasource.ProvideService()
|
||||||
postgresService := postgres.ProvideService(cfg, featureToggles)
|
postgresService := postgres.ProvideService(cfg)
|
||||||
mysqlService := mysql.ProvideService()
|
mysqlService := mysql.ProvideService()
|
||||||
mssqlService := mssql.ProvideService(cfg)
|
mssqlService := mssql.ProvideService(cfg)
|
||||||
entityEventsService := store.ProvideEntityEventsService(cfg, sqlStore, featureToggles)
|
entityEventsService := store.ProvideEntityEventsService(cfg, sqlStore, featureToggles)
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ func TestIntegrationPluginManager(t *testing.T) {
|
|||||||
pr := prometheus.ProvideService(hcp)
|
pr := prometheus.ProvideService(hcp)
|
||||||
tmpo := tempo.ProvideService(hcp, tracer)
|
tmpo := tempo.ProvideService(hcp, tracer)
|
||||||
td := testdatasource.ProvideService()
|
td := testdatasource.ProvideService()
|
||||||
pg := postgres.ProvideService(cfg, features)
|
pg := postgres.ProvideService(cfg)
|
||||||
my := mysql.ProvideService()
|
my := mysql.ProvideService()
|
||||||
ms := mssql.ProvideService(cfg)
|
ms := mssql.ProvideService(cfg)
|
||||||
db := db.InitTestDB(t, sqlstore.InitTestDBOpt{Cfg: cfg})
|
db := db.InitTestDB(t, sqlstore.InitTestDBOpt{Cfg: cfg})
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ func newPostgresPGX(ctx context.Context, userFacingDefaultError string, rowLimit
|
|||||||
return p, handler, nil
|
return p, handler, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewInstanceSettings(logger log.Logger, usePGX bool, dataPath string) datasource.InstanceFactoryFunc {
|
func NewInstanceSettings(logger log.Logger, dataPath string) datasource.InstanceFactoryFunc {
|
||||||
return func(ctx context.Context, settings backend.DataSourceInstanceSettings) (instancemgmt.Instance, error) {
|
return func(ctx context.Context, settings backend.DataSourceInstanceSettings) (instancemgmt.Instance, error) {
|
||||||
cfg := backend.GrafanaConfigFromContext(ctx)
|
cfg := backend.GrafanaConfigFromContext(ctx)
|
||||||
sqlCfg, err := cfg.SQL()
|
sqlCfg, err := cfg.SQL()
|
||||||
@@ -171,6 +171,8 @@ func NewInstanceSettings(logger log.Logger, usePGX bool, dataPath string) dataso
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
usePGX := cfg.FeatureToggles().IsEnabled("postgresDSUsePGX")
|
||||||
|
|
||||||
if usePGX {
|
if usePGX {
|
||||||
pgxlogger := logger.FromContext(ctx).With("driver", "pgx")
|
pgxlogger := logger.FromContext(ctx).With("driver", "pgx")
|
||||||
pgxTlsManager := newPgxTlsManager(pgxlogger)
|
pgxTlsManager := newPgxTlsManager(pgxlogger)
|
||||||
|
|||||||
@@ -7,30 +7,27 @@ import (
|
|||||||
"github.com/grafana/grafana-plugin-sdk-go/backend/datasource"
|
"github.com/grafana/grafana-plugin-sdk-go/backend/datasource"
|
||||||
"github.com/grafana/grafana-plugin-sdk-go/backend/instancemgmt"
|
"github.com/grafana/grafana-plugin-sdk-go/backend/instancemgmt"
|
||||||
|
|
||||||
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
|
||||||
"github.com/grafana/grafana/pkg/setting"
|
"github.com/grafana/grafana/pkg/setting"
|
||||||
sqlengpgx "github.com/grafana/grafana/pkg/tsdb/grafana-postgresql-datasource/pgx"
|
sqlengpgx "github.com/grafana/grafana/pkg/tsdb/grafana-postgresql-datasource/pgx"
|
||||||
"github.com/grafana/grafana/pkg/tsdb/grafana-postgresql-datasource/sqleng"
|
"github.com/grafana/grafana/pkg/tsdb/grafana-postgresql-datasource/sqleng"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Service struct {
|
type Service struct {
|
||||||
im instancemgmt.InstanceManager
|
im instancemgmt.InstanceManager
|
||||||
features featuremgmt.FeatureToggles
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func ProvideService(cfg *setting.Cfg, features featuremgmt.FeatureToggles) *Service {
|
func ProvideService(cfg *setting.Cfg) *Service {
|
||||||
logger := backend.NewLoggerWith("logger", "tsdb.postgres")
|
logger := backend.NewLoggerWith("logger", "tsdb.postgres")
|
||||||
usePGX := features.IsEnabled(context.Background(), featuremgmt.FlagPostgresDSUsePGX)
|
|
||||||
s := &Service{
|
s := &Service{
|
||||||
im: datasource.NewInstanceManager(NewInstanceSettings(logger, usePGX, cfg.DataPath)),
|
im: datasource.NewInstanceManager(NewInstanceSettings(logger, cfg.DataPath)),
|
||||||
features: features,
|
|
||||||
}
|
}
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: do not put any business logic into this method. it's whole job is to forward the call "inside"
|
// NOTE: do not put any business logic into this method. it's whole job is to forward the call "inside"
|
||||||
func (s *Service) CheckHealth(ctx context.Context, req *backend.CheckHealthRequest) (*backend.CheckHealthResult, error) {
|
func (s *Service) CheckHealth(ctx context.Context, req *backend.CheckHealthRequest) (*backend.CheckHealthResult, error) {
|
||||||
if s.features.IsEnabled(ctx, featuremgmt.FlagPostgresDSUsePGX) {
|
cfg := backend.GrafanaConfigFromContext(ctx)
|
||||||
|
if cfg.FeatureToggles().IsEnabled("postgresDSUsePGX") {
|
||||||
dsHandler, err := s.getDSInfoPGX(ctx, req.PluginContext)
|
dsHandler, err := s.getDSInfoPGX(ctx, req.PluginContext)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return sqlengpgx.ErrToHealthCheckResult(err)
|
return sqlengpgx.ErrToHealthCheckResult(err)
|
||||||
@@ -47,7 +44,8 @@ func (s *Service) CheckHealth(ctx context.Context, req *backend.CheckHealthReque
|
|||||||
|
|
||||||
// NOTE: do not put any business logic into this method. it's whole job is to forward the call "inside"
|
// NOTE: do not put any business logic into this method. it's whole job is to forward the call "inside"
|
||||||
func (s *Service) QueryData(ctx context.Context, req *backend.QueryDataRequest) (*backend.QueryDataResponse, error) {
|
func (s *Service) QueryData(ctx context.Context, req *backend.QueryDataRequest) (*backend.QueryDataResponse, error) {
|
||||||
if s.features.IsEnabled(ctx, featuremgmt.FlagPostgresDSUsePGX) {
|
cfg := backend.GrafanaConfigFromContext(ctx)
|
||||||
|
if cfg.FeatureToggles().IsEnabled("postgresDSUsePGX") {
|
||||||
dsInfo, err := s.getDSInfoPGX(ctx, req.PluginContext)
|
dsInfo, err := s.getDSInfoPGX(ctx, req.PluginContext)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ func main() {
|
|||||||
logger := backend.NewLoggerWith()
|
logger := backend.NewLoggerWith()
|
||||||
// TODO: get rid of setting.NewCfg() once PostgresDSUsePGX is removed
|
// TODO: get rid of setting.NewCfg() once PostgresDSUsePGX is removed
|
||||||
cfg := setting.NewCfg()
|
cfg := setting.NewCfg()
|
||||||
if err := datasource.Manage("grafana-postgresql-datasource", postgres.NewInstanceSettings(logger, true, cfg.DataPath), datasource.ManageOpts{}); err != nil {
|
if err := datasource.Manage("grafana-postgresql-datasource", postgres.NewInstanceSettings(logger, cfg.DataPath), datasource.ManageOpts{}); err != nil {
|
||||||
log.DefaultLogger.Error(err.Error())
|
log.DefaultLogger.Error(err.Error())
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user