terraform/terraform/transform_import_provider.go

39 lines
962 B
Go

package terraform
import (
"fmt"
"strings"
)
// ImportProviderValidateTransformer is a GraphTransformer that goes through
// the providers in the graph and validates that they only depend on variables.
type ImportProviderValidateTransformer struct{}
func (t *ImportProviderValidateTransformer) Transform(g *Graph) error {
for _, v := range g.Vertices() {
// We only care about providers
pv, ok := v.(GraphNodeProvider)
if !ok {
continue
}
// We only care about providers that reference things
rn, ok := pv.(GraphNodeReferencer)
if !ok {
continue
}
for _, ref := range rn.References() {
if !strings.HasPrefix(ref, "var.") {
return fmt.Errorf(
"Provider %q depends on non-var %q. Providers for import can currently\n"+
"only depend on variables or must be hardcoded. You can stop import\n"+
"from loading configurations by specifying `-config=\"\"`.",
pv.ProviderName(), ref)
}
}
}
return nil
}