terraform: semantic check that variables are set on the correct types

This commit is contained in:
Mitchell Hashimoto 2014-07-22 09:27:28 -07:00
parent 935fa1d6fb
commit b9f49b2f60
2 changed files with 29 additions and 0 deletions

View File

@ -11,6 +11,11 @@ import (
func smcUserVariables(c *config.Config, vs map[string]string) []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
required := make(map[string]struct{})
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
return errs

View File

@ -27,4 +27,14 @@ func TestSMCUserVariables(t *testing.T) {
if len(errs) != 0 {
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")
}
}