Fix chef provisioner validateFn
Correctly validate Chef provisioner's `use_policyfile` field even if its value is a string type. Signed-off-by: Jeremiah Snapp <jeremiah@chef.io>
This commit is contained in:
parent
48517fbab4
commit
7595e27772
|
@ -11,6 +11,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"text/template"
|
"text/template"
|
||||||
|
@ -370,18 +371,29 @@ func applyFn(ctx context.Context) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func validateFn(c *terraform.ResourceConfig) (ws []string, es []error) {
|
func validateFn(c *terraform.ResourceConfig) (ws []string, es []error) {
|
||||||
usePolicyFile, ok := c.Get("use_policyfile")
|
usePolicyFile := false
|
||||||
if !ok {
|
if usePolicyFileRaw, ok := c.Get("use_policyfile"); ok {
|
||||||
usePolicyFile = false
|
switch usePolicyFileRaw := usePolicyFileRaw.(type) {
|
||||||
|
case bool:
|
||||||
|
usePolicyFile = usePolicyFileRaw
|
||||||
|
case string:
|
||||||
|
usePolicyFileBool, err := strconv.ParseBool(usePolicyFileRaw)
|
||||||
|
if err != nil {
|
||||||
|
return ws, append(es, errors.New("\"use_policyfile\" must be a boolean"))
|
||||||
|
}
|
||||||
|
usePolicyFile = usePolicyFileBool
|
||||||
|
default:
|
||||||
|
return ws, append(es, errors.New("\"use_policyfile\" must be a boolean"))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !usePolicyFile.(bool) && !c.IsSet("run_list") {
|
if !usePolicyFile && !c.IsSet("run_list") {
|
||||||
es = append(es, errors.New("\"run_list\": required field is not set"))
|
es = append(es, errors.New("\"run_list\": required field is not set"))
|
||||||
}
|
}
|
||||||
if usePolicyFile.(bool) && !c.IsSet("policy_name") {
|
if usePolicyFile && !c.IsSet("policy_name") {
|
||||||
es = append(es, errors.New("using policyfile, but \"policy_name\" not set"))
|
es = append(es, errors.New("using policyfile, but \"policy_name\" not set"))
|
||||||
}
|
}
|
||||||
if usePolicyFile.(bool) && !c.IsSet("policy_group") {
|
if usePolicyFile && !c.IsSet("policy_group") {
|
||||||
es = append(es, errors.New("using policyfile, but \"policy_group\" not set"))
|
es = append(es, errors.New("using policyfile, but \"policy_group\" not set"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue