From da3ab7f9b3bbeca5cc4baab921f20b35264e9b84 Mon Sep 17 00:00:00 2001 From: sophia Date: Wed, 13 Apr 2022 14:48:19 -0500 Subject: [PATCH] Refresh project when querying for project info It is not guaranteed which project is ever being used. So whenever some project property is queried make sure to refresh the project by getting the latest one from the database. --- internal/core/project.go | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/internal/core/project.go b/internal/core/project.go index 23fc83c56..b44609f6f 100644 --- a/internal/core/project.go +++ b/internal/core/project.go @@ -79,8 +79,9 @@ func (p *Project) Boxes() (bc core.BoxCollection, err error) { } // Config implements core.Project -func (b *Project) Config() (*vagrant_plugin_sdk.Vagrantfile_Vagrantfile, error) { - return b.project.Configuration, nil +func (p *Project) Config() (*vagrant_plugin_sdk.Vagrantfile_Vagrantfile, error) { + p.refreshProject() + return p.project.Configuration, nil } // CWD implements core.Project @@ -107,6 +108,7 @@ func (p *Project) DefaultProvider() (name string, err error) { // Home implements core.Project func (p *Project) Home() (dir path.Path, err error) { + p.refreshProject() return path.NewPath(p.project.Path), nil } @@ -128,6 +130,7 @@ func (p *Project) PrimaryTargetName() (name string, err error) { // Resource implements core.Project func (p *Project) ResourceId() (string, error) { + p.refreshProject() return p.project.ResourceId, nil } @@ -165,6 +168,7 @@ func (p *Project) Target(nameOrId string) (core.Target, error) { // TargetIds implements core.Project func (p *Project) TargetIds() ([]string, error) { + p.refreshProject() var ids []string for _, t := range p.project.Targets { ids = append(ids, t.ResourceId) @@ -179,6 +183,7 @@ func (p *Project) TargetIndex() (index core.TargetIndex, err error) { // TargetNames implements core.Project func (p *Project) TargetNames() ([]string, error) { + p.refreshProject() var names []string for _, t := range p.project.Targets { names = append(names, t.Name) @@ -198,18 +203,21 @@ func (p *Project) UI() (terminal.UI, error) { // VagrantfileName implements core.Project func (p *Project) VagrantfileName() (name string, err error) { + p.refreshProject() fullPath := path.NewPath(p.project.Configuration.Path) return fullPath.Base().String(), nil } // VagrantfilePath implements core.Project func (p *Project) VagrantfilePath() (pp path.Path, err error) { + p.refreshProject() pp = path.NewPath(p.project.Configuration.Path).Parent() return } // Targets func (p *Project) Targets() ([]core.Target, error) { + p.refreshProject() var targets []core.Target for _, ref := range p.project.Targets { t, err := p.LoadTarget(WithTargetRef(ref)) @@ -223,6 +231,7 @@ func (p *Project) Targets() ([]core.Target, error) { // Custom name defined for this project func (p *Project) Name() string { + p.refreshProject() return p.project.Name } @@ -289,6 +298,7 @@ func (p *Project) Client() *serverclient.VagrantClient { // Ref returns the project ref for API calls. func (p *Project) Ref() interface{} { + p.refreshProject() return &vagrant_plugin_sdk.Ref_Project{ ResourceId: p.project.ResourceId, Name: p.project.Name, @@ -502,6 +512,12 @@ func (p *Project) InitTargets() (err error) { return } + err = p.refreshProject() + return +} + +// Get's the latest project from the DB and caches is +func (p *Project) refreshProject() (err error) { result, err := p.Client().FindProject(p.ctx, &vagrant_server.FindProjectRequest{ Project: &vagrant_server.Project{ @@ -519,7 +535,6 @@ func (p *Project) InitTargets() (err error) { } p.project = result.Project - return }