mirror of
https://github.com/hashicorp/terraform.git
synced 2026-02-03 20:50:59 -05:00
limit the amount of additional remove deprecation mark calls
This commit is contained in:
parent
11e49b983a
commit
3fd7a5052f
11 changed files with 71 additions and 48 deletions
|
|
@ -84,12 +84,13 @@ func (d *Deprecations) deprecationMarksToDiagnostics(deprecationMarks []marks.De
|
|||
// ValidateAsConfig checks the given value for deprecation marks and returns diagnostics
|
||||
// for each deprecation found, unless deprecation warnings are suppressed for the given module.
|
||||
// It checks for deeply nested deprecation marks as well.
|
||||
func (d *Deprecations) ValidateAsConfig(value cty.Value, schema *configschema.Block, module addrs.Module) tfdiags.Diagnostics {
|
||||
func (d *Deprecations) ValidateAsConfig(value cty.Value, schema *configschema.Block, module addrs.Module) (cty.Value, tfdiags.Diagnostics) {
|
||||
var diags tfdiags.Diagnostics
|
||||
_, pvms := value.UnmarkDeepWithPaths()
|
||||
unmarked, pvms := value.UnmarkDeepWithPaths()
|
||||
|
||||
if len(pvms) == 0 || d.IsModuleCallDeprecationSuppressed(module) {
|
||||
return diags
|
||||
if d.IsModuleCallDeprecationSuppressed(module) {
|
||||
// Even if we don't want to get deprecation warnings we want to remove the marks
|
||||
return unmarked.MarkWithPaths(marks.RemoveAll(pvms, marks.Deprecation)), diags
|
||||
}
|
||||
|
||||
for _, pvm := range pvms {
|
||||
|
|
@ -118,7 +119,8 @@ func (d *Deprecations) ValidateAsConfig(value cty.Value, schema *configschema.Bl
|
|||
}
|
||||
}
|
||||
}
|
||||
return diags
|
||||
|
||||
return unmarked.MarkWithPaths(marks.RemoveAll(pvms, marks.Deprecation)), diags
|
||||
}
|
||||
|
||||
func (d *Deprecations) IsModuleCallDeprecationSuppressed(addr addrs.Module) bool {
|
||||
|
|
|
|||
|
|
@ -71,7 +71,8 @@ func (n *NodeActionDeclarationInstance) Execute(ctx EvalContext, _ walkOperation
|
|||
valDiags := validateResourceForbiddenEphemeralValues(ctx, configVal, n.Schema.ConfigSchema)
|
||||
diags = diags.Append(valDiags.InConfigBody(n.Config.Config, n.Addr.String()))
|
||||
|
||||
deprecationDiags := ctx.Deprecations().ValidateAsConfig(configVal, n.Schema.ConfigSchema, n.ModulePath())
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, n.Schema.ConfigSchema, n.ModulePath())
|
||||
diags = diags.Append(deprecationDiags.InConfigBody(n.Config.Config, n.Addr.String()))
|
||||
|
||||
if diags.HasErrors() {
|
||||
|
|
|
|||
|
|
@ -68,8 +68,8 @@ func (n *NodeActionDeclarationPartialExpanded) Execute(ctx EvalContext, op walkO
|
|||
if diags.HasErrors() {
|
||||
return diags
|
||||
}
|
||||
|
||||
deprecationDiags := ctx.Deprecations().ValidateAsConfig(configVal, n.Schema.ConfigSchema, n.ActionAddr().Module)
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, n.Schema.ConfigSchema, n.ActionAddr().Module)
|
||||
diags = diags.Append(deprecationDiags)
|
||||
if diags.HasErrors() {
|
||||
return diags
|
||||
|
|
|
|||
|
|
@ -101,8 +101,9 @@ func (n *NodeValidatableAction) Execute(ctx EvalContext, _ walkOperation) tfdiag
|
|||
return diags
|
||||
}
|
||||
}
|
||||
|
||||
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, schema.ConfigSchema, n.ModulePath()).InConfigBody(n.Config.Config, n.Addr.String()))
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, schema.ConfigSchema, n.ModulePath())
|
||||
diags = diags.Append(deprecationDiags.InConfigBody(n.Config.Config, n.Addr.String()))
|
||||
|
||||
valDiags = validateResourceForbiddenEphemeralValues(ctx, configVal, schema.ConfigSchema)
|
||||
diags = diags.Append(valDiags.InConfigBody(config, n.Addr.String()))
|
||||
|
|
|
|||
|
|
@ -83,7 +83,8 @@ func (n *NodeApplyableProvider) ValidateProvider(ctx EvalContext, provider provi
|
|||
return diags
|
||||
}
|
||||
|
||||
deprecationDiags := ctx.Deprecations().ValidateAsConfig(configVal, configSchema, n.Addr.Module)
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, configSchema, n.Addr.Module)
|
||||
diags = diags.Append(deprecationDiags.InConfigBody(configBody, n.Addr.String()))
|
||||
if diags.HasErrors() {
|
||||
return diags
|
||||
|
|
|
|||
|
|
@ -869,7 +869,9 @@ func (n *NodeAbstractResourceInstance) plan(
|
|||
diags = diags.Append(
|
||||
validateResourceForbiddenEphemeralValues(ctx, origConfigVal, schema.Body).InConfigBody(n.Config.Config, n.Addr.String()),
|
||||
)
|
||||
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(origConfigVal, schema.Body, n.ModulePath()).InConfigBody(n.Config.Config, n.Addr.String()))
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
origConfigVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(origConfigVal, schema.Body, n.ModulePath())
|
||||
diags = diags.Append(deprecationDiags.InConfigBody(n.Config.Config, n.Addr.String()))
|
||||
if diags.HasErrors() {
|
||||
return nil, nil, deferred, keyData, diags
|
||||
}
|
||||
|
|
@ -1787,10 +1789,9 @@ func (n *NodeAbstractResourceInstance) providerMetas(ctx EvalContext) (cty.Value
|
|||
var configDiags tfdiags.Diagnostics
|
||||
metaConfigVal, _, configDiags = ctx.EvaluateBlock(m.Config, providerSchema.ProviderMeta.Body, nil, EvalDataForNoInstanceKey)
|
||||
diags = diags.Append(configDiags)
|
||||
diags = diags.Append(
|
||||
ctx.Deprecations().ValidateAsConfig(metaConfigVal, providerSchema.ProviderMeta.Body, ctx.Path().Module()).InConfigBody(m.Config, n.Addr.String()),
|
||||
)
|
||||
metaConfigVal = marks.RemoveDeprecationMarks(metaConfigVal)
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
metaConfigVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(metaConfigVal, providerSchema.ProviderMeta.Body, ctx.Path().Module())
|
||||
diags = diags.Append(deprecationDiags.InConfigBody(m.Config, n.Addr.String()))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1867,10 +1868,11 @@ func (n *NodeAbstractResourceInstance) planDataSource(ctx EvalContext, checkRule
|
|||
diags = diags.Append(
|
||||
validateResourceForbiddenEphemeralValues(ctx, configVal, schema.Body).InConfigBody(n.Config.Config, n.Addr.String()),
|
||||
)
|
||||
diags = diags.Append(
|
||||
ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, ctx.Path().Module()).InConfigBody(n.Config.Config, n.Addr.String()),
|
||||
)
|
||||
configVal = marks.RemoveDeprecationMarks(configVal)
|
||||
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, ctx.Path().Module())
|
||||
diags = diags.Append(deprecationDiags.InConfigBody(n.Config.Config, n.Addr.String()))
|
||||
|
||||
if diags.HasErrors() {
|
||||
return nil, nil, deferred, keyData, diags
|
||||
}
|
||||
|
|
@ -2208,13 +2210,13 @@ func (n *NodeAbstractResourceInstance) applyDataSource(ctx EvalContext, planned
|
|||
return nil, keyData, diags
|
||||
}
|
||||
|
||||
diags = diags.Append(
|
||||
ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ModulePath()).InConfigBody(n.Config.Config, n.Addr.String()),
|
||||
)
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ModulePath())
|
||||
diags = diags.Append(deprecationDiags.InConfigBody(n.Config.Config, n.Addr.String()))
|
||||
|
||||
if diags.HasErrors() {
|
||||
return nil, keyData, diags
|
||||
}
|
||||
configVal = marks.RemoveDeprecationMarks(configVal)
|
||||
|
||||
newVal, readDeferred, readDiags := n.readDataSource(ctx, configVal)
|
||||
if check, nested := n.nestedInCheckBlock(); nested {
|
||||
|
|
@ -2527,8 +2529,9 @@ func (n *NodeAbstractResourceInstance) evalProvisionerConfig(ctx EvalContext, bo
|
|||
|
||||
config, _, configDiags := ctx.EvaluateBlock(body, schema, n.ResourceInstanceAddr().Resource, keyData)
|
||||
diags = diags.Append(configDiags)
|
||||
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(config, schema, n.ModulePath()).InConfigBody(body, n.Addr.String()))
|
||||
config = marks.RemoveDeprecationMarks(config)
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
config, deprecationDiags = ctx.Deprecations().ValidateAsConfig(config, schema, n.ModulePath())
|
||||
diags = diags.Append(deprecationDiags.InConfigBody(body, n.Addr.String()))
|
||||
|
||||
return config, diags
|
||||
}
|
||||
|
|
@ -2546,8 +2549,9 @@ func (n *NodeAbstractResourceInstance) evalDestroyProvisionerConfig(ctx EvalCont
|
|||
evalScope := ctx.EvaluationScope(n.ResourceInstanceAddr().Resource, nil, keyData)
|
||||
config, evalDiags := evalScope.EvalSelfBlock(body, self, schema, keyData)
|
||||
diags = diags.Append(evalDiags)
|
||||
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(config, schema, n.ModulePath()).InConfigBody(body, n.Addr.String()))
|
||||
config = marks.RemoveDeprecationMarks(config)
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
config, deprecationDiags = ctx.Deprecations().ValidateAsConfig(config, schema, n.ModulePath())
|
||||
diags = diags.Append(deprecationDiags.InConfigBody(body, n.Addr.String()))
|
||||
return config, diags
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -76,7 +76,9 @@ func ephemeralResourceOpen(ctx EvalContext, inp ephemeralResourceInput) (*provid
|
|||
if diags.HasErrors() {
|
||||
return nil, diags
|
||||
}
|
||||
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, ctx.Path().Module()).InConfigBody(config.Config, inp.addr.String()))
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, ctx.Path().Module())
|
||||
diags = diags.Append(deprecationDiags.InConfigBody(config.Config, inp.addr.String()))
|
||||
if diags.HasErrors() {
|
||||
return nil, diags
|
||||
}
|
||||
|
|
|
|||
|
|
@ -662,7 +662,9 @@ func (n *NodePlannableResourceInstance) importState(ctx EvalContext, addr addrs.
|
|||
diags = diags.Append(configDiags)
|
||||
return nil, deferred, diags
|
||||
}
|
||||
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ModulePath()).InConfigBody(n.Config.Config, absAddr.String()))
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ModulePath())
|
||||
diags = diags.Append(deprecationDiags.InConfigBody(n.Config.Config, absAddr.String()))
|
||||
if diags.HasErrors() {
|
||||
return nil, deferred, diags
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import (
|
|||
"log"
|
||||
|
||||
"github.com/hashicorp/terraform/internal/addrs"
|
||||
"github.com/hashicorp/terraform/internal/lang/marks"
|
||||
"github.com/hashicorp/terraform/internal/plans"
|
||||
"github.com/hashicorp/terraform/internal/providers"
|
||||
"github.com/hashicorp/terraform/internal/tfdiags"
|
||||
|
|
@ -50,8 +49,9 @@ func (n *NodePlannableResourceInstance) listResourceExecute(ctx EvalContext) (di
|
|||
if diags.HasErrors() {
|
||||
return diags
|
||||
}
|
||||
|
||||
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(blockVal, schema.FullSchema, n.ModulePath()).InConfigBody(config.Config, n.Addr.String()))
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
blockVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(blockVal, schema.FullSchema, n.ModulePath())
|
||||
diags = diags.Append(deprecationDiags.InConfigBody(config.Config, n.Addr.String()))
|
||||
if diags.HasErrors() {
|
||||
return diags
|
||||
}
|
||||
|
|
@ -74,7 +74,6 @@ func (n *NodePlannableResourceInstance) listResourceExecute(ctx EvalContext) (di
|
|||
var limitDeprecationDiags tfdiags.Diagnostics
|
||||
limitCty, limitDeprecationDiags = ctx.Deprecations().Validate(limitCty, ctx.Path().Module(), config.List.Limit.Range().Ptr())
|
||||
diags = diags.Append(limitDeprecationDiags)
|
||||
limitCty = marks.RemoveDeprecationMarks(limitCty)
|
||||
}
|
||||
|
||||
includeRscCty, includeRsc, includeDiags := newIncludeRscEvaluator(false).EvaluateExpr(ctx, config.List.IncludeResource)
|
||||
|
|
@ -87,7 +86,6 @@ func (n *NodePlannableResourceInstance) listResourceExecute(ctx EvalContext) (di
|
|||
var includeDeprecationDiags tfdiags.Diagnostics
|
||||
includeRscCty, includeDeprecationDiags = ctx.Deprecations().Validate(includeRscCty, ctx.Path().Module(), config.List.IncludeResource.Range().Ptr())
|
||||
diags = diags.Append(includeDeprecationDiags)
|
||||
includeRscCty = marks.RemoveDeprecationMarks(includeRscCty)
|
||||
}
|
||||
|
||||
rId := HookResourceIdentity{
|
||||
|
|
|
|||
|
|
@ -200,7 +200,9 @@ func (n *nodePlannablePartialExpandedResource) managedResourceExecute(ctx EvalCo
|
|||
return &change, diags
|
||||
}
|
||||
|
||||
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ResourceAddr().Module).InConfigBody(n.config.Config, n.addr.String()))
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ResourceAddr().Module)
|
||||
diags = diags.Append(deprecationDiags.InConfigBody(n.config.Config, n.addr.String()))
|
||||
if diags.HasErrors() {
|
||||
return &change, diags
|
||||
}
|
||||
|
|
@ -359,7 +361,9 @@ func (n *nodePlannablePartialExpandedResource) dataResourceExecute(ctx EvalConte
|
|||
return &change, diags
|
||||
}
|
||||
|
||||
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ResourceAddr().Module).InConfigBody(n.config.Config, n.addr.String()))
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ResourceAddr().Module)
|
||||
diags = diags.Append(deprecationDiags.InConfigBody(n.config.Config, n.addr.String()))
|
||||
if diags.HasErrors() {
|
||||
return &change, diags
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ import (
|
|||
"github.com/hashicorp/terraform/internal/lang/ephemeral"
|
||||
"github.com/hashicorp/terraform/internal/lang/format"
|
||||
"github.com/hashicorp/terraform/internal/lang/langrefs"
|
||||
"github.com/hashicorp/terraform/internal/lang/marks"
|
||||
"github.com/hashicorp/terraform/internal/providers"
|
||||
"github.com/hashicorp/terraform/internal/provisioners"
|
||||
"github.com/hashicorp/terraform/internal/tfdiags"
|
||||
|
|
@ -144,9 +143,11 @@ func (n *NodeValidatableResource) evaluateBlock(ctx EvalContext, body hcl.Body,
|
|||
keyData, selfAddr := n.stubRepetitionData(n.Config.Count != nil, n.Config.ForEach != nil)
|
||||
|
||||
val, hclBody, diags := ctx.EvaluateBlock(body, schema, selfAddr, keyData)
|
||||
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(val, schema, n.Addr.Module).InConfigBody(body, n.Addr.String()))
|
||||
|
||||
return marks.RemoveDeprecationMarks(val), hclBody, diags
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
val, deprecationDiags = ctx.Deprecations().ValidateAsConfig(val, schema, n.Addr.Module)
|
||||
diags = diags.Append(deprecationDiags.InConfigBody(body, n.Addr.String()))
|
||||
return val, hclBody, diags
|
||||
}
|
||||
|
||||
// connectionBlockSupersetSchema is a schema representing the superset of all
|
||||
|
|
@ -360,7 +361,9 @@ func (n *NodeValidatableResource) validateResource(ctx EvalContext) tfdiags.Diag
|
|||
diags = diags.Append(
|
||||
validateResourceForbiddenEphemeralValues(ctx, configVal, schema.Body).InConfigBody(n.Config.Config, n.Addr.String()),
|
||||
)
|
||||
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ModulePath()).InConfigBody(n.Config.Config, n.Addr.String()))
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ModulePath())
|
||||
diags = diags.Append(deprecationDiags.InConfigBody(n.Config.Config, n.Addr.String()))
|
||||
|
||||
if n.Config.Managed != nil { // can be nil only in tests with poorly-configured mocks
|
||||
for _, traversal := range n.Config.Managed.IgnoreChanges {
|
||||
|
|
@ -440,7 +443,9 @@ func (n *NodeValidatableResource) validateResource(ctx EvalContext) tfdiags.Diag
|
|||
diags = diags.Append(
|
||||
validateResourceForbiddenEphemeralValues(ctx, configVal, schema.Body).InConfigBody(n.Config.Config, n.Addr.String()),
|
||||
)
|
||||
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ModulePath()))
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ModulePath())
|
||||
diags = diags.Append(deprecationDiags.InConfigBody(n.Config.Config, n.Addr.String()))
|
||||
|
||||
// Use unmarked value for validate request
|
||||
unmarkedConfigVal, _ := configVal.UnmarkDeep()
|
||||
|
|
@ -468,8 +473,10 @@ func (n *NodeValidatableResource) validateResource(ctx EvalContext) tfdiags.Diag
|
|||
if valDiags.HasErrors() {
|
||||
return diags
|
||||
}
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ModulePath())
|
||||
diags = diags.Append(
|
||||
ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ModulePath()).InConfigBody(n.Config.Config, n.Addr.String()),
|
||||
deprecationDiags.InConfigBody(n.Config.Config, n.Addr.String()),
|
||||
)
|
||||
// Use unmarked value for validate request
|
||||
unmarkedConfigVal, _ := configVal.UnmarkDeep()
|
||||
|
|
@ -502,7 +509,8 @@ func (n *NodeValidatableResource) validateResource(ctx EvalContext) tfdiags.Diag
|
|||
if valDiags.HasErrors() {
|
||||
return diags
|
||||
}
|
||||
deprecationDiags := ctx.Deprecations().ValidateAsConfig(blockVal, schema.FullSchema, n.ModulePath())
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
blockVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(blockVal, schema.FullSchema, n.ModulePath())
|
||||
diags = diags.Append(deprecationDiags.InConfigBody(n.Config.Config, n.Addr.String()))
|
||||
}
|
||||
|
||||
|
|
@ -513,9 +521,9 @@ func (n *NodeValidatableResource) validateResource(ctx EvalContext) tfdiags.Diag
|
|||
if limitDiags.HasErrors() {
|
||||
return diags
|
||||
}
|
||||
_, deprecationDiags := ctx.Deprecations().Validate(limit, n.ModulePath(), n.Config.List.Limit.Range().Ptr())
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
limit, deprecationDiags = ctx.Deprecations().Validate(limit, n.ModulePath(), n.Config.List.Limit.Range().Ptr())
|
||||
diags = diags.Append(deprecationDiags)
|
||||
limit = marks.RemoveDeprecationMarks(limit)
|
||||
}
|
||||
|
||||
if n.Config.List.IncludeResource != nil {
|
||||
|
|
@ -524,9 +532,9 @@ func (n *NodeValidatableResource) validateResource(ctx EvalContext) tfdiags.Diag
|
|||
if includeDiags.HasErrors() {
|
||||
return diags
|
||||
}
|
||||
_, deprecationDiags := ctx.Deprecations().Validate(includeResource, n.ModulePath(), n.Config.List.IncludeResource.Range().Ptr())
|
||||
var deprecationDiags tfdiags.Diagnostics
|
||||
includeResource, deprecationDiags = ctx.Deprecations().Validate(includeResource, n.ModulePath(), n.Config.List.IncludeResource.Range().Ptr())
|
||||
diags = diags.Append(deprecationDiags)
|
||||
includeResource = marks.RemoveDeprecationMarks(includeResource)
|
||||
}
|
||||
|
||||
// Use unmarked value for validate request
|
||||
|
|
|
|||
Loading…
Reference in a new issue