From 7cc07642a56f71d38ea347874f032b6d61fb2dd5 Mon Sep 17 00:00:00 2001 From: Chris Roberts Date: Mon, 18 Oct 2021 15:09:58 -0700 Subject: [PATCH] Use project for host capabilities --- internal/core/basis.go | 8 -------- internal/core/project.go | 15 ++++++++++++++- plugins/commands/serve/service/host_service.rb | 2 +- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/internal/core/basis.go b/internal/core/basis.go index 58e303b40..ee5a8b0d4 100644 --- a/internal/core/basis.go +++ b/internal/core/basis.go @@ -257,14 +257,6 @@ func (b *Basis) Host() (host core.Host, err error) { return nil, fmt.Errorf("failed to detect host plugin for current platform") } - if s, ok := result.(core.Seeder); ok { - if err = s.Seed(b.statebag); err != nil { - return nil, err - } - } else { - return nil, fmt.Errorf("host plugin does not support seeder interface") - } - b.logger.Info("host detection complete", "name", result_name) diff --git a/internal/core/project.go b/internal/core/project.go index a6347686d..37caf5a64 100644 --- a/internal/core/project.go +++ b/internal/core/project.go @@ -114,7 +114,20 @@ func (p *Project) DefaultPrivateKey() (path string, err error) { // Host implements core.Project func (p *Project) Host() (host core.Host, err error) { - return p.basis.Host() + if host, err = p.basis.Host(); err != nil { + return + } + if s, ok := host.(core.Seeder); ok { + list, err := s.Seeds() + if err != nil { + return nil, err + } + list = append(list, p) + if err = s.Seed(list...); err != nil { + return nil, err + } + } + return } // MachineIndex implements core.Project diff --git a/plugins/commands/serve/service/host_service.rb b/plugins/commands/serve/service/host_service.rb index f95ab440f..2065eb351 100644 --- a/plugins/commands/serve/service/host_service.rb +++ b/plugins/commands/serve/service/host_service.rb @@ -12,7 +12,7 @@ module VagrantPlugins default_args = [ # Always get the state bag for host capabilities SDK::FuncSpec::Value.new( - type: "hashicorp.vagrant.sdk.Args.StateBag", + type: "hashicorp.vagrant.sdk.Args.Project", name: "", ), ]