internal/services/myvalidator/identity_validator.go (30 lines of code) (raw):

package myvalidator import ( "context" "github.com/Azure/terraform-provider-azapi/internal/azure/identity" "github.com/hashicorp/terraform-plugin-framework/schema/validator" "github.com/hashicorp/terraform-plugin-framework/types/basetypes" ) type identityValidator struct{} func (v identityValidator) Description(ctx context.Context) string { return "validate the identity block" } func (v identityValidator) MarkdownDescription(ctx context.Context) string { return "validate the identity block" } func (_ identityValidator) ValidateObject(ctx context.Context, req validator.ObjectRequest, resp *validator.ObjectResponse) { value := req.ConfigValue if value.IsUnknown() || value.IsNull() { return } var model identity.Model if resp.Diagnostics.Append(value.As(ctx, &model, basetypes.ObjectAsOptions{})...); resp.Diagnostics.HasError() { return } if _, err := identity.ExpandIdentity(model); err != nil { resp.Diagnostics.AddAttributeError(req.Path, "Invalid `identity` block", err.Error()) } } func IdentityValidator() validator.Object { return identityValidator{} }