Handle all plugin setup via manager in runner

This commit is contained in:
Chris Roberts 2021-07-29 14:44:51 -07:00 committed by Paul Hinze
parent 0f05203e0f
commit ab0dc954cc
No known key found for this signature in database
GPG Key ID: B69DEDF2D55501C0
2 changed files with 14 additions and 89 deletions

View File

@ -14,80 +14,9 @@ import (
"github.com/hashicorp/vagrant-plugin-sdk/terminal"
configpkg "github.com/hashicorp/vagrant/internal/config"
"github.com/hashicorp/vagrant/internal/core"
"github.com/hashicorp/vagrant/internal/plugin"
"github.com/hashicorp/vagrant/internal/server/proto/vagrant_server"
)
func (r *Runner) LoadPlugins(cfg *configpkg.Config) error {
// Start with loading plugins from the Ruby runtime
plugins, err := r.vagrantRubyClient.GetPlugins()
if err != nil {
return err
}
for _, p := range plugins {
r.logger.Info("loading ruby plugin",
"name", p.Name,
"type", p.Type)
err = r.plugins.Register(
plugin.RubyFactory(r.vagrantRubyRuntime, p.Name, component.Type(p.Type)))
if err != nil {
return err
}
}
// Now lets load builtin plugins
for name, _ := range plugin.Builtins {
r.logger.Info("loading builtin plugin",
"name", name)
err = r.plugins.Register(
plugin.BuiltinFactory(name))
if err != nil {
return err
}
}
// NOTE: basis/project plugins loaded in core
// for name, options := range plugin.Builtins {
// r.logger.Info("loading builtin plugin " + name)
// f := plugin.BuiltinFactory(name, component.PluginInfoType)
// bp, err := dynamic.CallFunc(f, (**plugin.Instance)(nil), []*argmapper.Func{},
// argmapper.Typed(r.logger))
// if err != nil {
// panic(err)
// }
// defer bp.(*plugin.Instance).Close()
// p, ok := bp.(*plugin.Instance).Component.(component.PluginInfo)
// if !ok {
// panic("failed to convert instance to plugin info component")
// }
// typs := p.ComponentTypes()
// r.logger.Info("valid component types for builtin plugin", "name", name, "types", typs)
// cmps := []interface{}{}
// for _, t := range typs {
// cmps = append(cmps, t)
// }
// if plugin.IN_PROCESS_PLUGINS {
// if err := r.builtinPlugins.Add(name, options...); err != nil {
// return err
// }
// }
// cfg.TrackBuiltinPlugin(name, cmps)
// }
// TODO(spox): fix this loading
// if err == nil {
// cfg.TrackPlugin("custom-host", []interface{}{component.HostType})
// }
return nil
}
// executeJob executes an assigned job. This will source the data (if necessary),
// setup the project, execute the job, and return the outcome.
func (r *Runner) executeJob(

View File

@ -105,7 +105,20 @@ func New(opts ...Option) (*Runner, error) {
}
runner.logger = runner.logger.ResetNamed("vagrant.runner")
runner.plugins = plugin.NewManager(runner.logger.Named("plugin-manager"))
if runner.plugins == nil {
runner.plugins = plugin.NewManager(
runner.ctx,
runner.logger.Named("plugin-manager"),
)
}
if err := runner.plugins.LoadBuiltins(); err != nil {
return nil, err
}
if err := runner.plugins.LoadLegacyPlugins(runner.vagrantRubyClient, runner.vagrantRubyRuntime); err != nil {
return nil, err
}
// Setup our runner components list
for _, p := range runner.plugins.Plugins {
@ -175,23 +188,6 @@ func (r *Runner) Start() error {
log.Info("runner registered with server")
// if plugin.IN_PROCESS_PLUGINS {
// r.builtinPlugins = plugin.NewBuiltins(context.Background(), log)
// }
// track plugins
err = r.LoadPlugins(r.opConfig)
if err != nil {
r.logger.Error("unexpected failure while loading plugins",
"error", err)
return err
}
// if r.builtinPlugins != nil {
// r.builtinPlugins.Start()
// }
return nil
}