diff --git a/internal/server/singleprocess/service.go b/internal/server/singleprocess/service.go index f9e525fd0..5afd45e23 100644 --- a/internal/server/singleprocess/service.go +++ b/internal/server/singleprocess/service.go @@ -22,7 +22,7 @@ type service struct { id string vagrant_server.UnimplementedVagrantServer - vagrant_plugin_sdk.UnimplementedMachineServiceServer + vagrant_plugin_sdk.UnimplementedTargetServiceServer vagrant_plugin_sdk.UnimplementedProjectServiceServer } diff --git a/internal/server/singleprocess/state/basis.go b/internal/server/singleprocess/state/basis.go index 77a210424..ca60c02f5 100644 --- a/internal/server/singleprocess/state/basis.go +++ b/internal/server/singleprocess/state/basis.go @@ -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) } diff --git a/internal/server/singleprocess/state/config.go b/internal/server/singleprocess/state/config.go index 6c6ad017c..751dc0569 100644 --- a/internal/server/singleprocess/state/config.go +++ b/internal/server/singleprocess/state/config.go @@ -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, diff --git a/internal/server/singleprocess/state/generic_operation.go b/internal/server/singleprocess/state/generic_operation.go index 0d0494eec..cab37a524 100644 --- a/internal/server/singleprocess/state/generic_operation.go +++ b/internal/server/singleprocess/state/generic_operation.go @@ -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 } diff --git a/internal/server/singleprocess/state/job.go b/internal/server/singleprocess/state/job.go index a48c403d0..c930084d0 100644 --- a/internal/server/singleprocess/state/job.go +++ b/internal/server/singleprocess/state/job.go @@ -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), } diff --git a/internal/server/singleprocess/state/job_assigned.go b/internal/server/singleprocess/state/job_assigned.go index cb3de8718..feb313a31 100644 --- a/internal/server/singleprocess/state/job_assigned.go +++ b/internal/server/singleprocess/state/job_assigned.go @@ -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{}{ diff --git a/internal/server/singleprocess/state/project.go b/internal/server/singleprocess/state/project.go index 2e7f7f565..bed38aa1c 100644 --- a/internal/server/singleprocess/state/project.go +++ b/internal/server/singleprocess/state/project.go @@ -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) } diff --git a/internal/server/singleprocess/state/target.go b/internal/server/singleprocess/state/target.go index 93aaf7291..c0fb8fefb 100644 --- a/internal/server/singleprocess/state/target.go +++ b/internal/server/singleprocess/state/target.go @@ -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) }