From 9d34612be0fb7856b3c9c1048ba253f822e5036f Mon Sep 17 00:00:00 2001 From: Seth Vargo Date: Wed, 22 Feb 2017 15:30:07 -0500 Subject: [PATCH] Ignore case on protocol and allocation types (#12176) --- builtin/providers/azurerm/provider.go | 12 ++++++++++++ .../providers/azurerm/resource_arm_loadbalancer.go | 10 ++++++---- .../azurerm/resource_arm_loadbalancer_nat_pool.go | 6 ++++-- .../azurerm/resource_arm_loadbalancer_nat_rule.go | 6 ++++-- .../azurerm/resource_arm_loadbalancer_probe.go | 8 +++++--- .../azurerm/resource_arm_loadbalancer_rule.go | 6 ++++-- .../azurerm/resource_arm_network_interface_card.go | 8 +++++--- builtin/providers/azurerm/resource_arm_public_ip.go | 11 +++++------ 8 files changed, 45 insertions(+), 22 deletions(-) diff --git a/builtin/providers/azurerm/provider.go b/builtin/providers/azurerm/provider.go index 05530d6a8..bf02ab83a 100644 --- a/builtin/providers/azurerm/provider.go +++ b/builtin/providers/azurerm/provider.go @@ -311,3 +311,15 @@ func azureStateRefreshFunc(resourceURI string, client *ArmClient, command rivier func resourceAzurermResourceGroupNameDiffSuppress(k, old, new string, d *schema.ResourceData) bool { return strings.ToLower(old) == strings.ToLower(new) } + +// ignoreCaseDiffSuppressFunc is a DiffSuppressFunc from helper/schema that is +// used to ignore any case-changes in a return value. +func ignoreCaseDiffSuppressFunc(k, old, new string, d *schema.ResourceData) bool { + return strings.ToLower(old) == strings.ToLower(new) +} + +// ignoreCaseStateFunc is a StateFunc from helper/schema that converts the +// supplied value to lower before saving to state for consistency. +func ignoreCaseStateFunc(val interface{}) string { + return strings.ToLower(val.(string)) +} diff --git a/builtin/providers/azurerm/resource_arm_loadbalancer.go b/builtin/providers/azurerm/resource_arm_loadbalancer.go index 84bde58e4..60bb95990 100644 --- a/builtin/providers/azurerm/resource_arm_loadbalancer.go +++ b/builtin/providers/azurerm/resource_arm_loadbalancer.go @@ -67,10 +67,12 @@ func resourceArmLoadBalancer() *schema.Resource { }, "private_ip_address_allocation": { - Type: schema.TypeString, - Optional: true, - Computed: true, - ValidateFunc: validateLoadBalancerPrivateIpAddressAllocation, + Type: schema.TypeString, + Optional: true, + Computed: true, + ValidateFunc: validateLoadBalancerPrivateIpAddressAllocation, + StateFunc: ignoreCaseStateFunc, + DiffSuppressFunc: ignoreCaseDiffSuppressFunc, }, "load_balancer_rules": { diff --git a/builtin/providers/azurerm/resource_arm_loadbalancer_nat_pool.go b/builtin/providers/azurerm/resource_arm_loadbalancer_nat_pool.go index acda0f419..683be636d 100644 --- a/builtin/providers/azurerm/resource_arm_loadbalancer_nat_pool.go +++ b/builtin/providers/azurerm/resource_arm_loadbalancer_nat_pool.go @@ -51,8 +51,10 @@ func resourceArmLoadBalancerNatPool() *schema.Resource { }, "protocol": { - Type: schema.TypeString, - Required: true, + Type: schema.TypeString, + Required: true, + StateFunc: ignoreCaseStateFunc, + DiffSuppressFunc: ignoreCaseDiffSuppressFunc, }, "frontend_port_start": { diff --git a/builtin/providers/azurerm/resource_arm_loadbalancer_nat_rule.go b/builtin/providers/azurerm/resource_arm_loadbalancer_nat_rule.go index f2fc5f82f..e33684312 100644 --- a/builtin/providers/azurerm/resource_arm_loadbalancer_nat_rule.go +++ b/builtin/providers/azurerm/resource_arm_loadbalancer_nat_rule.go @@ -51,8 +51,10 @@ func resourceArmLoadBalancerNatRule() *schema.Resource { }, "protocol": { - Type: schema.TypeString, - Required: true, + Type: schema.TypeString, + Required: true, + StateFunc: ignoreCaseStateFunc, + DiffSuppressFunc: ignoreCaseDiffSuppressFunc, }, "frontend_port": { diff --git a/builtin/providers/azurerm/resource_arm_loadbalancer_probe.go b/builtin/providers/azurerm/resource_arm_loadbalancer_probe.go index db3ac241d..df67c6ac6 100644 --- a/builtin/providers/azurerm/resource_arm_loadbalancer_probe.go +++ b/builtin/providers/azurerm/resource_arm_loadbalancer_probe.go @@ -51,9 +51,11 @@ func resourceArmLoadBalancerProbe() *schema.Resource { }, "protocol": { - Type: schema.TypeString, - Computed: true, - Optional: true, + Type: schema.TypeString, + Computed: true, + Optional: true, + StateFunc: ignoreCaseStateFunc, + DiffSuppressFunc: ignoreCaseDiffSuppressFunc, }, "port": { diff --git a/builtin/providers/azurerm/resource_arm_loadbalancer_rule.go b/builtin/providers/azurerm/resource_arm_loadbalancer_rule.go index 3e87a3c95..7bcbe0744 100644 --- a/builtin/providers/azurerm/resource_arm_loadbalancer_rule.go +++ b/builtin/providers/azurerm/resource_arm_loadbalancer_rule.go @@ -69,8 +69,10 @@ func resourceArmLoadBalancerRule() *schema.Resource { }, "protocol": { - Type: schema.TypeString, - Required: true, + Type: schema.TypeString, + Required: true, + StateFunc: ignoreCaseStateFunc, + DiffSuppressFunc: ignoreCaseDiffSuppressFunc, }, "frontend_port": { diff --git a/builtin/providers/azurerm/resource_arm_network_interface_card.go b/builtin/providers/azurerm/resource_arm_network_interface_card.go index 9cdccac18..7450519b1 100644 --- a/builtin/providers/azurerm/resource_arm_network_interface_card.go +++ b/builtin/providers/azurerm/resource_arm_network_interface_card.go @@ -79,9 +79,11 @@ func resourceArmNetworkInterface() *schema.Resource { }, "private_ip_address_allocation": { - Type: schema.TypeString, - Required: true, - ValidateFunc: validateNetworkInterfacePrivateIpAddressAllocation, + Type: schema.TypeString, + Required: true, + ValidateFunc: validateNetworkInterfacePrivateIpAddressAllocation, + StateFunc: ignoreCaseStateFunc, + DiffSuppressFunc: ignoreCaseDiffSuppressFunc, }, "public_ip_address_id": { diff --git a/builtin/providers/azurerm/resource_arm_public_ip.go b/builtin/providers/azurerm/resource_arm_public_ip.go index a95534397..91f5f562e 100644 --- a/builtin/providers/azurerm/resource_arm_public_ip.go +++ b/builtin/providers/azurerm/resource_arm_public_ip.go @@ -37,12 +37,11 @@ func resourceArmPublicIp() *schema.Resource { }, "public_ip_address_allocation": { - Type: schema.TypeString, - Required: true, - ValidateFunc: validatePublicIpAllocation, - StateFunc: func(val interface{}) string { - return strings.ToLower(val.(string)) - }, + Type: schema.TypeString, + Required: true, + ValidateFunc: validatePublicIpAllocation, + StateFunc: ignoreCaseStateFunc, + DiffSuppressFunc: ignoreCaseDiffSuppressFunc, }, "idle_timeout_in_minutes": {