Skip to content

Commit 0219ba0

Browse files
ElaborateFromConfigBody handles deeply nested paths more precisely
1 parent 82cc513 commit 0219ba0

13 files changed

+155
-112
lines changed

internal/deprecation/deprecation.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88

99
"github.com/hashicorp/hcl/v2"
1010
"github.com/hashicorp/terraform/internal/addrs"
11+
"github.com/hashicorp/terraform/internal/configs/configschema"
1112
"github.com/hashicorp/terraform/internal/lang/marks"
1213
"github.com/hashicorp/terraform/internal/tfdiags"
1314
"github.com/zclconf/go-cty/cty"
@@ -85,7 +86,7 @@ func (d *Deprecations) deprecationMarksToDiagnostics(deprecationMarks []marks.De
8586
// ValidateAsConfig checks the given value for deprecation marks and returns diagnostics
8687
// for each deprecation found, unless deprecation warnings are suppressed for the given module.
8788
// It checks for deeply nested deprecation marks as well.
88-
func (d *Deprecations) ValidateAsConfig(value cty.Value, module addrs.Module) tfdiags.Diagnostics {
89+
func (d *Deprecations) ValidateAsConfig(value cty.Value, schema *configschema.Block, module addrs.Module) tfdiags.Diagnostics {
8990
var diags tfdiags.Diagnostics
9091
_, pvms := value.UnmarkDeepWithPaths()
9192

internal/terraform/node_action_instance.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ func (n *NodeActionDeclarationInstance) Execute(ctx EvalContext, _ walkOperation
7171
valDiags := validateResourceForbiddenEphemeralValues(ctx, configVal, n.Schema.ConfigSchema)
7272
diags = diags.Append(valDiags.InConfigBody(n.Config.Config, n.Addr.String()))
7373

74-
deprecationDiags := ctx.Deprecations().ValidateAsConfig(configVal, n.ModulePath())
74+
deprecationDiags := ctx.Deprecations().ValidateAsConfig(configVal, n.Schema.ConfigSchema, n.ModulePath())
7575
diags = diags.Append(deprecationDiags.InConfigBody(n.Config.Config, n.Addr.String()))
7676

7777
if diags.HasErrors() {

internal/terraform/node_action_partialexp.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ func (n *NodeActionDeclarationPartialExpanded) Execute(ctx EvalContext, op walkO
6969
return diags
7070
}
7171

72-
deprecationDiags := ctx.Deprecations().ValidateAsConfig(configVal, n.ActionAddr().Module)
72+
deprecationDiags := ctx.Deprecations().ValidateAsConfig(configVal, n.Schema.ConfigSchema, n.ActionAddr().Module)
7373
diags = diags.Append(deprecationDiags)
7474
if diags.HasErrors() {
7575
return diags

internal/terraform/node_action_validate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ func (n *NodeValidatableAction) Execute(ctx EvalContext, _ walkOperation) tfdiag
102102
}
103103
}
104104

105-
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, n.ModulePath()).InConfigBody(n.Config.Config, n.Addr.String()))
105+
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, schema.ConfigSchema, n.ModulePath()).InConfigBody(n.Config.Config, n.Addr.String()))
106106

107107
valDiags = validateResourceForbiddenEphemeralValues(ctx, configVal, schema.ConfigSchema)
108108
diags = diags.Append(valDiags.InConfigBody(config, n.Addr.String()))

internal/terraform/node_provider.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ func (n *NodeApplyableProvider) ValidateProvider(ctx EvalContext, provider provi
8383
return diags
8484
}
8585

