terraform: semantic check that variables are set on the correct types
This commit is contained in:
parent
935fa1d6fb
commit
b9f49b2f60
|
@ -11,6 +11,11 @@ import (
|
||||||
func smcUserVariables(c *config.Config, vs map[string]string) []error {
|
func smcUserVariables(c *config.Config, vs map[string]string) []error {
|
||||||
var errs []error
|
var errs []error
|
||||||
|
|
||||||
|
cvs := make(map[string]*config.Variable)
|
||||||
|
for _, v := range c.Variables {
|
||||||
|
cvs[v.Name] = v
|
||||||
|
}
|
||||||
|
|
||||||
// Check that all required variables are present
|
// Check that all required variables are present
|
||||||
required := make(map[string]struct{})
|
required := make(map[string]struct{})
|
||||||
for _, v := range c.Variables {
|
for _, v := range c.Variables {
|
||||||
|
@ -28,6 +33,20 @@ func smcUserVariables(c *config.Config, vs map[string]string) []error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check that types match up
|
||||||
|
for k, _ := range vs {
|
||||||
|
v, ok := cvs[k]
|
||||||
|
if !ok {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if v.Type() != config.VariableTypeString {
|
||||||
|
errs = append(errs, fmt.Errorf(
|
||||||
|
"%s: cannot assign string value to map type",
|
||||||
|
k))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TODO(mitchellh): variables that are unknown
|
// TODO(mitchellh): variables that are unknown
|
||||||
|
|
||||||
return errs
|
return errs
|
||||||
|
|
|
@ -27,4 +27,14 @@ func TestSMCUserVariables(t *testing.T) {
|
||||||
if len(errs) != 0 {
|
if len(errs) != 0 {
|
||||||
t.Fatalf("err: %#v", errs)
|
t.Fatalf("err: %#v", errs)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Mapping complete override
|
||||||
|
errs = smcUserVariables(c, map[string]string{
|
||||||
|
"foo": "bar",
|
||||||
|
"map": "baz",
|
||||||
|
})
|
||||||
|
if len(errs) == 0 {
|
||||||
|
t.Fatal("should have errors")
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue