From 3f86194f60a069a96b7ea2b7f6a15d5c514ce03d Mon Sep 17 00:00:00 2001 From: Chris Roberts Date: Mon, 17 May 2021 16:38:52 -0700 Subject: [PATCH] Replace machine usage with target. Update proto ref location to plugin sdk --- internal/client/basis.go | 5 ++- internal/client/machine.go | 23 ++++++------ internal/client/operation.go | 2 +- internal/client/project.go | 71 ++++++++++++++++++------------------ internal/client/server.go | 1 - 5 files changed, 52 insertions(+), 50 deletions(-) diff --git a/internal/client/basis.go b/internal/client/basis.go index fa7656758..194e9a5b7 100644 --- a/internal/client/basis.go +++ b/internal/client/basis.go @@ -8,6 +8,7 @@ import ( "github.com/hashicorp/go-plugin" "github.com/hashicorp/vagrant-plugin-sdk/helper/paths" + "github.com/hashicorp/vagrant-plugin-sdk/proto/vagrant_plugin_sdk" "github.com/hashicorp/vagrant-plugin-sdk/terminal" configpkg "github.com/hashicorp/vagrant/internal/config" "github.com/hashicorp/vagrant/internal/server/proto/vagrant_server" @@ -166,8 +167,8 @@ func (b *Basis) LoadProject(p *vagrant_server.Project) (*Project, error) { return b.Project, nil } -func (b *Basis) Ref() *vagrant_server.Ref_Basis { - return &vagrant_server.Ref_Basis{ +func (b *Basis) Ref() *vagrant_plugin_sdk.Ref_Basis { + return &vagrant_plugin_sdk.Ref_Basis{ Name: b.basis.Name, ResourceId: b.basis.ResourceId, } diff --git a/internal/client/machine.go b/internal/client/machine.go index a537ecc34..9a70a371c 100644 --- a/internal/client/machine.go +++ b/internal/client/machine.go @@ -5,40 +5,41 @@ import ( "github.com/hashicorp/go-hclog" + "github.com/hashicorp/vagrant-plugin-sdk/proto/vagrant_plugin_sdk" "github.com/hashicorp/vagrant-plugin-sdk/terminal" "github.com/hashicorp/vagrant/internal/server/proto/vagrant_server" ) -type Machine struct { +type Target struct { ui terminal.UI project *Project - machine *vagrant_server.Machine + target *vagrant_server.Target logger hclog.Logger } -func (m *Machine) UI() terminal.UI { +func (m *Target) UI() terminal.UI { return m.ui } -func (m *Machine) Ref() *vagrant_server.Ref_Machine { - return &vagrant_server.Ref_Machine{ - ResourceId: m.machine.ResourceId, - Name: m.machine.Name, +func (m *Target) Ref() *vagrant_plugin_sdk.Ref_Target { + return &vagrant_plugin_sdk.Ref_Target{ + ResourceId: m.target.ResourceId, + Name: m.target.Name, Project: m.project.Ref(), } } -func (m *Machine) job() *vagrant_server.Job { +func (m *Target) job() *vagrant_server.Job { job := m.project.job() - job.Machine = m.Ref() + job.Target = m.Ref() return job } -func (m *Machine) Close() error { +func (m *Target) Close() error { return m.project.Close() } -func (m *Machine) doJob(ctx context.Context, job *vagrant_server.Job) (*vagrant_server.Job_Result, error) { +func (m *Target) doJob(ctx context.Context, job *vagrant_server.Job) (*vagrant_server.Job_Result, error) { return m.project.doJob(ctx, job, m.ui) } diff --git a/internal/client/operation.go b/internal/client/operation.go index 19c014908..290ac780f 100644 --- a/internal/client/operation.go +++ b/internal/client/operation.go @@ -77,7 +77,7 @@ func (p *Project) Task(ctx context.Context, op *vagrant_server.Job_RunOp) (*vagr return result.Run, err } -func (m *Machine) Task(ctx context.Context, op *vagrant_server.Job_RunOp) (*vagrant_server.Job_RunResult, error) { +func (m *Target) Task(ctx context.Context, op *vagrant_server.Job_RunOp) (*vagrant_server.Job_RunResult, error) { if op == nil { op = &vagrant_server.Job_RunOp{} } diff --git a/internal/client/project.go b/internal/client/project.go index 40a5152e8..3070fe879 100644 --- a/internal/client/project.go +++ b/internal/client/project.go @@ -20,73 +20,74 @@ import ( type Project struct { ui terminal.UI - Machines []*Machine + Targets []*Target basis *Basis project *vagrant_server.Project logger hclog.Logger } -func (p *Project) LoadMachine(m *vagrant_server.Machine) (*Machine, error) { - machine, err := p.GetMachine(m.Name) +func (p *Project) LoadTarget(t *vagrant_server.Target) (*Target, error) { + target, err := p.GetTarget(t.Name) if err == nil { - return machine, nil + return target, nil } // Ensure the machine is set to this project - m.Project = p.Ref() + t.Project = p.Ref() - result, err := p.basis.client.FindMachine( + result, err := p.basis.client.FindTarget( context.Background(), - &vagrant_server.FindMachineRequest{ - Machine: m, + &vagrant_server.FindTargetRequest{ + Target: t, }, ) if err == nil && result.Found { - machine := &Machine{ + target := &Target{ ui: p.UI(), project: p, - machine: result.Machine, - logger: p.logger.Named("machine"), + target: result.Target, + logger: p.logger.Named("target"), } - p.Machines = append(p.Machines, machine) + p.Targets = append(p.Targets, target) - return machine, nil + return target, nil } - p.logger.Trace("failed to locate existing machine", "machine", m, + p.logger.Trace("failed to locate existing target", "target", t, "result", result, "error", err) // TODO: set machine box from vagrant file - if m.Datadir == nil { - m.Datadir = p.GetDataDir() + if t.Datadir == nil { + t.Datadir = p.GetDataDir() } - if m.Provider == "" { - m.Provider, err = p.GetDefaultProvider([]string{}, false, true) - } + // TODO: this is specialized + // if t.Provider == "" { + // t.Provider, err = p.GetDefaultProvider([]string{}, false, true) + // } - uresult, err := p.basis.client.UpsertMachine( + uresult, err := p.basis.client.UpsertTarget( context.Background(), - &vagrant_server.UpsertMachineRequest{ - Machine: m, + &vagrant_server.UpsertTargetRequest{ + Target: t, }, ) if err != nil { return nil, err } - machine = &Machine{ + target = &Target{ ui: p.UI(), project: p, - machine: uresult.Machine, - logger: p.logger.Named("machine"), + target: uresult.Target, + logger: p.logger.Named("target"), } - p.Machines = append(p.Machines, machine) + p.Targets = append(p.Targets, target) - return machine, nil + return target, nil } // TODO: Determine default provider by implementing algorithm from @@ -103,7 +104,7 @@ func (p *Project) GetDefaultProvider(exclude []string, forceDefault bool, checkU return "virtualbox", nil } -func (p *Project) GetDataDir() *vagrant_plugin_sdk.Args_DataDir_Machine { +func (p *Project) GetDataDir() *vagrant_plugin_sdk.Args_DataDir_Target { // TODO: probably need to get datadir from the projet + basis root, _ := paths.VagrantHome() @@ -111,7 +112,7 @@ func (p *Project) GetDataDir() *vagrant_plugin_sdk.Args_DataDir_Machine { dataDir := root.Join("data") tmpDir := root.Join("tmp") - return &vagrant_plugin_sdk.Args_DataDir_Machine{ + return &vagrant_plugin_sdk.Args_DataDir_Target{ CacheDir: cacheDir.String(), DataDir: dataDir.String(), RootDir: root.String(), @@ -119,13 +120,13 @@ func (p *Project) GetDataDir() *vagrant_plugin_sdk.Args_DataDir_Machine { } } -func (p *Project) GetMachine(name string) (m *Machine, err error) { - for _, m = range p.Machines { - if m.Ref().Name == name { +func (p *Project) GetTarget(name string) (t *Target, err error) { + for _, t = range p.Targets { + if t.Ref().Name == name { return } } - return nil, errors.New("failed to locate requested machine") + return nil, errors.New("failed to locate requested target") } func (p *Project) UI() terminal.UI { @@ -137,8 +138,8 @@ func (p *Project) Close() error { } // Ref returns the raw Vagrant server API client. -func (p *Project) Ref() *vagrant_server.Ref_Project { - return &vagrant_server.Ref_Project{ +func (p *Project) Ref() *vagrant_plugin_sdk.Ref_Project { + return &vagrant_plugin_sdk.Ref_Project{ Name: p.project.Name, ResourceId: p.project.ResourceId, Basis: p.basis.Ref(), diff --git a/internal/client/server.go b/internal/client/server.go index 29f2d42e6..2107bdc99 100644 --- a/internal/client/server.go +++ b/internal/client/server.go @@ -13,7 +13,6 @@ import ( "github.com/hashicorp/go-plugin" "google.golang.org/grpc" - "github.com/hashicorp/vagrant-plugin-sdk/proto/vagrant_plugin_sdk" "github.com/hashicorp/vagrant/internal/protocolversion" "github.com/hashicorp/vagrant/internal/server" "github.com/hashicorp/vagrant/internal/server/proto/vagrant_server"