vaguerent/internal/core/target_index.go
2022-04-25 12:24:30 -05:00

57 lines
1.3 KiB
Go

package core
import (
"context"
"github.com/hashicorp/go-hclog"
"github.com/hashicorp/vagrant-plugin-sdk/core"
"github.com/hashicorp/vagrant-plugin-sdk/proto/vagrant_plugin_sdk"
"github.com/hashicorp/vagrant/internal/server/proto/vagrant_server"
"github.com/hashicorp/vagrant/internal/serverclient"
)
// TargetIndex represents
type TargetIndex struct {
ctx context.Context
logger hclog.Logger
client *serverclient.VagrantClient
project *Project
// The below are resources we need to close when Close is called, if non-nil
closers []func() error
}
func (t *TargetIndex) Delete(uuid string) (err error) {
_, err = t.client.DeleteTarget(
t.ctx,
&vagrant_server.DeleteTargetRequest{
Target: &vagrant_plugin_sdk.Ref_Target{ResourceId: uuid},
},
)
return
}
func (t *TargetIndex) Get(uuid string) (entry core.Target, err error) {
return t.project.Target(uuid)
}
func (t *TargetIndex) Includes(uuid string) (exists bool, err error) {
_, err = t.project.Target(uuid)
if err == nil {
return true, nil
}
return false, nil
}
func (t *TargetIndex) Set(entry core.Target) (updatedEntry core.Target, err error) {
updatedEntry = entry.(*Target)
err = updatedEntry.Save()
return
}
func (t *TargetIndex) All() (targets []core.Target, err error) {
return t.project.Targets()
}
var _ core.TargetIndex = (*TargetIndex)(nil)