aws: Make EFS MT creation fail for 2+ targets per AZ (#8205)
This commit is contained in:
parent
e6d1e77a9a
commit
7433be5b4c
|
@ -67,9 +67,24 @@ func resourceAwsEfsMountTarget() *schema.Resource {
|
||||||
func resourceAwsEfsMountTargetCreate(d *schema.ResourceData, meta interface{}) error {
|
func resourceAwsEfsMountTargetCreate(d *schema.ResourceData, meta interface{}) error {
|
||||||
conn := meta.(*AWSClient).efsconn
|
conn := meta.(*AWSClient).efsconn
|
||||||
|
|
||||||
|
fsId := d.Get("file_system_id").(string)
|
||||||
|
subnetId := d.Get("subnet_id").(string)
|
||||||
|
|
||||||
|
// CreateMountTarget would return the same Mount Target ID
|
||||||
|
// to parallel requests if they both include the same AZ
|
||||||
|
// and we would end up managing the same MT as 2 resources.
|
||||||
|
// So we make it fail by calling 1 request per AZ at a time.
|
||||||
|
az, err := getAzFromSubnetId(subnetId, meta.(*AWSClient).ec2conn)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("Failed getting AZ from subnet ID (%s): %s", subnetId, err)
|
||||||
|
}
|
||||||
|
mtKey := "efs-mt-" + fsId + "-" + az
|
||||||
|
awsMutexKV.Lock(mtKey)
|
||||||
|
defer awsMutexKV.Unlock(mtKey)
|
||||||
|
|
||||||
input := efs.CreateMountTargetInput{
|
input := efs.CreateMountTargetInput{
|
||||||
FileSystemId: aws.String(d.Get("file_system_id").(string)),
|
FileSystemId: aws.String(fsId),
|
||||||
SubnetId: aws.String(d.Get("subnet_id").(string)),
|
SubnetId: aws.String(subnetId),
|
||||||
}
|
}
|
||||||
|
|
||||||
if v, ok := d.GetOk("ip_address"); ok {
|
if v, ok := d.GetOk("ip_address"); ok {
|
||||||
|
|
Loading…
Reference in New Issue