mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-28 18:01:01 -06:00
39 lines
962 B
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
|
||
|
}
|