diff --git a/internal/core/target.go b/internal/core/target.go index c90979306..e3c16b9bc 100644 --- a/internal/core/target.go +++ b/internal/core/target.go @@ -366,7 +366,7 @@ func WithTargetRef(r *vagrant_plugin_sdk.Ref_Target) TargetOption { } target = result.Target } - if target.Project.ResourceId != r.Project.ResourceId { + if r.Project != nil && target.Project.ResourceId != r.Project.ResourceId { t.logger.Error("invalid project for target", "request-project", r.Project, "target-project", target.Project) diff --git a/internal/core/target_index.go b/internal/core/target_index.go index 01a450da6..f055b3638 100644 --- a/internal/core/target_index.go +++ b/internal/core/target_index.go @@ -43,7 +43,9 @@ func (t *TargetIndex) Get(uuid string) (entry core.Target, err error) { if err != nil { return } - return t.loadTarget(result.Target) + return t.loadTarget(&vagrant_plugin_sdk.Ref_Target{ + ResourceId: result.Target.ResourceId, + }) } func (t *TargetIndex) Includes(uuid string) (exists bool, err error) { @@ -76,9 +78,7 @@ func (t *TargetIndex) All() (targets []core.Target, err error) { targets = []core.Target{} for _, tInfo := range list.Targets { - nt, err := t.loadTarget(&vagrant_server.Target{ - ResourceId: tInfo.ResourceId, - }) + nt, err := t.loadTarget(tInfo) if err != nil { return nil, err } @@ -92,7 +92,14 @@ func (t *TargetIndex) Close() (err error) { return } -func (t *TargetIndex) loadTarget(info *vagrant_server.Target) (target *Target, err error) { +func (t *TargetIndex) loadTarget(tproto *vagrant_plugin_sdk.Ref_Target) (target *Target, err error) { + gt, err := t.client.GetTarget(t.ctx, &vagrant_server.GetTargetRequest{ + Target: tproto, + }) + if err != nil { + return + } + info := gt.Target // Load the basis b, err := t.factory.New(info.Project.Basis.Name, WithBasisRef(info.Project.Basis)) @@ -106,11 +113,7 @@ func (t *TargetIndex) loadTarget(info *vagrant_server.Target) (target *Target, e } // Finally, load the target return p.LoadTarget( - WithTargetRef( - &vagrant_plugin_sdk.Ref_Target{ - ResourceId: info.ResourceId, - }, - ), + WithTargetRef(tproto), ) }