github.com/rmenn/terraform@v0.3.8-0.20150225065417-fc84b3a78802/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 &EvalValidateProvider{ 48 ProviderName: n, 49 Provider: &provider, 50 Config: &resourceConfig, 51 }, 52 &EvalConfigProvider{ 53 Provider: n, 54 Config: &resourceConfig, 55 }, 56 }, 57 }, 58 }) 59 60 return &EvalSequence{Nodes: seq} 61 }