mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Plugin loader: refactor step evaluation (#85881)
This commit is contained in:
committed by
GitHub
parent
1e9841b1c9
commit
f375af793f
@@ -44,19 +44,34 @@ func (l *Loader) Load(ctx context.Context, src plugins.PluginSource) ([]*plugins
|
||||
return nil, err
|
||||
}
|
||||
|
||||
bootstrappedPlugins, err := l.bootstrap.Bootstrap(ctx, src, discoveredPlugins)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
bootstrappedPlugins := []*plugins.Plugin{}
|
||||
for _, foundBundle := range discoveredPlugins {
|
||||
bootstrappedPlugin, err := l.bootstrap.Bootstrap(ctx, src, foundBundle)
|
||||
if err != nil {
|
||||
// TODO: Add error to registry
|
||||
continue
|
||||
}
|
||||
bootstrappedPlugins = append(bootstrappedPlugins, bootstrappedPlugin...)
|
||||
}
|
||||
|
||||
validatedPlugins, err := l.validation.Validate(ctx, bootstrappedPlugins)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
validatedPlugins := []*plugins.Plugin{}
|
||||
for _, bootstrappedPlugin := range bootstrappedPlugins {
|
||||
err := l.validation.Validate(ctx, bootstrappedPlugin)
|
||||
if err != nil {
|
||||
// TODO: Add error to registry
|
||||
continue
|
||||
}
|
||||
validatedPlugins = append(validatedPlugins, bootstrappedPlugin)
|
||||
}
|
||||
|
||||
initializedPlugins, err := l.initializer.Initialize(ctx, validatedPlugins)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
initializedPlugins := []*plugins.Plugin{}
|
||||
for _, validatedPlugin := range validatedPlugins {
|
||||
initializedPlugin, err := l.initializer.Initialize(ctx, validatedPlugin)
|
||||
if err != nil {
|
||||
// TODO: Add error to registry
|
||||
continue
|
||||
}
|
||||
initializedPlugins = append(initializedPlugins, initializedPlugin)
|
||||
}
|
||||
|
||||
end(initializedPlugins)
|
||||
|
||||
@@ -450,24 +450,22 @@ func TestLoader_Load(t *testing.T) {
|
||||
return []*plugins.FoundBundle{{Primary: plugins.FoundPlugin{JSONData: pluginJSON}}}, nil
|
||||
},
|
||||
}, &fakes.FakeBootstrapper{
|
||||
BootstrapFunc: func(ctx context.Context, s plugins.PluginSource, b []*plugins.FoundBundle) ([]*plugins.Plugin, error) {
|
||||
require.True(t, len(b) == 1)
|
||||
require.Equal(t, b[0].Primary.JSONData, pluginJSON)
|
||||
BootstrapFunc: func(ctx context.Context, s plugins.PluginSource, b *plugins.FoundBundle) ([]*plugins.Plugin, error) {
|
||||
require.Equal(t, b.Primary.JSONData, pluginJSON)
|
||||
require.Equal(t, src, s)
|
||||
|
||||
steps = append(steps, "bootstrap")
|
||||
return []*plugins.Plugin{plugin}, nil
|
||||
},
|
||||
}, &fakes.FakeValidator{ValidateFunc: func(ctx context.Context, ps []*plugins.Plugin) ([]*plugins.Plugin, error) {
|
||||
require.Equal(t, []*plugins.Plugin{plugin}, ps)
|
||||
}, &fakes.FakeValidator{ValidateFunc: func(ctx context.Context, ps *plugins.Plugin) error {
|
||||
require.Equal(t, plugin, ps)
|
||||
|
||||
steps = append(steps, "validate")
|
||||
return ps, nil
|
||||
return nil
|
||||
}},
|
||||
&fakes.FakeInitializer{
|
||||
IntializeFunc: func(ctx context.Context, ps []*plugins.Plugin) ([]*plugins.Plugin, error) {
|
||||
require.True(t, len(ps) == 1)
|
||||
require.Equal(t, ps[0].JSONData, pluginJSON)
|
||||
IntializeFunc: func(ctx context.Context, ps *plugins.Plugin) (*plugins.Plugin, error) {
|
||||
require.Equal(t, ps.JSONData, pluginJSON)
|
||||
steps = append(steps, "initialize")
|
||||
return ps, nil
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user