mirror of https://github.com/grafana/grafana.git
				
				
				
			datasources: querier: handle single-tenant instance config (#108469)
This commit is contained in:
		
							parent
							
								
									15f291aa8e
								
							
						
					
					
						commit
						8d48dbce66
					
				|  | @ -1,21 +0,0 @@ | |||
| package query | ||||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 
 | ||||
| 	data "github.com/grafana/grafana-plugin-sdk-go/experimental/apis/data/v0alpha1" | ||||
| 	"github.com/grafana/grafana/pkg/registry/apis/query/clientapi" | ||||
| ) | ||||
| 
 | ||||
| type CommonDataSourceClientSupplier struct { | ||||
| 	Client clientapi.QueryDataClient | ||||
| } | ||||
| 
 | ||||
| func (s *CommonDataSourceClientSupplier) GetDataSourceClient(_ context.Context, _ data.DataSourceRef, _ map[string]string, _ clientapi.InstanceConfigurationSettings) (clientapi.QueryDataClient, error) { | ||||
| 	return s.Client, nil | ||||
| } | ||||
| 
 | ||||
| func (s *CommonDataSourceClientSupplier) GetInstanceConfigurationSettings(_ context.Context) (clientapi.InstanceConfigurationSettings, error) { | ||||
| 	// FIXME: for now it's an empty structure, we'll find a way to fill it correctly.
 | ||||
| 	return clientapi.InstanceConfigurationSettings{}, nil | ||||
| } | ||||
|  | @ -64,7 +64,7 @@ var k8sNotFoundError error = &apierrors.StatusError{ | |||
| } | ||||
| 
 | ||||
| // NewQueryClientForPluginClient creates a client that delegates to the internal plugins.Client stack
 | ||||
