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
 | // 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{ | 	return &pluginClient{ | ||||||
| 		pluginClient: p, | 		pluginClient: p, | ||||||
| 		pCtxProvider: ctx, | 		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/featuremgmt" | ||||||
| 	"github.com/grafana/grafana/pkg/services/pluginsintegration/plugincontext" | 	"github.com/grafana/grafana/pkg/services/pluginsintegration/plugincontext" | ||||||
| 	"github.com/grafana/grafana/pkg/services/pluginsintegration/pluginstore" | 	"github.com/grafana/grafana/pkg/services/pluginsintegration/pluginstore" | ||||||
|  | 	"github.com/grafana/grafana/pkg/setting" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| var _ builder.APIGroupBuilder = (*QueryAPIBuilder)(nil) | var _ builder.APIGroupBuilder = (*QueryAPIBuilder)(nil) | ||||||
|  | @ -93,7 +94,9 @@ func NewQueryAPIBuilder( | ||||||
| 	}, nil | 	}, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func RegisterAPIService(features featuremgmt.FeatureToggles, | func RegisterAPIService( | ||||||
|  | 	cfg *setting.Cfg, | ||||||
|  | 	features featuremgmt.FeatureToggles, | ||||||
| 	apiregistration builder.APIRegistrar, | 	apiregistration builder.APIRegistrar, | ||||||
| 	dataSourcesService datasources.DataSourceService, | 	dataSourcesService datasources.DataSourceService, | ||||||
| 	pluginStore pluginstore.Store, | 	pluginStore pluginstore.Store, | ||||||
|  | @ -126,9 +129,7 @@ func RegisterAPIService(features featuremgmt.FeatureToggles, | ||||||
| 
 | 
 | ||||||
| 	builder, err := NewQueryAPIBuilder( | 	builder, err := NewQueryAPIBuilder( | ||||||
| 		features, | 		features, | ||||||
| 		&CommonDataSourceClientSupplier{ | 		client.NewSingleTenantClientSupplier(cfg, features, pluginClient, pCtxProvider, accessControl), | ||||||
| 			Client: client.NewQueryClientForPluginClient(pluginClient, pCtxProvider, accessControl), |  | ||||||
| 		}, |  | ||||||
| 		ar, | 		ar, | ||||||
| 		client.NewDataSourceRegistryFromStore(pluginStore, dataSourcesService), | 		client.NewDataSourceRegistryFromStore(pluginStore, dataSourcesService), | ||||||
| 		registerer, | 		registerer, | ||||||
|  |  | ||||||
|  | @ -740,7 +740,7 @@ func Initialize(cfg *setting.Cfg, opts Options, apiOpts api.ServerOptions) (*Ser | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
| 	legacyDataSourceLookup := service7.ProvideLegacyDataSourceLookup(service15) | 	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 { | 	if err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
|  | @ -1298,7 +1298,7 @@ func InitializeForTest(t sqlutil.ITestDB, testingT interface { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
| 	legacyDataSourceLookup := service7.ProvideLegacyDataSourceLookup(service15) | 	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 { | 	if err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue