always load instance state when -refresh=false

The loading of the initial instance state was inadvertently skipped when
-refresh=false, causing all resources to appear to be missing from the
state during plan.
This commit is contained in:
James Bardin 2020-10-01 16:04:35 -04:00
parent a7e43dfd46
commit ac526d8d5d
2 changed files with 22 additions and 17 deletions

View File

@ -6403,12 +6403,18 @@ resource "test_instance" "a" {
SkipRefresh: true, SkipRefresh: true,
}) })
_, diags := ctx.Plan() plan, diags := ctx.Plan()
assertNoErrors(t, diags) assertNoErrors(t, diags)
if p.ReadResourceCalled { if p.ReadResourceCalled {
t.Fatal("Resource should not have been refreshed") t.Fatal("Resource should not have been refreshed")
} }
for _, c := range plan.Changes.Resources {
if c.Action != plans.NoOp {
t.Fatalf("expected no changes, got %s for %q", c.Action, c.Addr)
}
}
} }
func TestContext2Plan_dataInModuleDependsOn(t *testing.T) { func TestContext2Plan_dataInModuleDependsOn(t *testing.T) {

View File

@ -146,24 +146,23 @@ func (n *NodePlannableResourceInstance) managedResourceExecute(ctx EvalContext,
return err return err
} }
instanceRefreshState, err = n.ReadResourceInstanceState(ctx, addr)
if err != nil {
return err
}
refreshLifecycle := &EvalRefreshLifecycle{
Addr: addr,
Config: n.Config,
State: &instanceRefreshState,
ForceCreateBeforeDestroy: n.ForceCreateBeforeDestroy,
}
_, err = refreshLifecycle.Eval(ctx)
if err != nil {
return err
}
// Refresh, maybe // Refresh, maybe
if !skipRefresh { if !skipRefresh {
instanceRefreshState, err = n.ReadResourceInstanceState(ctx, addr)
if err != nil {
return err
}
refreshLifecycle := &EvalRefreshLifecycle{
Addr: addr,
Config: n.Config,
State: &instanceRefreshState,
ForceCreateBeforeDestroy: n.ForceCreateBeforeDestroy,
}
_, err = refreshLifecycle.Eval(ctx)
if err != nil {
return err
}
refresh := &EvalRefresh{ refresh := &EvalRefresh{
Addr: addr.Resource, Addr: addr.Resource,
ProviderAddr: n.ResolvedProvider, ProviderAddr: n.ResolvedProvider,