terraform: provider configuration validation
This commit is contained in:
parent
f9f18122ed
commit
57ad9e2502
|
@ -108,6 +108,46 @@ func TestContext2Validate_providerConfig_bad(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestContext2Validate_providerConfig_badEmpty(t *testing.T) {
|
||||
m := testModule(t, "validate-bad-pc-empty")
|
||||
p := testProvider("aws")
|
||||
c := testContext2(t, &ContextOpts{
|
||||
Module: m,
|
||||
Providers: map[string]ResourceProviderFactory{
|
||||
"aws": testProviderFuncFixed(p),
|
||||
},
|
||||
})
|
||||
|
||||
p.ValidateReturnErrors = []error{fmt.Errorf("bad")}
|
||||
|
||||
w, e := c.Validate()
|
||||
if len(w) > 0 {
|
||||
t.Fatalf("bad: %#v", w)
|
||||
}
|
||||
if len(e) == 0 {
|
||||
t.Fatalf("bad: %#v", e)
|
||||
}
|
||||
}
|
||||
|
||||
func TestContext2Validate_providerConfig_good(t *testing.T) {
|
||||
m := testModule(t, "validate-bad-pc")
|
||||
p := testProvider("aws")
|
||||
c := testContext2(t, &ContextOpts{
|
||||
Module: m,
|
||||
Providers: map[string]ResourceProviderFactory{
|
||||
"aws": testProviderFuncFixed(p),
|
||||
},
|
||||
})
|
||||
|
||||
w, e := c.Validate()
|
||||
if len(w) > 0 {
|
||||
t.Fatalf("bad: %#v", w)
|
||||
}
|
||||
if len(e) > 0 {
|
||||
t.Fatalf("bad: %#v", e)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
func TestContextValidate_goodModule(t *testing.T) {
|
||||
p := testProvider("aws")
|
||||
|
@ -296,46 +336,6 @@ func TestContextValidate_tainted(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestContextValidate_providerConfig_badEmpty(t *testing.T) {
|
||||
m := testModule(t, "validate-bad-pc-empty")
|
||||
p := testProvider("aws")
|
||||
c := testContext(t, &ContextOpts{
|
||||
Module: m,
|
||||
Providers: map[string]ResourceProviderFactory{
|
||||
"aws": testProviderFuncFixed(p),
|
||||
},
|
||||
})
|
||||
|
||||
p.ValidateReturnErrors = []error{fmt.Errorf("bad")}
|
||||
|
||||
w, e := c.Validate()
|
||||
if len(w) > 0 {
|
||||
t.Fatalf("bad: %#v", w)
|
||||
}
|
||||
if len(e) == 0 {
|
||||
t.Fatalf("bad: %#v", e)
|
||||
}
|
||||
}
|
||||
|
||||
func TestContextValidate_providerConfig_good(t *testing.T) {
|
||||
m := testModule(t, "validate-bad-pc")
|
||||
p := testProvider("aws")
|
||||
c := testContext(t, &ContextOpts{
|
||||
Module: m,
|
||||
Providers: map[string]ResourceProviderFactory{
|
||||
"aws": testProviderFuncFixed(p),
|
||||
},
|
||||
})
|
||||
|
||||
w, e := c.Validate()
|
||||
if len(w) > 0 {
|
||||
t.Fatalf("bad: %#v", w)
|
||||
}
|
||||
if len(e) > 0 {
|
||||
t.Fatalf("bad: %#v", e)
|
||||
}
|
||||
}
|
||||
|
||||
func TestContextValidate_resourceConfig_bad(t *testing.T) {
|
||||
m := testModule(t, "validate-bad-rc")
|
||||
p := testProvider("aws")
|
||||
|
|
|
@ -1,9 +1,5 @@
|
|||
package terraform
|
||||
|
||||
import (
|
||||
"github.com/hashicorp/terraform/config"
|
||||
)
|
||||
|
||||
// EvalValidateError is the error structure returned if there were
|
||||
// validation errors.
|
||||
type EvalValidateError struct {
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
package terraform
|
||||
|
||||
import (
|
||||
"github.com/hashicorp/terraform/config"
|
||||
)
|
||||
|
||||
// ProviderEvalTree returns the evaluation tree for initializing and
|
||||
// configuring providers.
|
||||
func ProviderEvalTree(n string, config *config.RawConfig) EvalNode {
|
||||
return &EvalSequence{
|
||||
Nodes: []EvalNode{
|
||||
&EvalInitProvider{Name: n},
|
||||
&EvalValidateProvider{
|
||||
Provider: &EvalGetProvider{Name: n},
|
||||
Config: &EvalInterpolate{Config: config},
|
||||
},
|
||||
&EvalConfigProvider{
|
||||
Provider: &EvalGetProvider{Name: n},
|
||||
Config: &EvalInterpolate{Config: config},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
|
@ -75,19 +75,7 @@ func (n *GraphNodeConfigProvider) DependentOn() []string {
|
|||
|
||||
// GraphNodeEvalable impl.
|
||||
func (n *GraphNodeConfigProvider) EvalTree() EvalNode {
|
||||
return &EvalSequence{
|
||||
Nodes: []EvalNode{
|
||||
&EvalInitProvider{Name: n.Provider.Name},
|
||||
&EvalValidateProvider{
|
||||
Provider: &EvalGetProvider{Name: n.Provider.Name},
|
||||
Config: &EvalInterpolate{Config: n.Provider.RawConfig},
|
||||
},
|
||||
&EvalConfigProvider{
|
||||
Provider: &EvalGetProvider{Name: n.Provider.Name},
|
||||
Config: &EvalInterpolate{Config: n.Provider.RawConfig},
|
||||
},
|
||||
},
|
||||
}
|
||||
return ProviderEvalTree(n.Provider.Name, n.Provider.RawConfig)
|
||||
}
|
||||
|
||||
// GraphNodeProvider implementation
|
||||
|
@ -134,7 +122,7 @@ func (n *GraphNodeConfigResource) EvalTree() EvalNode {
|
|||
Nodes: []EvalNode{
|
||||
&EvalValidateResource{
|
||||
Provider: &EvalGetProvider{Name: n.ProvidedBy()},
|
||||
Config: n.Resource.RawConfig,
|
||||
Config: &EvalInterpolate{Config: n.Resource.RawConfig},
|
||||
ProviderType: n.ProvidedBy(),
|
||||
},
|
||||
},
|
||||
|
|
|
@ -102,7 +102,7 @@ func (n *graphNodeMissingProvider) Name() string {
|
|||
|
||||
// GraphNodeEvalable impl.
|
||||
func (n *graphNodeMissingProvider) EvalTree() EvalNode {
|
||||
return &EvalInitProvider{Name: n.ProviderNameValue}
|
||||
return ProviderEvalTree(n.ProviderNameValue, nil)
|
||||
}
|
||||
|
||||
func (n *graphNodeMissingProvider) ProviderName() string {
|
||||
|
|
Loading…
Reference in New Issue