Plugin loader: refactor step evaluation (#85881)

This commit is contained in:
Andres Martinez Gotor
2024-04-11 09:41:05 +02:00
committed by GitHub
parent 1e9841b1c9
commit f375af793f
7 changed files with 89 additions and 98 deletions

View File

@@ -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)

View File

@@ -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
},