Update server service and state to use Target and refs from sdk

This commit is contained in:
Chris Roberts 2021-05-17 16:45:10 -07:00 committed by Paul Hinze
parent 4f25d67288
commit 3e58d4dc42
No known key found for this signature in database
GPG Key ID: B69DEDF2D55501C0
8 changed files with 87 additions and 105 deletions

View File

@ -22,7 +22,7 @@ type service struct {
id string
vagrant_server.UnimplementedVagrantServer
vagrant_plugin_sdk.UnimplementedMachineServiceServer
vagrant_plugin_sdk.UnimplementedTargetServiceServer
vagrant_plugin_sdk.UnimplementedProjectServiceServer
}

View File

@ -9,6 +9,7 @@ import (
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"github.com/hashicorp/vagrant-plugin-sdk/proto/vagrant_plugin_sdk"
"github.com/hashicorp/vagrant/internal/server/proto/vagrant_server"
)
@ -34,7 +35,7 @@ func (s *State) BasisFind(b *vagrant_server.Basis) (*vagrant_server.Basis, error
return result, err
}
func (s *State) BasisGet(ref *vagrant_server.Ref_Basis) (*vagrant_server.Basis, error) {
func (s *State) BasisGet(ref *vagrant_plugin_sdk.Ref_Basis) (*vagrant_server.Basis, error) {
memTxn := s.inmem.Txn(false)
defer memTxn.Abort()
@ -62,7 +63,7 @@ func (s *State) BasisPut(b *vagrant_server.Basis) error {
return err
}
func (s *State) BasisDelete(ref *vagrant_server.Ref_Basis) error {
func (s *State) BasisDelete(ref *vagrant_plugin_sdk.Ref_Basis) error {
memTxn := s.inmem.Txn(true)
defer memTxn.Abort()
@ -77,7 +78,7 @@ func (s *State) BasisDelete(ref *vagrant_server.Ref_Basis) error {
return err
}
func (s *State) BasisList() ([]*vagrant_server.Ref_Basis, error) {
func (s *State) BasisList() ([]*vagrant_plugin_sdk.Ref_Basis, error) {
memTxn := s.inmem.Txn(false)
defer memTxn.Abort()
@ -87,7 +88,7 @@ func (s *State) BasisList() ([]*vagrant_server.Ref_Basis, error) {
func (s *State) basisGet(
dbTxn *bolt.Tx,
memTxn *memdb.Txn,
ref *vagrant_server.Ref_Basis,
ref *vagrant_plugin_sdk.Ref_Basis,
) (*vagrant_server.Basis, error) {
var result vagrant_server.Basis
b := dbTxn.Bucket(basisBucket)
@ -136,7 +137,7 @@ func (s *State) basisFind(
return nil, status.Errorf(codes.NotFound, "record not found for Basis")
}
return s.basisGet(dbTxn, memTxn, &vagrant_server.Ref_Basis{
return s.basisGet(dbTxn, memTxn, &vagrant_plugin_sdk.Ref_Basis{
ResourceId: match.Id,
})
}
@ -177,13 +178,13 @@ func (s *State) basisPut(
func (s *State) basisList(
memTxn *memdb.Txn,
) ([]*vagrant_server.Ref_Basis, error) {
) ([]*vagrant_plugin_sdk.Ref_Basis, error) {
iter, err := memTxn.Get(basisIndexTableName, basisIndexIdIndexName+"_prefix", "")
if err != nil {
return nil, err
}
var result []*vagrant_server.Ref_Basis
var result []*vagrant_plugin_sdk.Ref_Basis
for {
next := iter.Next()
if next == nil {
@ -191,7 +192,7 @@ func (s *State) basisList(
}
idx := next.(*basisIndexRecord)
result = append(result, &vagrant_server.Ref_Basis{
result = append(result, &vagrant_plugin_sdk.Ref_Basis{
ResourceId: idx.Id,
Name: idx.Name,
})
@ -203,7 +204,7 @@ func (s *State) basisList(
func (s *State) basisDelete(
dbTxn *bolt.Tx,
memTxn *memdb.Txn,
ref *vagrant_server.Ref_Basis,
ref *vagrant_plugin_sdk.Ref_Basis,
) error {
b, err := s.basisGet(dbTxn, memTxn, ref)
if err != nil {
@ -306,7 +307,7 @@ func (s *State) newBasisIndexRecord(b *vagrant_server.Basis) *basisIndexRecord {
}
}
func (s *State) newBasisIndexRecordByRef(ref *vagrant_server.Ref_Basis) *basisIndexRecord {
func (s *State) newBasisIndexRecordByRef(ref *vagrant_plugin_sdk.Ref_Basis) *basisIndexRecord {
return &basisIndexRecord{
Id: ref.ResourceId,
Name: strings.ToLower(ref.Name),
@ -317,6 +318,6 @@ func (s *State) basisId(b *vagrant_server.Basis) []byte {
return []byte(b.ResourceId)
}
func (s *State) basisIdByRef(ref *vagrant_server.Ref_Basis) []byte {
func (s *State) basisIdByRef(ref *vagrant_plugin_sdk.Ref_Basis) []byte {
return []byte(ref.ResourceId)
}

View File

@ -7,6 +7,7 @@ import (
"github.com/boltdb/bolt"
"github.com/golang/protobuf/proto"
"github.com/hashicorp/go-memdb"
"github.com/hashicorp/vagrant-plugin-sdk/proto/vagrant_plugin_sdk"
"github.com/hashicorp/vagrant/internal/server/proto/vagrant_server"
serversort "github.com/hashicorp/vagrant/internal/server/sort"
@ -159,7 +160,7 @@ func (s *State) configGetExact(
// return nil, err
// }
case *vagrant_server.Ref_Project:
case *vagrant_plugin_sdk.Ref_Project:
var err error
iter, err = memTxn.Get(
configIndexTableName,

View File

@ -17,6 +17,7 @@ import (
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"github.com/hashicorp/vagrant-plugin-sdk/proto/vagrant_plugin_sdk"
"github.com/hashicorp/vagrant/internal/server/proto/vagrant_server"
)
@ -96,9 +97,9 @@ func (op *genericOperation) Get(s *State, ref *vagrant_server.Ref_Operation) (in
case *vagrant_server.Ref_Operation_Id:
id = t.Id
case *vagrant_server.Ref_Operation_MachineSequence:
case *vagrant_server.Ref_Operation_TargetSequence:
var err error
id, err = op.getIdForSeq(s, tx, memTxn, t.MachineSequence.Number)
id, err = op.getIdForSeq(s, tx, memTxn, t.TargetSequence.Number)
if err != nil {
return err
}
@ -138,11 +139,11 @@ func (op *genericOperation) getIdForSeq(
var args []interface{}
var number uint64
if r, ok := ref.(*vagrant_server.Ref_MachineOperationSeq); ok {
if r, ok := ref.(*vagrant_server.Ref_TargetOperationSeq); ok {
args = []interface{}{
r.Machine.Project.Basis.ResourceId,
r.Machine.Project.ResourceId,
r.Machine.ResourceId,
r.Target.Project.Basis.ResourceId,
r.Target.Project.ResourceId,
r.Target.ResourceId,
r.Number,
}
number = r.Number
@ -299,21 +300,21 @@ func (op *genericOperation) Latest(
var args []interface{}
if r, ok := ref.(*vagrant_server.Ref_Machine); ok {
if r, ok := ref.(*vagrant_plugin_sdk.Ref_Target); ok {
args = []interface{}{
r.Project.Basis.ResourceId,
r.Project.ResourceId,
r.ResourceId,
indexTimeLatest{},
}
} else if r, ok := ref.(*vagrant_server.Ref_Project); ok {
} else if r, ok := ref.(*vagrant_plugin_sdk.Ref_Project); ok {
args = []interface{}{
r.Basis.ResourceId,
r.ResourceId,
"",
indexTimeLatest{},
}
} else if r, ok := ref.(*vagrant_server.Ref_Basis); ok {
} else if r, ok := ref.(*vagrant_plugin_sdk.Ref_Basis); ok {
args = []interface{}{
r.ResourceId,
"",
@ -410,11 +411,11 @@ func (op *genericOperation) dbPut(
}
// Determine the type so we can default the put
if r, ok := ref.(*vagrant_server.Ref_Machine); ok {
_, err = s.machineGet(dbTxn, memTxn, r)
} else if r, ok := ref.(*vagrant_server.Ref_Project); ok {
if r, ok := ref.(*vagrant_plugin_sdk.Ref_Target); ok {
_, err = s.targetGet(dbTxn, memTxn, r)
} else if r, ok := ref.(*vagrant_plugin_sdk.Ref_Project); ok {
_, err = s.projectGet(dbTxn, memTxn, r)
} else if r, ok := ref.(*vagrant_server.Ref_Basis); ok {
} else if r, ok := ref.(*vagrant_plugin_sdk.Ref_Basis); ok {
_, err = s.basisGet(dbTxn, memTxn, r)
} else {
err = status.Error(codes.Internal,
@ -485,7 +486,7 @@ func (op *genericOperation) dbPut(
func (op *genericOperation) getSeq(ref interface{}) *uint64 {
// Our ref can be a machine, project, or basis. Determine type and then
// find sequence
if r, ok := ref.(*vagrant_server.Ref_Machine); ok {
if r, ok := ref.(*vagrant_plugin_sdk.Ref_Target); ok {
// Machine operations are scoped to the project
if op.seqProject == nil {
op.seqProject = map[string]*uint64{}
@ -498,7 +499,7 @@ func (op *genericOperation) getSeq(ref interface{}) *uint64 {
op.seqProject[k] = seq
}
return seq
} else if r, ok := ref.(*vagrant_server.Ref_Project); ok {
} else if r, ok := ref.(*vagrant_plugin_sdk.Ref_Project); ok {
if op.seqProject == nil {
op.seqProject = map[string]*uint64{}
}
@ -510,7 +511,7 @@ func (op *genericOperation) getSeq(ref interface{}) *uint64 {
op.seqProject[k] = seq
}
return seq
} else if r, ok := ref.(*vagrant_server.Ref_Basis); ok {
} else if r, ok := ref.(*vagrant_plugin_sdk.Ref_Basis); ok {
if op.seqBasis == nil {
op.seqBasis = map[string]*uint64{}
}
@ -600,15 +601,15 @@ func (op *genericOperation) indexPut(s *State, txn *memdb.Txn, value proto.Messa
// Get any reference information we can extract from the operation
var basis, project, machine string
if ref := op.valueField(value, "Machine").(*vagrant_server.Ref_Machine); ref != nil {
if ref := op.valueField(value, "Machine").(*vagrant_plugin_sdk.Ref_Target); ref != nil {
basis = ref.Project.Basis.ResourceId
project = ref.Project.ResourceId
machine = ref.ResourceId
} else if ref := op.valueField(value, "Project").(*vagrant_server.Ref_Project); ref != nil {
} else if ref := op.valueField(value, "Project").(*vagrant_plugin_sdk.Ref_Project); ref != nil {
basis = ref.Basis.ResourceId
project = ref.ResourceId
} else {
ref := op.valueField(value, "Basis").(*vagrant_server.Ref_Basis)
ref := op.valueField(value, "Basis").(*vagrant_plugin_sdk.Ref_Basis)
basis = ref.ResourceId
}
@ -766,16 +767,16 @@ type operationIndexRecord struct {
// this because we use LowerBound lookups in memdb and this may return
// a non-matching value at a certain point after iteration.
func (rec *operationIndexRecord) MatchRef(ref interface{}) bool {
if r, ok := ref.(*vagrant_server.Ref_Machine); ok {
if r, ok := ref.(*vagrant_plugin_sdk.Ref_Target); ok {
return rec.Machine == r.ResourceId &&
rec.Project == r.Project.ResourceId &&
rec.Basis == r.Project.Basis.ResourceId
}
if r, ok := ref.(*vagrant_server.Ref_Project); ok {
if r, ok := ref.(*vagrant_plugin_sdk.Ref_Project); ok {
return rec.Project == r.ResourceId &&
rec.Basis == r.Basis.ResourceId
}
if r, ok := ref.(*vagrant_server.Ref_Basis); ok {
if r, ok := ref.(*vagrant_plugin_sdk.Ref_Basis); ok {
return rec.Basis == r.ResourceId
}
return false
@ -791,9 +792,9 @@ const (
// listOperationsOptions are options that can be set for List calls on
// operations for filtering and limiting the response.
type listOperationsOptions struct {
Basis *vagrant_server.Ref_Basis
Project *vagrant_server.Ref_Project
Machine *vagrant_server.Ref_Machine
Basis *vagrant_plugin_sdk.Ref_Basis
Project *vagrant_plugin_sdk.Ref_Project
Machine *vagrant_plugin_sdk.Ref_Target
Status []*vagrant_server.StatusFilter
Order *vagrant_server.OperationOrder
PhysicalState vagrant_server.Operation_PhysicalState
@ -801,11 +802,11 @@ type listOperationsOptions struct {
func buildListOperationsOptions(ref interface{}, opts ...ListOperationOption) *listOperationsOptions {
var result listOperationsOptions
if r, ok := ref.(*vagrant_server.Ref_Basis); ok {
if r, ok := ref.(*vagrant_plugin_sdk.Ref_Basis); ok {
result.Basis = r
} else if r, ok := ref.(*vagrant_server.Ref_Project); ok {
} else if r, ok := ref.(*vagrant_plugin_sdk.Ref_Project); ok {
result.Project = r
} else if r, ok := ref.(*vagrant_server.Ref_Machine); ok {
} else if r, ok := ref.(*vagrant_plugin_sdk.Ref_Target); ok {
result.Machine = r
} else {
// TODO(spox): do something better here?
@ -822,19 +823,19 @@ func buildListOperationsOptions(ref interface{}, opts ...ListOperationOption) *l
// ListOperationOption is an exported type to set configuration for listing operations.
type ListOperationOption func(opts *listOperationsOptions)
func ListWithBasis(b *vagrant_server.Ref_Basis) ListOperationOption {
func ListWithBasis(b *vagrant_plugin_sdk.Ref_Basis) ListOperationOption {
return func(opts *listOperationsOptions) {
opts.Basis = b
}
}
func ListWithProject(p *vagrant_server.Ref_Project) ListOperationOption {
func ListWithProject(p *vagrant_plugin_sdk.Ref_Project) ListOperationOption {
return func(opts *listOperationsOptions) {
opts.Project = p
}
}
func ListWithMachine(m *vagrant_server.Ref_Machine) ListOperationOption {
func ListWithMachine(m *vagrant_plugin_sdk.Ref_Target) ListOperationOption {
return func(opts *listOperationsOptions) {
opts.Machine = m
}

View File

@ -15,6 +15,7 @@ import (
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"github.com/hashicorp/vagrant-plugin-sdk/proto/vagrant_plugin_sdk"
"github.com/hashicorp/vagrant/internal/server/logbuffer"
"github.com/hashicorp/vagrant/internal/server/proto/vagrant_server"
)
@ -114,9 +115,9 @@ type jobIndex struct {
// The basis/project/machine that this job is part of. This is used
// to determine if the job is blocked. See job_assigned.go for more details.
Basis *vagrant_server.Ref_Basis
Project *vagrant_server.Ref_Project
Machine *vagrant_server.Ref_Machine
Basis *vagrant_plugin_sdk.Ref_Basis
Project *vagrant_plugin_sdk.Ref_Project
Target *vagrant_plugin_sdk.Ref_Target
// QueueTime is the time that the job was queued.
QueueTime time.Time
@ -813,7 +814,7 @@ func (s *State) jobIndexSet(txn *memdb.Txn, id []byte, jobpb *vagrant_server.Job
State: jobpb.State,
Basis: jobpb.Basis,
Project: jobpb.Project,
Machine: jobpb.Machine,
Target: jobpb.Target,
OpType: reflect.TypeOf(jobpb.Operation),
}

View File

@ -115,9 +115,9 @@ func (s *State) jobAssignedSet(memTxn *memdb.Txn, idx *jobIndex, assigned bool)
}
func (s *State) jobAssignedIdxArgs(idx *jobIndex) []interface{} {
if idx.Machine != nil {
if idx.Target != nil {
return []interface{}{
idx.Machine.Project.Basis.ResourceId, idx.Machine.Project.ResourceId, idx.Machine.ResourceId,
idx.Target.Project.Basis.ResourceId, idx.Target.Project.ResourceId, idx.Target.ResourceId,
}
} else if idx.Project != nil {
return []interface{}{

View File

@ -9,6 +9,7 @@ import (
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"github.com/hashicorp/vagrant-plugin-sdk/proto/vagrant_plugin_sdk"
"github.com/hashicorp/vagrant/internal/server/proto/vagrant_server"
serverptypes "github.com/hashicorp/vagrant/internal/server/ptypes"
)
@ -52,7 +53,7 @@ func (s *State) ProjectFind(p *vagrant_server.Project) (*vagrant_server.Project,
}
// ProjectGet gets a project by reference.
func (s *State) ProjectGet(ref *vagrant_server.Ref_Project) (*vagrant_server.Project, error) {
func (s *State) ProjectGet(ref *vagrant_plugin_sdk.Ref_Project) (*vagrant_server.Project, error) {
memTxn := s.inmem.Txn(false)
defer memTxn.Abort()
@ -68,7 +69,7 @@ func (s *State) ProjectGet(ref *vagrant_server.Ref_Project) (*vagrant_server.Pro
// ProjectDelete deletes a project by reference. This is a complete data
// delete. This will delete all operations associated with this project
// as well.
func (s *State) ProjectDelete(ref *vagrant_server.Ref_Project) error {
func (s *State) ProjectDelete(ref *vagrant_plugin_sdk.Ref_Project) error {
memTxn := s.inmem.Txn(true)
defer memTxn.Abort()
@ -85,7 +86,7 @@ func (s *State) ProjectDelete(ref *vagrant_server.Ref_Project) error {
}
// ProjectList returns the list of projects.
func (s *State) ProjectList() ([]*vagrant_server.Ref_Project, error) {
func (s *State) ProjectList() ([]*vagrant_plugin_sdk.Ref_Project, error) {
memTxn := s.inmem.Txn(false)
defer memTxn.Abort()
@ -134,7 +135,7 @@ func (s *State) projectFind(
return nil, status.Errorf(codes.NotFound, "record not found for Project")
}
return s.projectGet(dbTxn, memTxn, &vagrant_server.Ref_Project{
return s.projectGet(dbTxn, memTxn, &vagrant_plugin_sdk.Ref_Project{
ResourceId: match.Id,
})
}
@ -147,7 +148,7 @@ func (s *State) projectPut(
s.log.Trace("storing project", "project", value, "basis", value.Basis)
// Grab the stored project if it's available
existProject, err := s.projectGet(dbTxn, memTxn, &vagrant_server.Ref_Project{
existProject, err := s.projectGet(dbTxn, memTxn, &vagrant_plugin_sdk.Ref_Project{
ResourceId: value.ResourceId,
})
if err != nil {
@ -229,7 +230,7 @@ func (s *State) projectPut(
func (s *State) projectGet(
dbTxn *bolt.Tx,
memTxn *memdb.Txn,
ref *vagrant_server.Ref_Project,
ref *vagrant_plugin_sdk.Ref_Project,
) (*vagrant_server.Project, error) {
var result vagrant_server.Project
b := dbTxn.Bucket(projectBucket)
@ -238,13 +239,13 @@ func (s *State) projectGet(
func (s *State) projectList(
memTxn *memdb.Txn,
) ([]*vagrant_server.Ref_Project, error) {
) ([]*vagrant_plugin_sdk.Ref_Project, error) {
iter, err := memTxn.Get(projectIndexTableName, projectIndexIdIndexName+"_prefix", "")
if err != nil {
return nil, err
}
var result []*vagrant_server.Ref_Project
var result []*vagrant_plugin_sdk.Ref_Project
for {
next := iter.Next()
if next == nil {
@ -252,7 +253,7 @@ func (s *State) projectList(
}
idx := next.(*projectIndexRecord)
result = append(result, &vagrant_server.Ref_Project{
result = append(result, &vagrant_plugin_sdk.Ref_Project{
ResourceId: idx.Id,
Name: idx.Name,
})
@ -264,7 +265,7 @@ func (s *State) projectList(
func (s *State) projectDelete(
dbTxn *bolt.Tx,
memTxn *memdb.Txn,
ref *vagrant_server.Ref_Project,
ref *vagrant_plugin_sdk.Ref_Project,
) (err error) {
p, err := s.projectGet(dbTxn, memTxn, ref)
if err != nil {
@ -272,8 +273,8 @@ func (s *State) projectDelete(
}
// Start with scrubbing all the machines
for _, m := range p.Machines {
if err = s.machineDelete(dbTxn, memTxn, m); err != nil {
for _, m := range p.Targets {
if err = s.targetDelete(dbTxn, memTxn, m); err != nil {
return
}
}
@ -378,7 +379,7 @@ func (s *State) newProjectIndexRecord(p *vagrant_server.Project) *projectIndexRe
}
}
func (s *State) newProjectIndexRecordByRef(ref *vagrant_server.Ref_Project) *projectIndexRecord {
func (s *State) newProjectIndexRecordByRef(ref *vagrant_plugin_sdk.Ref_Project) *projectIndexRecord {
return &projectIndexRecord{
Id: ref.ResourceId,
Name: strings.ToLower(ref.Name),
@ -389,6 +390,6 @@ func (s *State) projectId(p *vagrant_server.Project) []byte {
return []byte(p.ResourceId)
}
func (s *State) projectIdByRef(ref *vagrant_server.Ref_Project) []byte {
func (s *State) projectIdByRef(ref *vagrant_plugin_sdk.Ref_Project) []byte {
return []byte(ref.ResourceId)
}

View File

@ -9,6 +9,7 @@ import (
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"github.com/hashicorp/vagrant-plugin-sdk/proto/vagrant_plugin_sdk"
"github.com/hashicorp/vagrant/internal/server/proto/vagrant_server"
serverptypes "github.com/hashicorp/vagrant/internal/server/ptypes"
)
@ -48,7 +49,7 @@ func (s *State) TargetPut(target *vagrant_server.Target) (*vagrant_server.Target
return target, err
}
func (s *State) TargetDelete(ref *vagrant_server.Ref_Target) error {
func (s *State) TargetDelete(ref *vagrant_plugin_sdk.Ref_Target) error {
memTxn := s.inmem.Txn(true)
defer memTxn.Abort()
@ -62,7 +63,7 @@ func (s *State) TargetDelete(ref *vagrant_server.Ref_Target) error {
return err
}
func (s *State) TargetGet(ref *vagrant_server.Ref_Target) (*vagrant_server.Target, error) {
func (s *State) TargetGet(ref *vagrant_plugin_sdk.Ref_Target) (*vagrant_server.Target, error) {
memTxn := s.inmem.Txn(false)
defer memTxn.Abort()
@ -76,7 +77,7 @@ func (s *State) TargetGet(ref *vagrant_server.Ref_Target) (*vagrant_server.Targe
return result, err
}
func (s *State) TargetList() ([]*vagrant_server.Ref_Target, error) {
func (s *State) TargetList() ([]*vagrant_plugin_sdk.Ref_Target, error) {
memTxn := s.inmem.Txn(false)
defer memTxn.Abort()
@ -111,41 +112,31 @@ func (s *State) targetFind(
match = raw.(*targetIndexRecord)
}
}
// Finally try the target id
if match == nil && req.TargetId != "" {
if raw, err := memTxn.First(
targetIndexTableName,
targetIndexTargetIdIndexName,
req.TargetId,
); raw != nil && err == nil {
match = raw.(*targetIndexRecord)
}
}
if match == nil {
return nil, status.Errorf(codes.NotFound, "record not found for Target")
}
return s.targetGet(dbTxn, memTxn, &vagrant_server.Ref_Target{
return s.targetGet(dbTxn, memTxn, &vagrant_plugin_sdk.Ref_Target{
ResourceId: match.Id,
})
}
func (s *State) targetList(
memTxn *memdb.Txn,
) ([]*vagrant_server.Ref_Target, error) {
) ([]*vagrant_plugin_sdk.Ref_Target, error) {
iter, err := memTxn.Get(targetIndexTableName, targetIndexIdIndexName+"_prefix", "")
if err != nil {
return nil, err
}
var result []*vagrant_server.Ref_Target
var result []*vagrant_plugin_sdk.Ref_Target
for {
next := iter.Next()
if next == nil {
break
}
result = append(result, &vagrant_server.Ref_Target{
result = append(result, &vagrant_plugin_sdk.Ref_Target{
ResourceId: next.(*targetIndexRecord).Id,
Name: next.(*targetIndexRecord).Name,
})
@ -211,7 +202,7 @@ func (s *State) targetPut(
func (s *State) targetGet(
dbTxn *bolt.Tx,
memTxn *memdb.Txn,
ref *vagrant_server.Ref_Target,
ref *vagrant_plugin_sdk.Ref_Target,
) (*vagrant_server.Target, error) {
var result vagrant_server.Target
b := dbTxn.Bucket(targetBucket)
@ -221,9 +212,9 @@ func (s *State) targetGet(
func (s *State) targetDelete(
dbTxn *bolt.Tx,
memTxn *memdb.Txn,
ref *vagrant_server.Ref_Target,
ref *vagrant_plugin_sdk.Ref_Target,
) (err error) {
p, err := s.projectGet(dbTxn, memTxn, &vagrant_server.Ref_Project{ResourceId: ref.Project.ResourceId})
p, err := s.projectGet(dbTxn, memTxn, &vagrant_plugin_sdk.Ref_Project{ResourceId: ref.Project.ResourceId})
if err != nil {
return
}
@ -285,30 +276,19 @@ func targetIndexSchema() *memdb.TableSchema {
Lowercase: true,
},
},
targetIndexTargetIdIndexName: {
Name: targetIndexTargetIdIndexName,
AllowMissing: true,
Unique: true,
Indexer: &memdb.StringFieldIndex{
Field: "TargetId",
Lowercase: false,
},
},
},
}
}
const (
targetIndexIdIndexName = "id"
targetIndexNameIndexName = "name"
targetIndexTargetIdIndexName = "target-id"
targetIndexTableName = "target-index"
targetIndexIdIndexName = "id"
targetIndexNameIndexName = "name"
targetIndexTableName = "target-index"
)
type targetIndexRecord struct {
Id string // Resource ID
Name string // Project Resource ID + Target Name
TargetId string // Project Resource ID + Target ID (not target resource id)
Id string // Resource ID
Name string // Project Resource ID + Target Name
}
func (s *State) newTargetIndexRecord(m *vagrant_server.Target) *targetIndexRecord {
@ -316,13 +296,10 @@ func (s *State) newTargetIndexRecord(m *vagrant_server.Target) *targetIndexRecor
Id: m.ResourceId,
Name: strings.ToLower(m.Project.ResourceId + "+" + m.Name),
}
if m.Id != "" {
i.TargetId = m.Project.ResourceId + "+" + m.Id
}
return i
}
func (s *State) newTargetIndexRecordByRef(ref *vagrant_server.Ref_Target) *targetIndexRecord {
func (s *State) newTargetIndexRecordByRef(ref *vagrant_plugin_sdk.Ref_Target) *targetIndexRecord {
return &targetIndexRecord{
Id: ref.ResourceId,
Name: strings.ToLower(ref.Project.ResourceId + "+" + ref.Name),
@ -333,6 +310,6 @@ func (s *State) targetId(m *vagrant_server.Target) []byte {
return []byte(m.ResourceId)
}
func (s *State) targetIdByRef(m *vagrant_server.Ref_Target) []byte {
func (s *State) targetIdByRef(m *vagrant_plugin_sdk.Ref_Target) []byte {
return []byte(m.ResourceId)
}