diff --git a/internal/runner/operation.go b/internal/runner/operation.go index c898309af..db3e81e31 100644 --- a/internal/runner/operation.go +++ b/internal/runner/operation.go @@ -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( diff --git a/internal/runner/runner.go b/internal/runner/runner.go index 90d838e35..41f5c0a2c 100644 --- a/internal/runner/runner.go +++ b/internal/runner/runner.go @@ -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 }