don't add identical config-gen resource nodes

If the -generate-config-out flag was given but there are multiple import
blocks for the instance, we can't add multiple nodes for the same
resource.
pull/33932/head
James Bardin 3 years ago
parent e130c7b9ab
commit 41fabcfbe0

@ -182,9 +182,23 @@ func (t *ConfigTransformer) transformSingle(g *Graph, config *configs.Config) er
for _, i := range importTargets {
if path.IsRoot() {
if t.generateConfigPathForImportTargets != "" {
// If we have a single instance import target in the root module, we
// can suggest config generation.
// We do need to make sure there are no dynamic expressions here
// and we can parse this at all.
var toDiags tfdiags.Diagnostics
traversal, hd := hcl.AbsTraversalForExpr(i.Config.To)
toDiags = toDiags.Append(hd)
to, td := addrs.ParseAbsResourceInstance(traversal)
toDiags = toDiags.Append(td)
canGenerate := !toDiags.HasErrors() && to.Resource.Key == addrs.NoKey
if t.generateConfigPathForImportTargets != "" && canGenerate {
log.Printf("[DEBUG] ConfigTransformer: adding config generation node for %s", i.Config.ToResource)
// TODO: if config generation is ever supported for for_each
// resources, this will add multiple nodes for the same
// resource
abstract := &NodeAbstractResource{
Addr: i.Config.ToResource,
importTargets: []*ImportTarget{i},
@ -198,16 +212,7 @@ func (t *ConfigTransformer) transformSingle(g *Graph, config *configs.Config) er
g.Add(node)
continue
}
// If we have a single instance import target in the root module, we
// can suggest config generation.
// We do need to make sure there are no dynamic expressions here
// and we can parse this at all.
var toDiags tfdiags.Diagnostics
traversal, hd := hcl.AbsTraversalForExpr(i.Config.To)
toDiags = toDiags.Append(hd)
to, td := addrs.ParseAbsResourceInstance(traversal)
toDiags = toDiags.Append(td)
if !toDiags.HasErrors() && to.Resource.Key == addrs.NoKey {
if canGenerate {
diags = diags.Append(&hcl.Diagnostic{
Severity: hcl.DiagError,
Summary: "Configuration for import target does not exist",

Loading…
Cancel
Save