46 lines
942 B
Go

package client
import (
"context"
"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 Target struct {
ui terminal.UI
project *Project
target *vagrant_server.Target
logger hclog.Logger
}
func (m *Target) UI() terminal.UI {
return m.ui
}
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 *Target) job() *vagrant_server.Job {
job := m.project.job()
job.Target = m.Ref()
return job
}
func (m *Target) Close() error {
return m.project.Close()
}
func (m *Target) doJob(ctx context.Context, job *vagrant_server.Job) (*vagrant_server.Job_Result, error) {
return m.project.doJob(ctx, job, m.ui)
}