mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
mysql: do not use unexported grafana-core config (#83062)
* mysql: do not use unexported grafana-core config * updated test
This commit is contained in:
parent
74c0463cd3
commit
3ba33fe278
@ -86,7 +86,7 @@ func TestIntegrationPluginManager(t *testing.T) {
|
|||||||
tmpo := tempo.ProvideService(hcp)
|
tmpo := tempo.ProvideService(hcp)
|
||||||
td := testdatasource.ProvideService()
|
td := testdatasource.ProvideService()
|
||||||
pg := postgres.ProvideService(cfg)
|
pg := postgres.ProvideService(cfg)
|
||||||
my := mysql.ProvideService(cfg, hcp)
|
my := mysql.ProvideService()
|
||||||
ms := mssql.ProvideService(cfg)
|
ms := mssql.ProvideService(cfg)
|
||||||
sv2 := searchV2.ProvideService(cfg, db.InitTestDB(t), nil, nil, tracer, features, nil, nil, nil)
|
sv2 := searchV2.ProvideService(cfg, db.InitTestDB(t), nil, nil, tracer, features, nil, nil, nil)
|
||||||
graf := grafanads.ProvideService(sv2, nil)
|
graf := grafanads.ProvideService(sv2, nil)
|
||||||
|
@ -8,7 +8,6 @@ import (
|
|||||||
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
||||||
"github.com/grafana/grafana-plugin-sdk-go/backend/gtime"
|
"github.com/grafana/grafana-plugin-sdk-go/backend/gtime"
|
||||||
"github.com/grafana/grafana-plugin-sdk-go/backend/log"
|
"github.com/grafana/grafana-plugin-sdk-go/backend/log"
|
||||||
"github.com/grafana/grafana/pkg/setting"
|
|
||||||
"github.com/grafana/grafana/pkg/tsdb/sqleng"
|
"github.com/grafana/grafana/pkg/tsdb/sqleng"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -23,11 +22,11 @@ type mySQLMacroEngine struct {
|
|||||||
userError string
|
userError string
|
||||||
}
|
}
|
||||||
|
|
||||||
func newMysqlMacroEngine(logger log.Logger, cfg *setting.Cfg) sqleng.SQLMacroEngine {
|
func newMysqlMacroEngine(logger log.Logger, userFacingDefaultError string) sqleng.SQLMacroEngine {
|
||||||
return &mySQLMacroEngine{
|
return &mySQLMacroEngine{
|
||||||
SQLMacroEngineBase: sqleng.NewSQLMacroEngineBase(),
|
SQLMacroEngineBase: sqleng.NewSQLMacroEngineBase(),
|
||||||
logger: logger,
|
logger: logger,
|
||||||
userError: cfg.UserFacingDefaultError,
|
userError: userFacingDefaultError,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,7 +7,6 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
||||||
"github.com/grafana/grafana/pkg/setting"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
@ -194,7 +193,7 @@ func TestMacroEngine(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestMacroEngineConcurrency(t *testing.T) {
|
func TestMacroEngineConcurrency(t *testing.T) {
|
||||||
engine := newMysqlMacroEngine(backend.NewLoggerWith("logger", "test"), setting.NewCfg())
|
engine := newMysqlMacroEngine(backend.NewLoggerWith("logger", "test"), "error")
|
||||||
query1 := backend.DataQuery{
|
query1 := backend.DataQuery{
|
||||||
JSON: []byte{},
|
JSON: []byte{},
|
||||||
}
|
}
|
||||||
|
@ -22,8 +22,6 @@ import (
|
|||||||
"github.com/grafana/grafana-plugin-sdk-go/data/sqlutil"
|
"github.com/grafana/grafana-plugin-sdk-go/data/sqlutil"
|
||||||
|
|
||||||
"github.com/grafana/grafana-plugin-sdk-go/backend/log"
|
"github.com/grafana/grafana-plugin-sdk-go/backend/log"
|
||||||
"github.com/grafana/grafana/pkg/infra/httpclient"
|
|
||||||
"github.com/grafana/grafana/pkg/setting"
|
|
||||||
"github.com/grafana/grafana/pkg/tsdb/sqleng"
|
"github.com/grafana/grafana/pkg/tsdb/sqleng"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -34,7 +32,6 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Service struct {
|
type Service struct {
|
||||||
Cfg *setting.Cfg
|
|
||||||
im instancemgmt.InstanceManager
|
im instancemgmt.InstanceManager
|
||||||
logger log.Logger
|
logger log.Logger
|
||||||
}
|
}
|
||||||
@ -43,25 +40,30 @@ func characterEscape(s string, escapeChar string) string {
|
|||||||
return strings.ReplaceAll(s, escapeChar, url.QueryEscape(escapeChar))
|
return strings.ReplaceAll(s, escapeChar, url.QueryEscape(escapeChar))
|
||||||
}
|
}
|
||||||
|
|
||||||
func ProvideService(cfg *setting.Cfg, httpClientProvider httpclient.Provider) *Service {
|
func ProvideService() *Service {
|
||||||
logger := backend.NewLoggerWith("logger", "tsdb.mysql")
|
logger := backend.NewLoggerWith("logger", "tsdb.mysql")
|
||||||
return &Service{
|
return &Service{
|
||||||
im: datasource.NewInstanceManager(newInstanceSettings(cfg, logger)),
|
im: datasource.NewInstanceManager(newInstanceSettings(logger)),
|
||||||
logger: logger,
|
logger: logger,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func newInstanceSettings(cfg *setting.Cfg, logger log.Logger) datasource.InstanceFactoryFunc {
|
func newInstanceSettings(logger log.Logger) 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)
|
||||||
|
sqlCfg, err := cfg.SQL()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
jsonData := sqleng.JsonData{
|
jsonData := sqleng.JsonData{
|
||||||
MaxOpenConns: cfg.SqlDatasourceMaxOpenConnsDefault,
|
MaxOpenConns: sqlCfg.DefaultMaxOpenConns,
|
||||||
MaxIdleConns: cfg.SqlDatasourceMaxIdleConnsDefault,
|
MaxIdleConns: sqlCfg.DefaultMaxIdleConns,
|
||||||
ConnMaxLifetime: cfg.SqlDatasourceMaxConnLifetimeDefault,
|
ConnMaxLifetime: sqlCfg.DefaultMaxConnLifetimeSeconds,
|
||||||
SecureDSProxy: false,
|
SecureDSProxy: false,
|
||||||
AllowCleartextPasswords: false,
|
AllowCleartextPasswords: false,
|
||||||
}
|
}
|
||||||
|
|
||||||
err := json.Unmarshal(settings.JSONData, &jsonData)
|
err = json.Unmarshal(settings.JSONData, &jsonData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error reading settings: %w", err)
|
return nil, fmt.Errorf("error reading settings: %w", err)
|
||||||
}
|
}
|
||||||
@ -144,11 +146,16 @@ func newInstanceSettings(cfg *setting.Cfg, logger log.Logger) datasource.Instanc
|
|||||||
DSInfo: dsInfo,
|
DSInfo: dsInfo,
|
||||||
TimeColumnNames: []string{"time", "time_sec"},
|
TimeColumnNames: []string{"time", "time_sec"},
|
||||||
MetricColumnTypes: []string{"CHAR", "VARCHAR", "TINYTEXT", "TEXT", "MEDIUMTEXT", "LONGTEXT"},
|
MetricColumnTypes: []string{"CHAR", "VARCHAR", "TINYTEXT", "TEXT", "MEDIUMTEXT", "LONGTEXT"},
|
||||||
RowLimit: cfg.DataProxyRowLimit,
|
RowLimit: sqlCfg.RowLimit,
|
||||||
|
}
|
||||||
|
|
||||||
|
userFacingDefaultError, err := cfg.UserFacingDefaultError()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
rowTransformer := mysqlQueryResultTransformer{
|
rowTransformer := mysqlQueryResultTransformer{
|
||||||
userError: cfg.UserFacingDefaultError,
|
userError: userFacingDefaultError,
|
||||||
}
|
}
|
||||||
|
|
||||||
db, err := sql.Open("mysql", cnnstr)
|
db, err := sql.Open("mysql", cnnstr)
|
||||||
@ -160,7 +167,7 @@ func newInstanceSettings(cfg *setting.Cfg, logger log.Logger) datasource.Instanc
|
|||||||
db.SetMaxIdleConns(config.DSInfo.JsonData.MaxIdleConns)
|
db.SetMaxIdleConns(config.DSInfo.JsonData.MaxIdleConns)
|
||||||
db.SetConnMaxLifetime(time.Duration(config.DSInfo.JsonData.ConnMaxLifetime) * time.Second)
|
db.SetConnMaxLifetime(time.Duration(config.DSInfo.JsonData.ConnMaxLifetime) * time.Second)
|
||||||
|
|
||||||
return sqleng.NewQueryDataHandler(cfg.UserFacingDefaultError, db, config, &rowTransformer, newMysqlMacroEngine(logger, cfg), logger)
|
return sqleng.NewQueryDataHandler(userFacingDefaultError, db, config, &rowTransformer, newMysqlMacroEngine(logger, userFacingDefaultError), logger)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,7 +13,6 @@ import (
|
|||||||
"github.com/grafana/grafana-plugin-sdk-go/data"
|
"github.com/grafana/grafana-plugin-sdk-go/data"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
"github.com/grafana/grafana/pkg/setting"
|
|
||||||
"github.com/grafana/grafana/pkg/tsdb/sqleng"
|
"github.com/grafana/grafana/pkg/tsdb/sqleng"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -67,7 +66,7 @@ func TestIntegrationMySQL(t *testing.T) {
|
|||||||
|
|
||||||
db := InitMySQLTestDB(t, config.DSInfo.JsonData)
|
db := InitMySQLTestDB(t, config.DSInfo.JsonData)
|
||||||
|
|
||||||
exe, err := sqleng.NewQueryDataHandler("", db, config, &rowTransformer, newMysqlMacroEngine(logger, setting.NewCfg()), logger)
|
exe, err := sqleng.NewQueryDataHandler("", db, config, &rowTransformer, newMysqlMacroEngine(logger, ""), logger)
|
||||||
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
@ -1179,7 +1178,7 @@ func TestIntegrationMySQL(t *testing.T) {
|
|||||||
|
|
||||||
queryResultTransformer := mysqlQueryResultTransformer{}
|
queryResultTransformer := mysqlQueryResultTransformer{}
|
||||||
|
|
||||||
handler, err := sqleng.NewQueryDataHandler("", db, config, &queryResultTransformer, newMysqlMacroEngine(logger, setting.NewCfg()), logger)
|
handler, err := sqleng.NewQueryDataHandler("", db, config, &queryResultTransformer, newMysqlMacroEngine(logger, ""), logger)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
t.Run("When doing a table query that returns 2 rows should limit the result to 1 row", func(t *testing.T) {
|
t.Run("When doing a table query that returns 2 rows should limit the result to 1 row", func(t *testing.T) {
|
||||||
|
Loading…
Reference in New Issue
Block a user