github.com/bendemaree/terraform@v0.5.4-0.20150613200311-f50d97d6eee6/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 &EvalInterpolate{ 26 Config: config, 27 Output: &resourceConfig, 28 }, 29 &EvalBuildProviderConfig{ 30 Provider: n, 31 Config: &resourceConfig, 32 Output: &resourceConfig, 33 }, 34 &EvalInputProvider{ 35 Name: n, 36 Provider: &provider, 37 Config: &resourceConfig, 38 }, 39 }, 40 }, 41 }) 42 43 // Apply stuff 44 seq = append(seq, &EvalOpFilter{ 45 Ops: []walkOperation{walkValidate, walkRefresh, walkPlan, walkApply}, 46 Node: &EvalSequence{ 47 Nodes: []EvalNode{ 48 &EvalGetProvider{ 49 Name: n, 50 Output: &provider, 51 }, 52 &EvalInterpolate{ 53 Config: config, 54 Output: &resourceConfig, 55 }, 56 &EvalBuildProviderConfig{ 57 Provider: n, 58 Config: &resourceConfig, 59 Output: &resourceConfig, 60 }, 61 &EvalValidateProvider{ 62 Provider: &provider, 63 Config: &resourceConfig, 64 }, 65 &EvalConfigProvider{ 66 Provider: n, 67 Config: &resourceConfig, 68 }, 69 }, 70 }, 71 }) 72 73 return &EvalSequence{Nodes: seq} 74 }