provider/aws: fix aws_security_group_rule refresh (#6730)

When two rules differ only in source security group, EC2 APIs return
them as a single rule, but Terraform requires separate
aws_security_group_rule resources.

6bdab07174 changed Read to set source_security_group_id (and
cidr_blocks) from the rule returned from EC2 and chose the first
source_security_group_id arbitrarily, which is wrong.

Makes TestAccAWSSecurityGroupRule_PartialMatching_Source pass again.

Also adds a comment noting that there is a bug in the new resource
importing feature.

Fixes #6728.
This commit is contained in:
David Glasser 2016-05-25 09:59:41 -06:00 committed by Clint
parent f891ab81f4
commit b3425447e5
2 changed files with 4 additions and 1 deletions

View File

@ -49,6 +49,9 @@ func resourceAwsSecurityGroupImportState(
d.SetType("aws_security_group_rule")
d.Set("security_group_id", sgId)
d.Set("type", ruleType)
// XXX If the rule contained more than one source security group, this
// will choose one of them. We actually need to create one rule for each
// source security group.
setFromIPPerm(d, sg, perm)
results = append(results, d)
}

View File

@ -240,7 +240,7 @@ func resourceAwsSecurityGroupRuleRead(d *schema.ResourceData, meta interface{})
log.Printf("[DEBUG] Found rule for Security Group Rule (%s): %s", d.Id(), rule)
d.Set("type", ruleType)
setFromIPPerm(d, sg, rule)
setFromIPPerm(d, sg, p)
return nil
}