From d82d9aa425e8775bf1f25974344da1e63533a84b Mon Sep 17 00:00:00 2001 From: kt Date: Sat, 5 Oct 2019 00:21:45 -0700 Subject: [PATCH 1/2] provider: ensure all locks are done in the same order --- azurerm/resource_arm_firewall.go | 12 ++++++------ azurerm/resource_arm_network_profile.go | 12 ++++++------ azurerm/resource_arm_redis_cache.go | 14 ++++++++++---- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/azurerm/resource_arm_firewall.go b/azurerm/resource_arm_firewall.go index 43688b244677..e82a06864b66 100644 --- a/azurerm/resource_arm_firewall.go +++ b/azurerm/resource_arm_firewall.go @@ -117,12 +117,12 @@ func resourceArmFirewallCreateUpdate(d *schema.ResourceData, meta interface{}) e locks.ByName(name, azureFirewallResourceName) defer locks.UnlockByName(name, azureFirewallResourceName) - locks.MultipleByName(subnetToLock, subnetResourceName) - defer locks.UnlockMultipleByName(subnetToLock, subnetResourceName) - locks.MultipleByName(vnetToLock, virtualNetworkResourceName) defer locks.UnlockMultipleByName(vnetToLock, virtualNetworkResourceName) + locks.MultipleByName(subnetToLock, subnetResourceName) + defer locks.UnlockMultipleByName(subnetToLock, subnetResourceName) + parameters := network.AzureFirewall{ Location: &location, Tags: tags.Expand(t), @@ -261,12 +261,12 @@ func resourceArmFirewallDelete(d *schema.ResourceData, meta interface{}) error { locks.ByName(name, azureFirewallResourceName) defer locks.UnlockByName(name, azureFirewallResourceName) - locks.MultipleByName(&subnetNamesToLock, subnetResourceName) - defer locks.UnlockMultipleByName(&subnetNamesToLock, subnetResourceName) - locks.MultipleByName(&virtualNetworkNamesToLock, virtualNetworkResourceName) defer locks.UnlockMultipleByName(&virtualNetworkNamesToLock, virtualNetworkResourceName) + locks.MultipleByName(&subnetNamesToLock, subnetResourceName) + defer locks.UnlockMultipleByName(&subnetNamesToLock, subnetResourceName) + future, err := client.Delete(ctx, resourceGroup, name) if err != nil { return fmt.Errorf("Error deleting Azure Firewall %q (Resource Group %q): %+v", name, resourceGroup, err) diff --git a/azurerm/resource_arm_network_profile.go b/azurerm/resource_arm_network_profile.go index 295be9b1818c..48294fae5a1b 100644 --- a/azurerm/resource_arm_network_profile.go +++ b/azurerm/resource_arm_network_profile.go @@ -123,12 +123,12 @@ func resourceArmNetworkProfileCreateUpdate(d *schema.ResourceData, meta interfac locks.ByName(name, azureNetworkProfileResourceName) defer locks.UnlockByName(name, azureNetworkProfileResourceName) - locks.MultipleByName(subnetsToLock, subnetResourceName) - defer locks.UnlockMultipleByName(subnetsToLock, subnetResourceName) - locks.MultipleByName(vnetsToLock, virtualNetworkResourceName) defer locks.UnlockMultipleByName(vnetsToLock, virtualNetworkResourceName) + locks.MultipleByName(subnetsToLock, subnetResourceName) + defer locks.UnlockMultipleByName(subnetsToLock, subnetResourceName) + parameters := network.Profile{ Location: &location, Tags: tags.Expand(t), @@ -228,12 +228,12 @@ func resourceArmNetworkProfileDelete(d *schema.ResourceData, meta interface{}) e locks.ByName(name, azureNetworkProfileResourceName) defer locks.UnlockByName(name, azureNetworkProfileResourceName) - locks.MultipleByName(subnetsToLock, subnetResourceName) - defer locks.UnlockMultipleByName(subnetsToLock, subnetResourceName) - locks.MultipleByName(vnetsToLock, virtualNetworkResourceName) defer locks.UnlockMultipleByName(vnetsToLock, virtualNetworkResourceName) + locks.MultipleByName(subnetsToLock, subnetResourceName) + defer locks.UnlockMultipleByName(subnetsToLock, subnetResourceName) + if _, err = client.Delete(ctx, resourceGroup, name); err != nil { return fmt.Errorf("Error deleting Network Profile %q (Resource Group %q): %+v", name, resourceGroup, err) } diff --git a/azurerm/resource_arm_redis_cache.go b/azurerm/resource_arm_redis_cache.go index 710e2ab0a96b..a4a753a4d989 100644 --- a/azurerm/resource_arm_redis_cache.go +++ b/azurerm/resource_arm_redis_cache.go @@ -324,10 +324,13 @@ func resourceArmRedisCacheCreate(d *schema.ResourceData, meta interface{}) error } subnetName := parsed.Path["subnets"] virtualNetworkName := parsed.Path["virtualNetworks"] - locks.ByName(subnetName, subnetResourceName) - defer locks.UnlockByName(subnetName, subnetResourceName) + locks.ByName(virtualNetworkName, virtualNetworkResourceName) defer locks.UnlockByName(virtualNetworkName, virtualNetworkResourceName) + + locks.ByName(subnetName, subnetResourceName) + defer locks.UnlockByName(subnetName, subnetResourceName) + parameters.SubnetID = utils.String(v.(string)) } @@ -575,10 +578,13 @@ func resourceArmRedisCacheDelete(d *schema.ResourceData, meta interface{}) error } subnetName := parsed.Path["subnets"] virtualNetworkName := parsed.Path["virtualNetworks"] - locks.ByName(subnetName, subnetResourceName) - defer locks.UnlockByName(subnetName, subnetResourceName) + locks.ByName(virtualNetworkName, virtualNetworkResourceName) defer locks.UnlockByName(virtualNetworkName, virtualNetworkResourceName) + + locks.ByName(subnetName, subnetResourceName) + defer locks.UnlockByName(subnetName, subnetResourceName) + } future, err := client.Delete(ctx, resGroup, name) if err != nil { From 4c9a7eea7e9ba52354f842aff6c9dd1e36c43671 Mon Sep 17 00:00:00 2001 From: kt Date: Sun, 6 Oct 2019 22:44:56 -0700 Subject: [PATCH 2/2] make whitespace --- azurerm/resource_arm_redis_cache.go | 1 - 1 file changed, 1 deletion(-) diff --git a/azurerm/resource_arm_redis_cache.go b/azurerm/resource_arm_redis_cache.go index a4a753a4d989..a34c3bd16cde 100644 --- a/azurerm/resource_arm_redis_cache.go +++ b/azurerm/resource_arm_redis_cache.go @@ -584,7 +584,6 @@ func resourceArmRedisCacheDelete(d *schema.ResourceData, meta interface{}) error locks.ByName(subnetName, subnetResourceName) defer locks.UnlockByName(subnetName, subnetResourceName) - } future, err := client.Delete(ctx, resGroup, name) if err != nil {