github.com/hartzell/terraform@v0.8.6-0.20180503104400-0cc9e050ecd4/helper/customdiff/validate.go (about) 1 package customdiff 2 3 import ( 4 "github.com/hashicorp/terraform/helper/schema" 5 ) 6 7 // ValueChangeValidationFunc is a function type that validates the difference 8 // (or lack thereof) between two values, returning an error if the change 9 // is invalid. 10 type ValueChangeValidationFunc func(old, new, meta interface{}) error 11 12 // ValueValidationFunc is a function type that validates a particular value, 13 // returning an error if the value is invalid. 14 type ValueValidationFunc func(value, meta interface{}) error 15 16 // ValidateChange returns a CustomizeDiffFunc that applies the given validation 17 // function to the change for the given key, returning any error produced. 18 func ValidateChange(key string, f ValueChangeValidationFunc) schema.CustomizeDiffFunc { 19 return func(d *schema.ResourceDiff, meta interface{}) error { 20 old, new := d.GetChange(key) 21 return f(old, new, meta) 22 } 23 } 24 25 // ValidateValue returns a CustomizeDiffFunc that applies the given validation 26 // function to value of the given key, returning any error produced. 27 // 28 // This should generally not be used since it is functionally equivalent to 29 // a validation function applied directly to the schema attribute in question, 30 // but is provided for situations where composing multiple CustomizeDiffFuncs 31 // together makes intent clearer than spreading that validation across the 32 // schema. 33 func ValidateValue(key string, f ValueValidationFunc) schema.CustomizeDiffFunc { 34 return func(d *schema.ResourceDiff, meta interface{}) error { 35 val := d.Get(key) 36 return f(val, meta) 37 } 38 }