github.com/paybyphone/terraform@v0.9.5-0.20170613192930-9706042ddd51/terraform/transform_import_provider.go (about)

     1  package terraform
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  )
     7  
     8  // ImportProviderValidateTransformer is a GraphTransformer that goes through
     9  // the providers in the graph and validates that they only depend on variables.
    10  type ImportProviderValidateTransformer struct{}
    11  
    12  func (t *ImportProviderValidateTransformer) Transform(g *Graph) error {
    13  	for _, v := range g.Vertices() {
    14  		// We only care about providers
    15  		pv, ok := v.(GraphNodeProvider)
    16  		if !ok {
    17  			continue
    18  		}
    19  
    20  		// We only care about providers that reference things
    21  		rn, ok := pv.(GraphNodeReferencer)
    22  		if !ok {
    23  			continue
    24  		}
    25  
    26  		for _, ref := range rn.References() {
    27  			if !strings.HasPrefix(ref, "var.") {
    28  				return fmt.Errorf(
    29  					"Provider %q depends on non-var %q. Providers for import can currently\n"+
    30  						"only depend on variables or must be hardcoded. You can stop import\n"+
    31  						"from loading configurations by specifying `-config=\"\"`.",
    32  					pv.ProviderName(), ref)
    33  			}
    34  		}
    35  	}
    36  
    37  	return nil
    38  }