Documentation
¶
Overview ¶
Package metavalidator provides attribute validators that combine (algebraically) other attribute validators.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func All ¶
func All(valueValidators ...tfsdk.AttributeValidator) tfsdk.AttributeValidator
All returns an AttributeValidator which ensures that any configured attribute value:
- Validates against all the value validators.
Use of All is only necessary when used in conjunction with Any or AnyWithAllWarnings as the []tfsdk.AttributeValidator field automatically applies a logical AND.
Example ¶
package main
import (
"regexp"
"github.com/hashicorp/terraform-plugin-framework-validators/metavalidator"
"github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator"
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
"github.com/hashicorp/terraform-plugin-framework/types"
)
func main() {
// Used within a GetSchema method of a DataSource, Provider, or Resource
_ = tfsdk.Schema{
Attributes: map[string]tfsdk.Attribute{
"example_attr": {
Required: true,
Type: types.StringType,
Validators: []tfsdk.AttributeValidator{
// Validate this string value must either be:
// - "!!!"
// - At least 3 alphanumeric characters.
metavalidator.Any(
stringvalidator.OneOf("!!!"),
metavalidator.All(
stringvalidator.LengthAtLeast(3),
stringvalidator.RegexMatches(
regexp.MustCompile(`^[a-zA-Z0-9]*$`),
"must contain only alphanumeric characters",
),
),
),
},
},
},
}
}
Output:
func Any ¶
func Any(valueValidators ...tfsdk.AttributeValidator) tfsdk.AttributeValidator
Any returns an AttributeValidator which ensures that any configured attribute value:
- Validates against at least one of the value validators.
To prevent practitioner confusion should non-passing validators have conflicting logic, only warnings from the passing validator are returned. Use AnyWithAllWarnings() to return warnings from non-passing validators as well.
Example ¶
package main
import (
"regexp"
"github.com/hashicorp/terraform-plugin-framework-validators/metavalidator"
"github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator"
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
"github.com/hashicorp/terraform-plugin-framework/types"
)
func main() {
// Used within a GetSchema method of a DataSource, Provider, or Resource
_ = tfsdk.Schema{
Attributes: map[string]tfsdk.Attribute{
"example_attr": {
Required: true,
Type: types.StringType,
Validators: []tfsdk.AttributeValidator{
// Validate this string value must either be:
// - "!!!"
// - Any length of alphanumeric characters.
metavalidator.Any(
stringvalidator.OneOf("!!!"),
stringvalidator.RegexMatches(
regexp.MustCompile(`^[a-zA-Z0-9]*$`),
"must contain only alphanumeric characters",
),
),
},
},
},
}
}
Output:
func AnyWithAllWarnings ¶
func AnyWithAllWarnings(valueValidators ...tfsdk.AttributeValidator) tfsdk.AttributeValidator
AnyWithAllWarnings returns an AttributeValidator which ensures that any configured attribute value:
- Validates against at least one of the value validators.
- Returns all warnings for all passing and failing validators when at least one of the validators passes.
Use Any() to only return warnings from the passing validator.
Example ¶
package main
import (
"regexp"
"github.com/hashicorp/terraform-plugin-framework-validators/metavalidator"
"github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator"
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
"github.com/hashicorp/terraform-plugin-framework/types"
)
func main() {
// Used within a GetSchema method of a DataSource, Provider, or Resource
_ = tfsdk.Schema{
Attributes: map[string]tfsdk.Attribute{
"example_attr": {
Required: true,
Type: types.StringType,
Validators: []tfsdk.AttributeValidator{
// Validate this string value must either be:
// - "!!!"
// - Any length of alphanumeric characters.
metavalidator.AnyWithAllWarnings(
stringvalidator.OneOf("!!!"),
stringvalidator.RegexMatches(
regexp.MustCompile(`^[a-zA-Z0-9]*$`),
"must contain only alphanumeric characters",
),
),
},
},
},
}
}
Output:
Types ¶
This section is empty.