From a5c1ef1bb2e6abf1238a14bc0a9f19f0e544f0ed Mon Sep 17 00:00:00 2001 From: rob Date: Tue, 5 May 2020 15:24:18 +0200 Subject: [PATCH 1/3] use custom hash function to not distinguish between upper- and lowercase name of a analysis services server ipv4 fw rule --- .../analysis_services_server_resource.go | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/azurerm/internal/services/analysisservices/analysis_services_server_resource.go b/azurerm/internal/services/analysisservices/analysis_services_server_resource.go index 0e5ab8b2704e..d2fd60f2f024 100644 --- a/azurerm/internal/services/analysisservices/analysis_services_server_resource.go +++ b/azurerm/internal/services/analysisservices/analysis_services_server_resource.go @@ -1,9 +1,12 @@ package analysisservices import ( + "bytes" "fmt" + "github.com/hashicorp/terraform-plugin-sdk/helper/hashcode" "log" "regexp" + "strings" "time" "github.com/Azure/azure-sdk-for-go/services/analysisservices/mgmt/2017-08-01/analysisservices" @@ -99,6 +102,7 @@ func resourceArmAnalysisServicesServer() *schema.Resource { }, }, }, + Set: hashAnalysisServicesServerIpv4FirewallRule, }, "querypool_connection_mode": { @@ -383,19 +387,19 @@ func expandAnalysisServicesServerFirewallSettings(d *schema.ResourceData) *analy return &firewallSettings } -func flattenAnalysisServicesServerFirewallSettings(serverProperties *analysisservices.ServerProperties) (enablePowerBi *bool, fwRules []interface{}) { +func flattenAnalysisServicesServerFirewallSettings(serverProperties *analysisservices.ServerProperties) (*bool, *schema.Set) { if serverProperties == nil || serverProperties.IPV4FirewallSettings == nil { - return utils.Bool(false), make([]interface{}, 0) + return utils.Bool(false), schema.NewSet(hashAnalysisServicesServerIpv4FirewallRule, make([]interface{}, 0)) } firewallSettings := serverProperties.IPV4FirewallSettings - enablePowerBi = utils.Bool(false) + enablePowerBi := utils.Bool(false) if firewallSettings.EnablePowerBIService != nil { enablePowerBi = firewallSettings.EnablePowerBIService } - fwRules = make([]interface{}, 0) + fwRules := make([]interface{}, 0) if firewallSettings.FirewallRules != nil { for _, fwRule := range *firewallSettings.FirewallRules { output := make(map[string]interface{}) @@ -415,5 +419,16 @@ func flattenAnalysisServicesServerFirewallSettings(serverProperties *analysisser } } - return enablePowerBi, fwRules + return enablePowerBi, schema.NewSet(hashAnalysisServicesServerIpv4FirewallRule, fwRules) +} + +func hashAnalysisServicesServerIpv4FirewallRule(v interface{}) int { + var buf bytes.Buffer + m := v.(map[string]interface{}) + + buf.WriteString(fmt.Sprintf("%s-", strings.ToLower(m["name"].(string)))) + buf.WriteString(fmt.Sprintf("%s-", m["range_start"].(string))) + buf.WriteString(fmt.Sprintf("%s", m["range_end"].(string))) + + return hashcode.String(buf.String()) } From d8e7355ea897dc8d4494e0bb932611fdc4147890 Mon Sep 17 00:00:00 2001 From: rob Date: Tue, 5 May 2020 15:31:56 +0200 Subject: [PATCH 2/3] fix imports --- .../analysisservices/analysis_services_server_resource.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azurerm/internal/services/analysisservices/analysis_services_server_resource.go b/azurerm/internal/services/analysisservices/analysis_services_server_resource.go index d2fd60f2f024..b88a6b3cf85b 100644 --- a/azurerm/internal/services/analysisservices/analysis_services_server_resource.go +++ b/azurerm/internal/services/analysisservices/analysis_services_server_resource.go @@ -3,13 +3,13 @@ package analysisservices import ( "bytes" "fmt" - "github.com/hashicorp/terraform-plugin-sdk/helper/hashcode" "log" "regexp" "strings" "time" "github.com/Azure/azure-sdk-for-go/services/analysisservices/mgmt/2017-08-01/analysisservices" + "github.com/hashicorp/terraform-plugin-sdk/helper/hashcode" "github.com/hashicorp/terraform-plugin-sdk/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/helper/validation" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure" From 09857dcea730200346fb76c7236032e13f26d45b Mon Sep 17 00:00:00 2001 From: rob Date: Wed, 6 May 2020 07:13:55 +0200 Subject: [PATCH 3/3] fix lintrest problem --- .../analysisservices/analysis_services_server_resource.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azurerm/internal/services/analysisservices/analysis_services_server_resource.go b/azurerm/internal/services/analysisservices/analysis_services_server_resource.go index b88a6b3cf85b..c5c31b67f068 100644 --- a/azurerm/internal/services/analysisservices/analysis_services_server_resource.go +++ b/azurerm/internal/services/analysisservices/analysis_services_server_resource.go @@ -428,7 +428,7 @@ func hashAnalysisServicesServerIpv4FirewallRule(v interface{}) int { buf.WriteString(fmt.Sprintf("%s-", strings.ToLower(m["name"].(string)))) buf.WriteString(fmt.Sprintf("%s-", m["range_start"].(string))) - buf.WriteString(fmt.Sprintf("%s", m["range_end"].(string))) + buf.WriteString(m["range_end"].(string)) return hashcode.String(buf.String()) }