github.com/hashicorp/terraform-plugin-sdk@v1.17.2/terraform/transform_import_provider.go (about) 1 package terraform 2 3 import ( 4 "fmt" 5 6 "github.com/hashicorp/hcl/v2" 7 "github.com/hashicorp/terraform-plugin-sdk/internal/addrs" 8 "github.com/hashicorp/terraform-plugin-sdk/internal/tfdiags" 9 ) 10 11 // ImportProviderValidateTransformer is a GraphTransformer that goes through 12 // the providers in the graph and validates that they only depend on variables. 13 type ImportProviderValidateTransformer struct{} 14 15 func (t *ImportProviderValidateTransformer) Transform(g *Graph) error { 16 var diags tfdiags.Diagnostics 17 18 for _, v := range g.Vertices() { 19 // We only care about providers 20 pv, ok := v.(GraphNodeProvider) 21 if !ok { 22 continue 23 } 24 25 // We only care about providers that reference things 26 rn, ok := pv.(GraphNodeReferencer) 27 if !ok { 28 continue 29 } 30 31 for _, ref := range rn.References() { 32 if _, ok := ref.Subject.(addrs.InputVariable); !ok { 33 diags = diags.Append(&hcl.Diagnostic{ 34 Severity: hcl.DiagError, 35 Summary: "Invalid provider dependency for import", 36 Detail: fmt.Sprintf("The configuration for %s depends on %s. Providers used with import must either have literal configuration or refer only to input variables.", pv.ProviderAddr(), ref.Subject.String()), 37 Subject: ref.SourceRange.ToHCL().Ptr(), 38 }) 39 } 40 } 41 } 42 43 return diags.Err() 44 }