Lock Route Table / Subnets
This commit is contained in:
parent
4a782583b6
commit
f712880fee
|
@ -104,6 +104,14 @@ func resourceArmSubnetCreate(d *schema.ResourceData, meta interface{}) error {
|
|||
properties.RouteTable = &network.RouteTable{
|
||||
ID: &rtId,
|
||||
}
|
||||
|
||||
routeTableName, err := parseRouteTableName(rtId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
armMutexKV.Lock(routeTableName)
|
||||
defer armMutexKV.Unlock(routeTableName)
|
||||
}
|
||||
|
||||
subnet := network.Subnet{
|
||||
|
@ -201,6 +209,17 @@ func resourceArmSubnetDelete(d *schema.ResourceData, meta interface{}) error {
|
|||
defer armMutexKV.Unlock(networkSecurityGroupName)
|
||||
}
|
||||
|
||||
if v, ok := d.GetOk("route_table_id"); ok {
|
||||
rtId := v.(string)
|
||||
routeTableName, err := parseRouteTableName(rtId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
armMutexKV.Lock(routeTableName)
|
||||
defer armMutexKV.Unlock(routeTableName)
|
||||
}
|
||||
|
||||
armMutexKV.Lock(vnetName)
|
||||
defer armMutexKV.Unlock(vnetName)
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ import (
|
|||
func TestAccAzureRMSubnet_basic(t *testing.T) {
|
||||
|
||||
ri := acctest.RandInt()
|
||||
config := fmt.Sprintf(testAccAzureRMSubnet_basic, ri, ri, ri)
|
||||
config := fmt.Sprintf(testAccAzureRMSubnet_basic, ri, ri, ri, ri, ri)
|
||||
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
|
@ -33,7 +33,7 @@ func TestAccAzureRMSubnet_basic(t *testing.T) {
|
|||
func TestAccAzureRMSubnet_disappears(t *testing.T) {
|
||||
|
||||
ri := acctest.RandInt()
|
||||
config := fmt.Sprintf(testAccAzureRMSubnet_basic, ri, ri, ri)
|
||||
config := fmt.Sprintf(testAccAzureRMSubnet_basic, ri, ri, ri, ri, ri)
|
||||
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
|
@ -152,5 +152,22 @@ resource "azurerm_subnet" "test" {
|
|||
resource_group_name = "${azurerm_resource_group.test.name}"
|
||||
virtual_network_name = "${azurerm_virtual_network.test.name}"
|
||||
address_prefix = "10.0.2.0/24"
|
||||
route_table_id = "${azurerm_route_table.test.id}"
|
||||
}
|
||||
|
||||
resource "azurerm_route_table" "test" {
|
||||
name = "acctestroutetable%d"
|
||||
resource_group_name = "${azurerm_resource_group.test.name}"
|
||||
location = "West US"
|
||||
}
|
||||
|
||||
resource "azurerm_route" "test" {
|
||||
name = "acctestroute%d"
|
||||
resource_group_name = "${azurerm_resource_group.test.name}"
|
||||
route_table_name = "${azurerm_route_table.test.name}"
|
||||
|
||||
address_prefix = "10.100.0.0/14"
|
||||
next_hop_type = "VirtualAppliance"
|
||||
next_hop_in_ip_address = "10.10.1.1"
|
||||
}
|
||||
`
|
||||
|
|
|
@ -104,3 +104,12 @@ func parseNetworkSecurityGroupName(networkSecurityGroupId string) (string, error
|
|||
|
||||
return id.Path["networkSecurityGroups"], nil
|
||||
}
|
||||
|
||||
func parseRouteTableName(routeTableId string) (string, error) {
|
||||
id, err := parseAzureResourceID(routeTableId)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("[ERROR] Unable to parse Route Table ID '%s': %+v", routeTableId, err)
|
||||
}
|
||||
|
||||
return id.Path["routeTables"], nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue