Chore: Replace config with datasource in names (#81098)

This commit is contained in:
Andres Martinez Gotor 2024-01-24 16:44:40 +01:00 committed by GitHub
parent 3ea84e1b7f
commit 3b96eb854a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 37 additions and 36 deletions

View File

@ -23,7 +23,7 @@ type connectionAccess struct {
pluginID string pluginID string
resourceInfo common.ResourceInfo resourceInfo common.ResourceInfo
tableConverter rest.TableConvertor tableConverter rest.TableConvertor
configs PluginConfigProvider datasources PluginDatasourceProvider
} }
func (s *connectionAccess) New() runtime.Object { func (s *connectionAccess) New() runtime.Object {
@ -53,9 +53,9 @@ func (s *connectionAccess) ConvertToTable(ctx context.Context, object runtime.Ob
} }
func (s *connectionAccess) Get(ctx context.Context, name string, options *metav1.GetOptions) (runtime.Object, error) { func (s *connectionAccess) Get(ctx context.Context, name string, options *metav1.GetOptions) (runtime.Object, error) {
return s.configs.GetDataSource(ctx, s.pluginID, name) return s.datasources.Get(ctx, s.pluginID, name)
} }
func (s *connectionAccess) List(ctx context.Context, options *internalversion.ListOptions) (runtime.Object, error) { func (s *connectionAccess) List(ctx context.Context, options *internalversion.ListOptions) (runtime.Object, error) {
return s.configs.ListDatasources(ctx, s.pluginID) return s.datasources.List(ctx, s.pluginID)
} }

View File

@ -18,16 +18,16 @@ import (
// This provides access to settings saved in the database. // This provides access to settings saved in the database.
// Authorization checks will happen within each function, and the user in ctx will // Authorization checks will happen within each function, and the user in ctx will
// limit which namespace/tenant/org we are talking to // limit which namespace/tenant/org we are talking to
type PluginConfigProvider interface { type PluginDatasourceProvider interface {
// GetDataSource gets a specific datasource (that the user in context can see) // Get gets a specific datasource (that the user in context can see)
GetDataSource(ctx context.Context, pluginID, uid string) (*v0alpha1.DataSourceConnection, error) Get(ctx context.Context, pluginID, uid string) (*v0alpha1.DataSourceConnection, error)
// ListDatasources lists all data sources the user in context can see // List lists all data sources the user in context can see
ListDatasources(ctx context.Context, pluginID string) (*v0alpha1.DataSourceConnectionList, error) List(ctx context.Context, pluginID string) (*v0alpha1.DataSourceConnectionList, error)
// Return settings (decrypted!) for a specific plugin // Return settings (decrypted!) for a specific plugin
// This will require "query" permission for the user in context // This will require "query" permission for the user in context
GetDataSourceInstanceSettings(ctx context.Context, pluginID, uid string) (*backend.DataSourceInstanceSettings, error) GetInstanceSettings(ctx context.Context, pluginID, uid string) (*backend.DataSourceInstanceSettings, error)
} }
// PluginContext requires adding system settings (feature flags, etc) to the datasource config // PluginContext requires adding system settings (feature flags, etc) to the datasource config
@ -38,25 +38,25 @@ type PluginContextWrapper interface {
func ProvideDefaultPluginConfigs( func ProvideDefaultPluginConfigs(
dsService datasources.DataSourceService, dsService datasources.DataSourceService,
dsCache datasources.CacheService, dsCache datasources.CacheService,
contextProvider *plugincontext.Provider) PluginConfigProvider { contextProvider *plugincontext.Provider) PluginDatasourceProvider {
return &defaultPluginConfigProvider{ return &defaultPluginDatasourceProvider{
dsService: dsService, dsService: dsService,
dsCache: dsCache, dsCache: dsCache,
contextProvider: contextProvider, contextProvider: contextProvider,
} }
} }
type defaultPluginConfigProvider struct { type defaultPluginDatasourceProvider struct {
dsService datasources.DataSourceService dsService datasources.DataSourceService
dsCache datasources.CacheService dsCache datasources.CacheService
contextProvider *plugincontext.Provider contextProvider *plugincontext.Provider
} }
var ( var (
_ PluginConfigProvider = (*defaultPluginConfigProvider)(nil) _ PluginDatasourceProvider = (*defaultPluginDatasourceProvider)(nil)
) )
func (q *defaultPluginConfigProvider) GetDataSource(ctx context.Context, pluginID, uid string) (*v0alpha1.DataSourceConnection, error) { func (q *defaultPluginDatasourceProvider) Get(ctx context.Context, pluginID, uid string) (*v0alpha1.DataSourceConnection, error) {
info, err := request.NamespaceInfoFrom(ctx, true) info, err := request.NamespaceInfoFrom(ctx, true)
if err != nil { if err != nil {
return nil, err return nil, err
@ -72,7 +72,7 @@ func (q *defaultPluginConfigProvider) GetDataSource(ctx context.Context, pluginI
return asConnection(ds, info.Value) return asConnection(ds, info.Value)
} }
func (q *defaultPluginConfigProvider) ListDatasources(ctx context.Context, pluginID string) (*v0alpha1.DataSourceConnectionList, error) { func (q *defaultPluginDatasourceProvider) List(ctx context.Context, pluginID string) (*v0alpha1.DataSourceConnectionList, error) {
info, err := request.NamespaceInfoFrom(ctx, true) info, err := request.NamespaceInfoFrom(ctx, true)
if err != nil { if err != nil {
return nil, err return nil, err
@ -95,7 +95,7 @@ func (q *defaultPluginConfigProvider) ListDatasources(ctx context.Context, plugi
return result, nil return result, nil
} }
func (q *defaultPluginConfigProvider) GetDataSourceInstanceSettings(ctx context.Context, pluginID, uid string) (*backend.DataSourceInstanceSettings, error) { func (q *defaultPluginDatasourceProvider) GetInstanceSettings(ctx context.Context, pluginID, uid string) (*backend.DataSourceInstanceSettings, error) {
if q.contextProvider == nil { if q.contextProvider == nil {
// NOTE!!! this is only here for the standalone example // NOTE!!! this is only here for the standalone example
// if we cleanup imports this can throw an error // if we cleanup imports this can throw an error

View File

@ -36,7 +36,7 @@ type DataSourceAPIBuilder struct {
pluginJSON plugins.JSONData pluginJSON plugins.JSONData
client plugins.Client // will only ever be called with the same pluginid! client plugins.Client // will only ever be called with the same pluginid!
pluginsConfig PluginConfigProvider datasources PluginDatasourceProvider
contextProvider PluginContextWrapper contextProvider PluginContextWrapper
accessControl accesscontrol.AccessControl accessControl accesscontrol.AccessControl
} }
@ -45,7 +45,7 @@ func RegisterAPIService(
features featuremgmt.FeatureToggles, features featuremgmt.FeatureToggles,
apiRegistrar grafanaapiserver.APIRegistrar, apiRegistrar grafanaapiserver.APIRegistrar,
pluginClient plugins.Client, // access to everything pluginClient plugins.Client, // access to everything
pluginConfigs PluginConfigProvider, datasources PluginDatasourceProvider,
contextProvider PluginContextWrapper, contextProvider PluginContextWrapper,
pluginStore pluginstore.Store, pluginStore pluginstore.Store,
accessControl accesscontrol.AccessControl, accessControl accesscontrol.AccessControl,
@ -69,7 +69,7 @@ func RegisterAPIService(
builder, err = NewDataSourceAPIBuilder(ds.JSONData, builder, err = NewDataSourceAPIBuilder(ds.JSONData,
pluginClient, pluginClient,
pluginConfigs, datasources,
contextProvider, contextProvider,
accessControl, accessControl,
) )
@ -84,7 +84,7 @@ func RegisterAPIService(
func NewDataSourceAPIBuilder( func NewDataSourceAPIBuilder(
plugin plugins.JSONData, plugin plugins.JSONData,
client plugins.Client, client plugins.Client,
pluginsConfig PluginConfigProvider, datasources PluginDatasourceProvider,
contextProvider PluginContextWrapper, contextProvider PluginContextWrapper,
accessControl accesscontrol.AccessControl) (*DataSourceAPIBuilder, error) { accessControl accesscontrol.AccessControl) (*DataSourceAPIBuilder, error) {
ri, err := resourceFromPluginID(plugin.ID) ri, err := resourceFromPluginID(plugin.ID)
@ -96,7 +96,7 @@ func NewDataSourceAPIBuilder(
connectionResourceInfo: ri, connectionResourceInfo: ri,
pluginJSON: plugin, pluginJSON: plugin,
client: client, client: client,
pluginsConfig: pluginsConfig, datasources: datasources,
contextProvider: contextProvider, contextProvider: contextProvider,
accessControl: accessControl, accessControl: accessControl,
}, nil }, nil
@ -155,7 +155,7 @@ func (b *DataSourceAPIBuilder) GetAPIGroupInfo(
conn := b.connectionResourceInfo conn := b.connectionResourceInfo
storage[conn.StoragePath()] = &connectionAccess{ storage[conn.StoragePath()] = &connectionAccess{
pluginID: b.pluginJSON.ID, pluginID: b.pluginJSON.ID,
configs: b.pluginsConfig, datasources: b.datasources,
resourceInfo: conn, resourceInfo: conn,
tableConverter: utils.NewTableConverter( tableConverter: utils.NewTableConverter(
conn.GroupResource(), conn.GroupResource(),
@ -199,7 +199,7 @@ func (b *DataSourceAPIBuilder) GetAPIGroupInfo(
} }
func (b *DataSourceAPIBuilder) getPluginContext(ctx context.Context, uid string) (backend.PluginContext, error) { func (b *DataSourceAPIBuilder) getPluginContext(ctx context.Context, uid string) (backend.PluginContext, error) {
instance, err := b.pluginsConfig.GetDataSourceInstanceSettings(ctx, b.pluginJSON.ID, uid) instance, err := b.datasources.GetInstanceSettings(ctx, b.pluginJSON.ID, uid)
if err != nil { if err != nil {
return backend.PluginContext{}, err return backend.PluginContext{}, err
} }

View File

@ -31,10 +31,10 @@ func NewTestDataAPIServer(group string) (*DataSourceAPIBuilder, error) {
ID: pluginID, ID: pluginID,
}, },
testdatasource.ProvideService(), // the client testdatasource.ProvideService(), // the client
&testdataPluginConfigProvider{ &pluginDatasourceImpl{
startup: v1.Now(), startup: v1.Now(),
}, },
&testdataPluginConfigProvider{}, // stub &pluginDatasourceImpl{}, // stub
&actest.FakeAccessControl{ExpectedEvaluate: true}, &actest.FakeAccessControl{ExpectedEvaluate: true},
) )
} }
@ -56,30 +56,31 @@ func NewTestDataAPIServer(group string) (*DataSourceAPIBuilder, error) {
if !exists { if !exists {
return nil, fmt.Errorf("plugin %s not found", pluginID) return nil, fmt.Errorf("plugin %s not found", pluginID)
} }
return NewDataSourceAPIBuilder( return NewDataSourceAPIBuilder(
td.JSONData, td.JSONData,
testdatasource.ProvideService(), // the client testdatasource.ProvideService(), // the client
&defaultPluginConfigProvider{ &defaultPluginDatasourceProvider{
dsService: dsService, dsService: dsService,
dsCache: dsCache, dsCache: dsCache,
}, },
&testdataPluginConfigProvider{}, // stub &pluginDatasourceImpl{}, // stub
accessControl, accessControl,
) )
} }
// Simple stub for standalone testing // Simple stub for standalone testing
type testdataPluginConfigProvider struct { type pluginDatasourceImpl struct {
startup v1.Time startup v1.Time
} }
var ( var (
_ PluginConfigProvider = (*testdataPluginConfigProvider)(nil) _ PluginDatasourceProvider = (*pluginDatasourceImpl)(nil)
) )
// GetDataSource implements PluginConfigProvider. // Get implements PluginDatasourceProvider.
func (p *testdataPluginConfigProvider) GetDataSource(ctx context.Context, pluginID string, uid string) (*v0alpha1.DataSourceConnection, error) { func (p *pluginDatasourceImpl) Get(ctx context.Context, pluginID string, uid string) (*v0alpha1.DataSourceConnection, error) {
all, err := p.ListDatasources(ctx, pluginID) all, err := p.List(ctx, pluginID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -91,8 +92,8 @@ func (p *testdataPluginConfigProvider) GetDataSource(ctx context.Context, plugin
return nil, fmt.Errorf("not found") return nil, fmt.Errorf("not found")
} }
// ListDatasources implements PluginConfigProvider. // List implements PluginConfigProvider.
func (p *testdataPluginConfigProvider) ListDatasources(ctx context.Context, pluginID string) (*v0alpha1.DataSourceConnectionList, error) { func (p *pluginDatasourceImpl) List(ctx context.Context, pluginID string) (*v0alpha1.DataSourceConnectionList, error) {
info, err := request.NamespaceInfoFrom(ctx, true) info, err := request.NamespaceInfoFrom(ctx, true)
if err != nil { if err != nil {
return nil, err return nil, err
@ -114,11 +115,11 @@ func (p *testdataPluginConfigProvider) ListDatasources(ctx context.Context, plug
} }
// PluginContextForDataSource implements PluginConfigProvider. // PluginContextForDataSource implements PluginConfigProvider.
func (*testdataPluginConfigProvider) GetDataSourceInstanceSettings(ctx context.Context, pluginID, uid string) (*backend.DataSourceInstanceSettings, error) { func (*pluginDatasourceImpl) GetInstanceSettings(ctx context.Context, pluginID, uid string) (*backend.DataSourceInstanceSettings, error) {
return &backend.DataSourceInstanceSettings{}, nil return &backend.DataSourceInstanceSettings{}, nil
} }
// PluginContextWrapper // PluginContextWrapper
func (*testdataPluginConfigProvider) PluginContextForDataSource(ctx context.Context, datasourceSettings *backend.DataSourceInstanceSettings) (backend.PluginContext, error) { func (*pluginDatasourceImpl) PluginContextForDataSource(ctx context.Context, datasourceSettings *backend.DataSourceInstanceSettings) (backend.PluginContext, error) {
return backend.PluginContext{DataSourceInstanceSettings: datasourceSettings}, nil return backend.PluginContext{DataSourceInstanceSettings: datasourceSettings}, nil
} }