mirror of
https://github.com/opentofu/opentofu.git
synced 2025-02-25 18:45:20 -06:00
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) {
|
func TestContextValidate_goodModule(t *testing.T) {
|
||||||
p := testProvider("aws")
|
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) {
|
func TestContextValidate_resourceConfig_bad(t *testing.T) {
|
||||||
m := testModule(t, "validate-bad-rc")
|
m := testModule(t, "validate-bad-rc")
|
||||||
p := testProvider("aws")
|
p := testProvider("aws")
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
package terraform
|
package terraform
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/hashicorp/terraform/config"
|
|
||||||
)
|
|
||||||
|
|
||||||
// EvalValidateError is the error structure returned if there were
|
// EvalValidateError is the error structure returned if there were
|
||||||
// validation errors.
|
// validation errors.
|
||||||
type EvalValidateError struct {
|
type EvalValidateError struct {
|
||||||
|
23
terraform/evaltree_provider.go
Normal file
23
terraform/evaltree_provider.go
Normal file
@ -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.
|
// GraphNodeEvalable impl.
|
||||||
func (n *GraphNodeConfigProvider) EvalTree() EvalNode {
|
func (n *GraphNodeConfigProvider) EvalTree() EvalNode {
|
||||||
return &EvalSequence{
|
return ProviderEvalTree(n.Provider.Name, n.Provider.RawConfig)
|
||||||
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},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// GraphNodeProvider implementation
|
// GraphNodeProvider implementation
|
||||||
@ -134,7 +122,7 @@ func (n *GraphNodeConfigResource) EvalTree() EvalNode {
|
|||||||
Nodes: []EvalNode{
|
Nodes: []EvalNode{
|
||||||
&EvalValidateResource{
|
&EvalValidateResource{
|
||||||
Provider: &EvalGetProvider{Name: n.ProvidedBy()},
|
Provider: &EvalGetProvider{Name: n.ProvidedBy()},
|
||||||
Config: n.Resource.RawConfig,
|
Config: &EvalInterpolate{Config: n.Resource.RawConfig},
|
||||||
ProviderType: n.ProvidedBy(),
|
ProviderType: n.ProvidedBy(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -102,7 +102,7 @@ func (n *graphNodeMissingProvider) Name() string {
|
|||||||
|
|
||||||
// GraphNodeEvalable impl.
|
// GraphNodeEvalable impl.
|
||||||
func (n *graphNodeMissingProvider) EvalTree() EvalNode {
|
func (n *graphNodeMissingProvider) EvalTree() EvalNode {
|
||||||
return &EvalInitProvider{Name: n.ProviderNameValue}
|
return ProviderEvalTree(n.ProviderNameValue, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *graphNodeMissingProvider) ProviderName() string {
|
func (n *graphNodeMissingProvider) ProviderName() string {
|
||||||
|
Loading…
Reference in New Issue
Block a user