mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-24 16:10:46 -06:00
Merge pull request #32111 from hashicorp/jbardin/refresh-only-data-read
don't plan data source reads during refresh-only
This commit is contained in:
commit
cccfa5e4af
@ -201,12 +201,12 @@ func TestContext2Refresh_dataComputedModuleVar(t *testing.T) {
|
||||
},
|
||||
})
|
||||
|
||||
s, diags := ctx.Refresh(m, states.NewState(), &PlanOpts{Mode: plans.NormalMode})
|
||||
plan, diags := ctx.Plan(m, states.NewState(), &PlanOpts{Mode: plans.RefreshOnlyMode})
|
||||
if diags.HasErrors() {
|
||||
t.Fatalf("refresh errors: %s", diags.Err())
|
||||
}
|
||||
|
||||
checkStateString(t, s, `
|
||||
checkStateString(t, plan.PriorState, `
|
||||
<no state>
|
||||
`)
|
||||
}
|
||||
|
@ -1562,7 +1562,7 @@ func (n *NodeAbstractResourceInstance) providerMetas(ctx EvalContext) (cty.Value
|
||||
// value, but it still matches the previous state, then we can record a NoNop
|
||||
// change. If the states don't match then we record a Read change so that the
|
||||
// new value is applied to the state.
|
||||
func (n *NodeAbstractResourceInstance) planDataSource(ctx EvalContext, checkRuleSeverity tfdiags.Severity) (*plans.ResourceInstanceChange, *states.ResourceInstanceObject, instances.RepetitionData, tfdiags.Diagnostics) {
|
||||
func (n *NodeAbstractResourceInstance) planDataSource(ctx EvalContext, checkRuleSeverity tfdiags.Severity, skipPlanChanges bool) (*plans.ResourceInstanceChange, *states.ResourceInstanceObject, instances.RepetitionData, tfdiags.Diagnostics) {
|
||||
var diags tfdiags.Diagnostics
|
||||
var keyData instances.RepetitionData
|
||||
var configVal cty.Value
|
||||
@ -1616,6 +1616,17 @@ func (n *NodeAbstractResourceInstance) planDataSource(ctx EvalContext, checkRule
|
||||
// producing a "Read" change for this resource, and a placeholder value for
|
||||
// it in the state.
|
||||
if depsPending || !configKnown {
|
||||
// We can't plan any changes if we're only refreshing, so the only
|
||||
// value we can set here is whatever was in state previously.
|
||||
if skipPlanChanges {
|
||||
plannedNewState := &states.ResourceInstanceObject{
|
||||
Value: priorVal,
|
||||
Status: states.ObjectReady,
|
||||
}
|
||||
|
||||
return nil, plannedNewState, keyData, diags
|
||||
}
|
||||
|
||||
var reason plans.ResourceInstanceChangeActionReason
|
||||
switch {
|
||||
case !configKnown:
|
||||
|
@ -87,7 +87,7 @@ func (n *NodePlannableResourceInstance) dataResourceExecute(ctx EvalContext) (di
|
||||
checkRuleSeverity = tfdiags.Warning
|
||||
}
|
||||
|
||||
change, state, repeatData, planDiags := n.planDataSource(ctx, checkRuleSeverity)
|
||||
change, state, repeatData, planDiags := n.planDataSource(ctx, checkRuleSeverity, n.skipPlanChanges)
|
||||
diags = diags.Append(planDiags)
|
||||
if diags.HasErrors() {
|
||||
return diags
|
||||
|
Loading…
Reference in New Issue
Block a user