| func NewQueryClientForPluginClient(p plugins.Client, ctx *plugincontext.Provider, accessControl accesscontrol.AccessControl) clientapi.QueryDataClient { | ||||
| func newQueryClientForPluginClient(p plugins.Client, ctx *plugincontext.Provider, accessControl accesscontrol.AccessControl) clientapi.QueryDataClient { | ||||
| 	return &pluginClient{ | ||||
| 		pluginClient: p, | ||||
| 		pCtxProvider: ctx, | ||||
|  |  | |||
|  | @ -0,0 +1,44 @@ | |||
| package client | ||||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 
 | ||||
| 	data "github.com/grafana/grafana-plugin-sdk-go/experimental/apis/data/v0alpha1" | ||||
| 	"github.com/grafana/grafana/pkg/plugins" | ||||
| 	"github.com/grafana/grafana/pkg/registry/apis/query/clientapi" | ||||
| 	"github.com/grafana/grafana/pkg/services/accesscontrol" | ||||
| 	"github.com/grafana/grafana/pkg/services/featuremgmt" | ||||
| 	"github.com/grafana/grafana/pkg/services/pluginsintegration/plugincontext" | ||||
| 	"github.com/grafana/grafana/pkg/setting" | ||||
| ) | ||||
| 
 | ||||
| type singleTenantClientSupplier struct { | ||||
| 	client   clientapi.QueryDataClient | ||||
| 	features featuremgmt.FeatureToggles | ||||
| 	cfg      *setting.Cfg | ||||
| } | ||||
| 
 | ||||
| func NewSingleTenantClientSupplier(cfg *setting.Cfg, features featuremgmt.FeatureToggles, p plugins.Client, ctxProv *plugincontext.Provider, accessControl accesscontrol.AccessControl) clientapi.DataSourceClientSupplier { | ||||
| 	return &singleTenantClientSupplier{ | ||||
| 		cfg:      cfg, | ||||
| 		features: features, | ||||
| 		client:   newQueryClientForPluginClient(p, ctxProv, accessControl), | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (s *singleTenantClientSupplier) GetDataSourceClient(_ context.Context, _ data.DataSourceRef, _ map[string]string, _ clientapi.InstanceConfigurationSettings) (clientapi.QueryDataClient, error) { | ||||
| 	return s.client, nil | ||||
| } | ||||
| 
 | ||||
| func (s *singleTenantClientSupplier) GetInstanceConfigurationSettings(ctx context.Context) (clientapi.InstanceConfigurationSettings, error) { | ||||
| 	return clientapi.InstanceConfigurationSettings{ | ||||
| 		StackID:                      0, | ||||
| 		FeatureToggles:               s.features, | ||||
| 		FullConfig:                   nil, | ||||
| 		Options:                      nil, | ||||
| 		SQLExpressionCellLimit:       s.cfg.SQLExpressionCellLimit, | ||||
| 		SQLExpressionOutputCellLimit: s.cfg.SQLExpressionOutputCellLimit, | ||||
| 		SQLExpressionTimeout:         s.cfg.SQLExpressionTimeout, | ||||
| 		ExpressionsEnabled:           s.cfg.ExpressionsEnabled, | ||||
| 	}, nil | ||||
| } | ||||
|  | @ -31,6 +31,7 @@ import ( | |||
| 	"github.com/grafana/grafana/pkg/services/featuremgmt" | ||||
| 	"github.com/grafana/grafana/pkg/services/pluginsintegration/plugincontext" | ||||
| 	"github.com/grafana/grafana/pkg/services/pluginsintegration/pluginstore" | ||||
| 	"github.com/grafana/grafana/pkg/setting" | ||||
| ) | ||||
| 
 | ||||
| var _ builder.APIGroupBuilder = (*QueryAPIBuilder)(nil) | ||||
|  | @ -93,7 +94,9 @@ func NewQueryAPIBuilder( | |||
| 	}, nil | ||||
| } | ||||
| 
 | ||||
| func RegisterAPIService(features featuremgmt.FeatureToggles, | ||||
| func RegisterAPIService( | ||||
| 	cfg *setting.Cfg, | ||||
| 	features featuremgmt.FeatureToggles, | ||||
| 	apiregistration builder.APIRegistrar, | ||||
| 	dataSourcesService datasources.DataSourceService, | ||||
| 	pluginStore pluginstore.Store, | ||||
|  | @ -126,9 +129,7 @@ func RegisterAPIService(features featuremgmt.FeatureToggles, | |||
| 
 | ||||
| 	builder, err := NewQueryAPIBuilder( | ||||
| 		features, | ||||
| 		&CommonDataSourceClientSupplier{ | ||||
| 			Client: client.NewQueryClientForPluginClient(pluginClient, pCtxProvider, accessControl), | ||||
| 		}, | ||||
| 		client.NewSingleTenantClientSupplier(cfg, features, pluginClient, pCtxProvider, accessControl), | ||||
| 		ar, | ||||
| 		client.NewDataSourceRegistryFromStore(pluginStore, dataSourcesService), | ||||
| 		registerer, | ||||
|  |  | |||
|  | @ -740,7 +740,7 @@ func Initialize(cfg *setting.Cfg, opts Options, apiOpts api.ServerOptions) (*Ser | |||
| 		return nil, err | ||||
| 	} | ||||
| 	legacyDataSourceLookup := service7.ProvideLegacyDataSourceLookup(service15) | ||||
| 	queryAPIBuilder, err := query2.RegisterAPIService(featureToggles, apiserverService, service15, pluginstoreService, accessControl, middlewareHandler, plugincontextProvider, registerer, tracingService, legacyDataSourceLookup, exprService) | ||||
| 	queryAPIBuilder, err := query2.RegisterAPIService(cfg, featureToggles, apiserverService, service15, pluginstoreService, accessControl, middlewareHandler, plugincontextProvider, registerer, tracingService, legacyDataSourceLookup, exprService) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | @ -1298,7 +1298,7 @@ func InitializeForTest(t sqlutil.ITestDB, testingT interface { | |||
| 		return nil, err | ||||
| 	} | ||||
| 	legacyDataSourceLookup := service7.ProvideLegacyDataSourceLookup(service15) | ||||
| 	queryAPIBuilder, err := query2.RegisterAPIService(featureToggles, apiserverService, service15, pluginstoreService, accessControl, middlewareHandler, plugincontextProvider, registerer, tracingService, legacyDataSourceLookup, exprService) | ||||
| 	queryAPIBuilder, err := query2.RegisterAPIService(cfg, featureToggles, apiserverService, service15, pluginstoreService, accessControl, middlewareHandler, plugincontextProvider, registerer, tracingService, legacyDataSourceLookup, exprService) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue