github.com/tarrant/terraform@v0.3.8-0.20150402012457-f68c9eee638e/terraform/evaltree_provider.go (about) 1 package terraform 2 3 import ( 4 "github.com/hashicorp/terraform/config" 5 ) 6 7 // ProviderEvalTree returns the evaluation tree for initializing and 8 // configuring providers. 9 func ProviderEvalTree(n string, config *config.RawConfig) EvalNode { 10 var provider ResourceProvider 11 var resourceConfig *ResourceConfig 12 13 seq := make([]EvalNode, 0, 5) 14 seq = append(seq, &EvalInitProvider{Name: n}) 15 16 // Input stuff 17 seq = append(seq, &EvalOpFilter{ 18 Ops: []walkOperation{walkInput}, 19 Node: &EvalSequence{ 20 Nodes: []EvalNode{ 21 &EvalGetProvider{ 22 Name: n, 23 Output: &provider, 24 }, 25 &EvalInputProvider{ 26 Name: n, 27 Provider: &provider, 28 Config: config, 29 }, 30 }, 31 }, 32 }) 33 34 // Apply stuff 35 seq = append(seq, &EvalOpFilter{ 36 Ops: []walkOperation{walkValidate, walkRefresh, walkPlan, walkApply}, 37 Node: &EvalSequence{ 38 Nodes: []EvalNode{ 39 &EvalGetProvider{ 40 Name: n, 41 Output: &provider, 42 }, 43 &EvalInterpolate{ 44 Config: config, 45 Output: &resourceConfig, 46 }, 47 &EvalBuildProviderConfig{ 48 Provider: n, 49 Config: &resourceConfig, 50 Output: &resourceConfig, 51 }, 52 &EvalValidateProvider{ 53 Provider: &provider, 54 Config: &resourceConfig, 55 }, 56 &EvalConfigProvider{ 57 Provider: n, 58 Config: &resourceConfig, 59 }, 60 }, 61 }, 62 }) 63 64 return &EvalSequence{Nodes: seq} 65 }