in src/terraform/providers/terraform-provider-avere/resource_vfxt.go [2313:2444]
func validateSchemaforOnlyAscii(d *schema.ResourceData) error {
validateParameterSlice := []string{
controller_address,
controller_admin_username,
controller_admin_password,
location,
azure_resource_group,
azure_network_resource_group,
azure_network_name,
azure_subnet_name,
ntp_servers,
timezone,
dns_server,
dns_domain,
dns_search,
proxy_uri,
cluster_proxy_uri,
image_id,
vfxt_cluster_name,
vfxt_admin_password,
vfxt_ssh_key_data,
user_assigned_managed_identity,
}
for _, parameter := range validateParameterSlice {
if v, exists := d.GetOk(parameter); exists {
if err := ValidateOnlyAscii(v.(string), parameter); err != nil {
return err
}
}
}
validateListParameterSlice := []string{
global_custom_settings,
vserver_settings,
}
for _, listName := range validateListParameterSlice {
for _, v := range d.Get(listName).(*schema.Set).List() {
if err := ValidateOnlyAscii(v.(string), fmt.Sprintf("%s-'%s'", listName, v.(string))); err != nil {
return err
}
}
}
// user parameters do not need ascii check since they have custom validation functions
for _, v := range d.Get(core_filer).(*schema.Set).List() {
input := v.(map[string]interface{})
corefilerSlice := []string{
input[core_filer_name].(string),
input[fqdn_or_primary_ip].(string),
input[filer_class].(string),
input[cache_policy].(string),
}
for _, parameter := range corefilerSlice {
if err := ValidateOnlyAscii(parameter, parameter); err != nil {
return err
}
}
for _, v := range input[custom_settings].(*schema.Set).List() {
if err := ValidateOnlyAscii(v.(string), fmt.Sprintf("%s-customsetting-'%s'", core_filer_name, v.(string))); err != nil {
return err
}
}
// the junction
if v, ok := input[junction].(*schema.Set); ok {
for _, j := range v.List() {
if m, ok := j.(map[string]interface{}); ok {
if v2, ok := m[namespace_path]; ok {
if err := ValidateOnlyAscii(v2.(string), fmt.Sprintf("%s-'%s'", namespace_path, v2.(string))); err != nil {
return err
}
}
if v2, ok := m[core_filer_export]; ok {
if err := ValidateOnlyAscii(v2.(string), fmt.Sprintf("%s-'%s'", core_filer_name, v2.(string))); err != nil {
return err
}
}
if v2, ok := m[export_subdirectory]; ok {
if err := ValidateOnlyAscii(v2.(string), fmt.Sprintf("%s-'%s'", export_subdirectory, v2.(string))); err != nil {
return err
}
}
if v2, ok := m[export_rule]; ok {
if err := ValidateOnlyAscii(v2.(string), fmt.Sprintf("%s-'%s'", export_rule, v2.(string))); err != nil {
return err
}
}
if v2, ok := m[cifs_share_name]; ok {
if err := ValidateOnlyAscii(v2.(string), fmt.Sprintf("%s-'%s'", cifs_share_name, v2.(string))); err != nil {
return err
}
}
if v2, ok := m[cifs_share_ace]; ok {
if err := ValidateOnlyAscii(v2.(string), fmt.Sprintf("%s-'%s'", cifs_share_ace, v2.(string))); err != nil {
return err
}
}
}
}
}
}
// storage filers
for _, v := range d.Get(azure_storage_filer).(*schema.Set).List() {
input := v.(map[string]interface{})
storagefilerSlice := []string{
input[account_name].(string),
input[container_name].(string),
input[export_rule].(string),
input[cifs_share_name].(string),
input[cifs_share_ace].(string),
}
// the junction namespace path is optional, and has no default
if v, ok := input[junction_namespace_path]; ok {
storagefilerSlice = append(storagefilerSlice, v.(string))
}
for _, parameter := range storagefilerSlice {
if err := ValidateOnlyAscii(parameter, parameter); err != nil {
return err
}
}
for _, v := range input[custom_settings].(*schema.Set).List() {
if err := ValidateOnlyAscii(v.(string), fmt.Sprintf("%s-customsetting-'%s'", input[account_name].(string), v.(string))); err != nil {
return err
}
}
}
return nil
}