86-
deprecationDiags := ctx.Deprecations().ValidateAsConfig(configVal, n.Addr.Module)
86+
deprecationDiags := ctx.Deprecations().ValidateAsConfig(configVal, configSchema, n.Addr.Module)
8787
diags = diags.Append(deprecationDiags.InConfigBody(configBody, n.Addr.String()))
8888
if diags.HasErrors() {
8989
return diags

internal/terraform/node_resource_abstract_instance.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -869,7 +869,7 @@ func (n *NodeAbstractResourceInstance) plan(
869869
diags = diags.Append(
870870
validateResourceForbiddenEphemeralValues(ctx, origConfigVal, schema.Body).InConfigBody(n.Config.Config, n.Addr.String()),
871871
)
872-
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(origConfigVal, n.ModulePath()).InConfigBody(n.Config.Config, n.Addr.String()))
872+
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(origConfigVal, schema.Body, n.ModulePath()).InConfigBody(n.Config.Config, n.Addr.String()))
873873
if diags.HasErrors() {
874874
return nil, nil, deferred, keyData, diags
875875
}
@@ -1788,7 +1788,7 @@ func (n *NodeAbstractResourceInstance) providerMetas(ctx EvalContext) (cty.Value
17881788
metaConfigVal, _, configDiags = ctx.EvaluateBlock(m.Config, providerSchema.ProviderMeta.Body, nil, EvalDataForNoInstanceKey)
17891789
diags = diags.Append(configDiags)
17901790
diags = diags.Append(
1791-
ctx.Deprecations().ValidateAsConfig(metaConfigVal, ctx.Path().Module()).InConfigBody(m.Config, n.Addr.String()),
1791+
ctx.Deprecations().ValidateAsConfig(metaConfigVal, providerSchema.ProviderMeta.Body, ctx.Path().Module()).InConfigBody(m.Config, n.Addr.String()),
17921792
)
17931793
metaConfigVal = marks.RemoveDeprecationMarks(metaConfigVal)
17941794
}
@@ -1868,7 +1868,7 @@ func (n *NodeAbstractResourceInstance) planDataSource(ctx EvalContext, checkRule
18681868
validateResourceForbiddenEphemeralValues(ctx, configVal, schema.Body).InConfigBody(n.Config.Config, n.Addr.String()),
18691869
)
18701870
diags = diags.Append(
1871-
ctx.Deprecations().ValidateAsConfig(configVal, ctx.Path().Module()).InConfigBody(n.Config.Config, n.Addr.String()),
1871+
ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, ctx.Path().Module()).InConfigBody(n.Config.Config, n.Addr.String()),
18721872
)
18731873
configVal = marks.RemoveDeprecationMarks(configVal)
18741874
if diags.HasErrors() {
@@ -2209,7 +2209,7 @@ func (n *NodeAbstractResourceInstance) applyDataSource(ctx EvalContext, planned
22092209
}
22102210

22112211
diags = diags.Append(
2212-
ctx.Deprecations().ValidateAsConfig(configVal, n.ModulePath()).InConfigBody(n.Config.Config, n.Addr.String()),
2212+
ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ModulePath()).InConfigBody(n.Config.Config, n.Addr.String()),
22132213
)
22142214
if diags.HasErrors() {
22152215
return nil, keyData, diags
@@ -2527,7 +2527,7 @@ func (n *NodeAbstractResourceInstance) evalProvisionerConfig(ctx EvalContext, bo
25272527

25282528
config, _, configDiags := ctx.EvaluateBlock(body, schema, n.ResourceInstanceAddr().Resource, keyData)
25292529
diags = diags.Append(configDiags)
2530-
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(config, n.ModulePath()).InConfigBody(body, n.Addr.String()))
2530+
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(config, schema, n.ModulePath()).InConfigBody(body, n.Addr.String()))
25312531
config = marks.RemoveDeprecationMarks(config)
25322532

25332533
return config, diags
@@ -2546,7 +2546,7 @@ func (n *NodeAbstractResourceInstance) evalDestroyProvisionerConfig(ctx EvalCont
25462546
evalScope := ctx.EvaluationScope(n.ResourceInstanceAddr().Resource, nil, keyData)
25472547
config, evalDiags := evalScope.EvalSelfBlock(body, self, schema, keyData)
25482548
diags = diags.Append(evalDiags)
2549-
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(config, n.ModulePath()).InConfigBody(body, n.Addr.String()))
2549+
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(config, schema, n.ModulePath()).InConfigBody(body, n.Addr.String()))
25502550
config = marks.RemoveDeprecationMarks(config)
25512551
return config, diags
25522552
}

internal/terraform/node_resource_ephemeral.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ func ephemeralResourceOpen(ctx EvalContext, inp ephemeralResourceInput) (*provid
7676
if diags.HasErrors() {
7777
return nil, diags
7878
}
79-
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, ctx.Path().Module()).InConfigBody(config.Config, inp.addr.String()))
79+
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, ctx.Path().Module()).InConfigBody(config.Config, inp.addr.String()))
8080
if diags.HasErrors() {
8181
return nil, diags
8282
}

internal/terraform/node_resource_plan_instance.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -662,7 +662,7 @@ func (n *NodePlannableResourceInstance) importState(ctx EvalContext, addr addrs.
662662
diags = diags.Append(configDiags)
663663
return nil, deferred, diags
664664
}
665-
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, n.ModulePath()).InConfigBody(n.Config.Config, absAddr.String()))
665+
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ModulePath()).InConfigBody(n.Config.Config, absAddr.String()))
666666
if diags.HasErrors() {
667667
return nil, deferred, diags
668668
}

internal/terraform/node_resource_plan_instance_query.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ func (n *NodePlannableResourceInstance) listResourceExecute(ctx EvalContext) (di
5151
return diags
5252
}
5353

54-
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(blockVal, n.ModulePath()).InConfigBody(config.Config, n.Addr.String()))
54+
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(blockVal, schema.FullSchema, n.ModulePath()).InConfigBody(config.Config, n.Addr.String()))
5555
if diags.HasErrors() {
5656
return diags
5757
}

internal/terraform/node_resource_plan_partialexp.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ func (n *nodePlannablePartialExpandedResource) managedResourceExecute(ctx EvalCo
200200
return &change, diags
201201
}
202202

203-
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, n.ResourceAddr().Module).InConfigBody(n.config.Config, n.addr.String()))
203+
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ResourceAddr().Module).InConfigBody(n.config.Config, n.addr.String()))
204204
if diags.HasErrors() {
205205
return &change, diags
206206
}
@@ -359,7 +359,7 @@ func (n *nodePlannablePartialExpandedResource) dataResourceExecute(ctx EvalConte
359359
return &change, diags
360360
}
361361

362-
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, n.ResourceAddr().Module).InConfigBody(n.config.Config, n.addr.String()))
362+
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ResourceAddr().Module).InConfigBody(n.config.Config, n.addr.String()))
363363
if diags.HasErrors() {
364364
return &change, diags
365365
}

0 commit comments

Comments
 (0)