Documentation ¶
Overview ¶
Copyright (c) HashiCorp, Inc. SPDX-License-Identifier: MPL-2.0
Copyright (c) HashiCorp, Inc. SPDX-License-Identifier: MPL-2.0
Index ¶
- Constants
- Variables
- func OrEmpty(f schema.SchemaValidateFunc) schema.SchemaValidateFunc
- func PathOrContents(poc string) (string, bool, error)
- func StringNotInSlice(invalid []string, ignoreCase bool) schema.SchemaValidateFunc
- func TestStringValidation(testCase StringValidationTestCase, validationFunc schema.SchemaValidateFunc) []error
- func TestStringValidationCases(cases []StringValidationTestCase, validationFunc schema.SchemaValidateFunc) []error
- func ValidateADDomainName() schema.SchemaValidateFunc
- func ValidateBase64String(i interface{}, val string) ([]string, []error)
- func ValidateDSProjectID() schema.SchemaValidateFunc
- func ValidateDuration() schema.SchemaValidateFunc
- func ValidateEnum(values []string) schema.SchemaValidateFunc
- func ValidateGCEName(v interface{}, k string) (ws []string, errors []error)
- func ValidateHourlyOnly(val interface{}, key string) (warns []string, errs []error)
- func ValidateIAMCustomRoleID(v interface{}, k string) (warnings []string, errors []error)
- func ValidateIpAddress(i interface{}, val string) ([]string, []error)
- func ValidateIpCidrRange(v interface{}, k string) (warnings []string, errors []error)
- func ValidateNonNegativeDuration() schema.SchemaValidateFunc
- func ValidateProjectID() schema.SchemaValidateFunc
- func ValidateProjectName() schema.SchemaValidateFunc
- func ValidateRFC1035Name(min, max int) schema.SchemaValidateFunc
- func ValidateRFC1918Network(min, max int) schema.SchemaValidateFunc
- func ValidateRFC3339Date(v interface{}, k string) (warnings []string, errors []error)
- func ValidateRFC3339Time(v interface{}, k string) (warnings []string, errors []error)
- func ValidateRFC6996Asn(v interface{}, k string) (ws []string, errors []error)
- func ValidateRegexp(re string) schema.SchemaValidateFunc
- type StringValidationTestCase
Constants ¶
const ( // Copied from the official Google Cloud auto-generated client. ProjectRegex = "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))" ProjectRegexWildCard = "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?)|-)" RegionRegex = "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?" SubnetworkRegex = "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?" SubnetworkLinkRegex = "projects/(" + ProjectRegex + ")/regions/(" + RegionRegex + ")/subnetworks/(" + SubnetworkRegex + ")$" RFC1035NameTemplate = "[a-z](?:[-a-z0-9]{%d,%d}[a-z0-9])" CloudIoTIdRegex = "^[a-zA-Z][-a-zA-Z0-9._+~%]{2,254}$" // Format of default Compute service accounts created by Google // ${PROJECT_ID}-compute@developer.gserviceaccount.com where PROJECT_ID is an int64 (max 20 digits) ComputeServiceAccountNameRegex = "[0-9]{1,20}-compute@developer.gserviceaccount.com" // https://cloud.google.com/iam/docs/understanding-custom-roles#naming_the_role IAMCustomRoleIDRegex = "^[a-zA-Z0-9_\\.]{3,64}$" // https://cloud.google.com/managed-microsoft-ad/reference/rest/v1/projects.locations.global.domains/create#query-parameters ADDomainNameRegex = "^[a-z][a-z0-9-]{0,14}\\.[a-z0-9-\\.]*[a-z]+[a-z0-9]*$" )
Variables ¶
var ( // Service account name must have a length between 6 and 30. // The first and last characters have different restrictions, than // the middle characters. The middle characters length must be between // 4 and 28 since the first and last character are excluded. ServiceAccountNameRegex = fmt.Sprintf(RFC1035NameTemplate, 4, 28) ServiceAccountLinkRegexPrefix = "projects/" + ProjectRegexWildCard + "/serviceAccounts/" PossibleServiceAccountNames = []string{ ServiceDefaultAccountNameRegex, ComputeServiceAccountNameRegex, CreatedServiceAccountNameRegex, } ServiceAccountLinkRegex = ServiceAccountLinkRegexPrefix + "(" + strings.Join(PossibleServiceAccountNames, "|") + ")" ServiceAccountKeyNameRegex = ServiceAccountLinkRegexPrefix + "(.+)/keys/(.+)" // Format of service accounts created through the API CreatedServiceAccountNameRegex = fmt.Sprintf(RFC1035NameTemplate, 4, 28) + "@" + ProjectNameInDNSFormRegex + "\\.iam\\.gserviceaccount\\.com$" // Format of service-created service account // examples are: // $PROJECTID@cloudbuild.gserviceaccount.com // $PROJECTID@cloudservices.gserviceaccount.com // $PROJECTID@appspot.gserviceaccount.com ServiceDefaultAccountNameRegex = ProjectRegex + "@[a-z]+.gserviceaccount.com$" ProjectNameInDNSFormRegex = "[-a-z0-9\\.]{1,63}" ProjectNameRegex = "^[A-Za-z0-9-'\"\\s!]{4,30}$" // Valid range for Cloud Router ASN values as per RFC6996 // https://tools.ietf.org/html/rfc6996 // Must be explicitly int64 to avoid overflow when building Terraform for 32bit architectures Rfc6996Asn16BitMin = int64(64512) Rfc6996Asn16BitMax = int64(65534) Rfc6996Asn32BitMin = int64(4200000000) Rfc6996Asn32BitMax = int64(4294967294) GcpRouterPartnerAsn = int64(16550) )
var Rfc1918Networks = []string{
"10.0.0.0/8",
"172.16.0.0/12",
"192.168.0.0/16",
}
Functions ¶
func OrEmpty ¶
func OrEmpty(f schema.SchemaValidateFunc) schema.SchemaValidateFunc
func PathOrContents ¶
If the argument is a path, pathOrContents loads it and returns the contents, otherwise the argument is assumed to be the desired contents and is simply returned.
The boolean second return value can be called `wasPath` - it indicates if a path was detected and a file loaded.
func StringNotInSlice ¶
func StringNotInSlice(invalid []string, ignoreCase bool) schema.SchemaValidateFunc
StringNotInSlice returns a SchemaValidateFunc which tests if the provided value is of type string and that it matches none of the element in the invalid slice. if ignorecase is true, case is ignored.
func TestStringValidation ¶
func TestStringValidation(testCase StringValidationTestCase, validationFunc schema.SchemaValidateFunc) []error
func TestStringValidationCases ¶
func TestStringValidationCases(cases []StringValidationTestCase, validationFunc schema.SchemaValidateFunc) []error
func ValidateADDomainName ¶
func ValidateADDomainName() schema.SchemaValidateFunc
func ValidateBase64String ¶
func ValidateDSProjectID ¶
func ValidateDSProjectID() schema.SchemaValidateFunc
func ValidateDuration ¶
func ValidateDuration() schema.SchemaValidateFunc
func ValidateEnum ¶
func ValidateEnum(values []string) schema.SchemaValidateFunc
func ValidateGCEName ¶
validateGCEName ensures that a field matches the requirements for Compute Engine resource names https://cloud.google.com/compute/docs/naming-resources#resource-name-format
func ValidateHourlyOnly ¶
Ensure that hourly timestamp strings "HH:MM" have the minutes zeroed out for hourly only inputs
func ValidateIAMCustomRoleID ¶
func ValidateIpAddress ¶
func ValidateIpCidrRange ¶
func ValidateNonNegativeDuration ¶
func ValidateNonNegativeDuration() schema.SchemaValidateFunc
func ValidateProjectID ¶
func ValidateProjectID() schema.SchemaValidateFunc
func ValidateProjectName ¶
func ValidateProjectName() schema.SchemaValidateFunc
func ValidateRFC1035Name ¶
func ValidateRFC1035Name(min, max int) schema.SchemaValidateFunc
func ValidateRFC1918Network ¶
func ValidateRFC1918Network(min, max int) schema.SchemaValidateFunc
func ValidateRFC3339Date ¶
func ValidateRFC3339Time ¶
func ValidateRFC6996Asn ¶
Ensure that the BGP ASN value of Cloud Router is a valid value as per RFC6996 or a value of 16550
func ValidateRegexp ¶
func ValidateRegexp(re string) schema.SchemaValidateFunc