Cleansup: Restore expandIPPerms, remove flattenIPPerms
This commit is contained in:
parent
a22c23ad42
commit
3977256c17
|
@ -401,8 +401,8 @@ func resourceAwsSecurityGroupUpdateRules(
|
|||
ns := n.(*schema.Set)
|
||||
|
||||
// TODO: re-munge this when test is updated
|
||||
remove := expandIPPermsSDK(d.Id(), os.Difference(ns).List())
|
||||
add := expandIPPermsSDK(d.Id(), ns.Difference(os).List())
|
||||
remove := expandIPPerms(d.Id(), os.Difference(ns).List())
|
||||
add := expandIPPerms(d.Id(), ns.Difference(os).List())
|
||||
|
||||
// TODO: We need to handle partial state better in the in-between
|
||||
// in this update.
|
||||
|
|
|
@ -51,13 +51,11 @@ func TestAccAWSSecurityGroup_self(t *testing.T) {
|
|||
checkSelf := func(s *terraform.State) (err error) {
|
||||
defer func() {
|
||||
if e := recover(); e != nil {
|
||||
log.Printf("\n\nbad here!!")
|
||||
err = fmt.Errorf("bad: %#v", group)
|
||||
}
|
||||
}()
|
||||
|
||||
if *group.IPPermissions[0].UserIDGroupPairs[0].GroupID != *group.GroupID {
|
||||
log.Printf("\n\n---- bad here ----\n")
|
||||
return fmt.Errorf("bad: %#v", group)
|
||||
}
|
||||
|
||||
|
|
|
@ -40,59 +40,7 @@ func expandListeners(configured []interface{}) ([]elb.Listener, error) {
|
|||
|
||||
// Takes the result of flatmap.Expand for an array of ingress/egress
|
||||
// security group rules and returns EC2 API compatible objects
|
||||
func expandIPPerms(id string, configured []interface{}) []ec2.IPPerm {
|
||||
perms := make([]ec2.IPPerm, len(configured))
|
||||
for i, mRaw := range configured {
|
||||
var perm ec2.IPPerm
|
||||
m := mRaw.(map[string]interface{})
|
||||
|
||||
perm.FromPort = m["from_port"].(int)
|
||||
perm.ToPort = m["to_port"].(int)
|
||||
perm.Protocol = m["protocol"].(string)
|
||||
|
||||
var groups []string
|
||||
if raw, ok := m["security_groups"]; ok {
|
||||
list := raw.(*schema.Set).List()
|
||||
for _, v := range list {
|
||||
groups = append(groups, v.(string))
|
||||
}
|
||||
}
|
||||
if v, ok := m["self"]; ok && v.(bool) {
|
||||
groups = append(groups, id)
|
||||
}
|
||||
|
||||
if len(groups) > 0 {
|
||||
perm.SourceGroups = make([]ec2.UserSecurityGroup, len(groups))
|
||||
for i, name := range groups {
|
||||
ownerId, id := "", name
|
||||
if items := strings.Split(id, "/"); len(items) > 1 {
|
||||
ownerId, id = items[0], items[1]
|
||||
}
|
||||
|
||||
perm.SourceGroups[i] = ec2.UserSecurityGroup{
|
||||
Id: id,
|
||||
OwnerId: ownerId,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if raw, ok := m["cidr_blocks"]; ok {
|
||||
list := raw.([]interface{})
|
||||
perm.SourceIPs = make([]string, len(list))
|
||||
for i, v := range list {
|
||||
perm.SourceIPs[i] = v.(string)
|
||||
}
|
||||
}
|
||||
|
||||
perms[i] = perm
|
||||
}
|
||||
|
||||
return perms
|
||||
}
|
||||
|
||||
// Takes the result of flatmap.Expand for an array of ingress/egress
|
||||
// security group rules and returns EC2 API compatible objects
|
||||
func expandIPPermsSDK(id string, configured []interface{}) []awsEC2.IPPermission {
|
||||
func expandIPPerms(id string, configured []interface{}) []awsEC2.IPPermission {
|
||||
perms := make([]awsEC2.IPPermission, len(configured))
|
||||
for i, mRaw := range configured {
|
||||
var perm awsEC2.IPPermission
|
||||
|
@ -164,31 +112,6 @@ func expandParameters(configured []interface{}) ([]rds.Parameter, error) {
|
|||
return parameters, nil
|
||||
}
|
||||
|
||||
// Flattens an array of ipPerms into a list of primitives that
|
||||
// flatmap.Flatten() can handle
|
||||
func flattenIPPerms(list []ec2.IPPerm) []map[string]interface{} {
|
||||
result := make([]map[string]interface{}, 0, len(list))
|
||||
|
||||
for _, perm := range list {
|
||||
n := make(map[string]interface{})
|
||||
n["from_port"] = perm.FromPort
|
||||
n["protocol"] = perm.Protocol
|
||||
n["to_port"] = perm.ToPort
|
||||
|
||||
if len(perm.SourceIPs) > 0 {
|
||||
n["cidr_blocks"] = perm.SourceIPs
|
||||
}
|
||||
|
||||
if v := flattenSecurityGroups(perm.SourceGroups); len(v) > 0 {
|
||||
n["security_groups"] = v
|
||||
}
|
||||
|
||||
result = append(result, n)
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
// Flattens a health check into something that flatmap.Flatten()
|
||||
// can handle
|
||||
func flattenHealthCheck(check *elb.HealthCheck) []map[string]interface{} {
|
||||
|
|
|
@ -1,16 +1,17 @@
|
|||
package aws
|
||||
|
||||
import (
|
||||
"log"
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/hashicorp/aws-sdk-go/aws"
|
||||
awsEC2 "github.com/hashicorp/aws-sdk-go/gen/ec2"
|
||||
"github.com/hashicorp/aws-sdk-go/gen/elb"
|
||||
"github.com/hashicorp/aws-sdk-go/gen/rds"
|
||||
"github.com/hashicorp/terraform/flatmap"
|
||||
"github.com/hashicorp/terraform/helper/hashcode"
|
||||
"github.com/hashicorp/terraform/helper/schema"
|
||||
"github.com/mitchellh/goamz/ec2"
|
||||
)
|
||||
|
||||
// Returns test configuration
|
||||
|
@ -61,120 +62,60 @@ func TestExpandIPPerms(t *testing.T) {
|
|||
}
|
||||
perms := expandIPPerms("foo", expanded)
|
||||
|
||||
expected := []ec2.IPPerm{
|
||||
ec2.IPPerm{
|
||||
Protocol: "icmp",
|
||||
FromPort: 1,
|
||||
ToPort: -1,
|
||||
SourceIPs: []string{"0.0.0.0/0"},
|
||||
SourceGroups: []ec2.UserSecurityGroup{
|
||||
ec2.UserSecurityGroup{
|
||||
OwnerId: "foo",
|
||||
Id: "sg-22222",
|
||||
log.Printf("wtf is perms:\n%#v", perms)
|
||||
|
||||
expected := []awsEC2.IPPermission{
|
||||
awsEC2.IPPermission{
|
||||
IPProtocol: aws.String("icmp"),
|
||||
FromPort: aws.Integer(1),
|
||||
ToPort: aws.Integer(-1),
|
||||
IPRanges: []awsEC2.IPRange{awsEC2.IPRange{aws.String("0.0.0.0/0")}},
|
||||
UserIDGroupPairs: []awsEC2.UserIDGroupPair{
|
||||
awsEC2.UserIDGroupPair{
|
||||
UserID: aws.String("foo"),
|
||||
GroupID: aws.String("sg-22222"),
|
||||
},
|
||||
ec2.UserSecurityGroup{
|
||||
Id: "sg-11111",
|
||||
awsEC2.UserIDGroupPair{
|
||||
GroupID: aws.String("sg-22222"),
|
||||
},
|
||||
},
|
||||
},
|
||||
ec2.IPPerm{
|
||||
Protocol: "icmp",
|
||||
FromPort: 1,
|
||||
ToPort: -1,
|
||||
SourceGroups: []ec2.UserSecurityGroup{
|
||||
ec2.UserSecurityGroup{
|
||||
Id: "foo",
|
||||
awsEC2.IPPermission{
|
||||
IPProtocol: aws.String("icmp"),
|
||||
FromPort: aws.Integer(1),
|
||||
ToPort: aws.Integer(-1),
|
||||
UserIDGroupPairs: []awsEC2.UserIDGroupPair{
|
||||
awsEC2.UserIDGroupPair{
|
||||
UserID: aws.String("foo"),
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(perms, expected) {
|
||||
exp := expected[0]
|
||||
perm := perms[0]
|
||||
|
||||
if *exp.FromPort != *perm.FromPort {
|
||||
t.Fatalf(
|
||||
"Got:\n\n%#v\n\nExpected:\n\n%#v\n",
|
||||
perms[0],
|
||||
expected)
|
||||
*perm.FromPort,
|
||||
*exp.FromPort)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestFlattenIPPerms(t *testing.T) {
|
||||
cases := []struct {
|
||||
Input []ec2.IPPerm
|
||||
Output []map[string]interface{}
|
||||
}{
|
||||
{
|
||||
Input: []ec2.IPPerm{
|
||||
ec2.IPPerm{
|
||||
Protocol: "icmp",
|
||||
FromPort: 1,
|
||||
ToPort: -1,
|
||||
SourceIPs: []string{"0.0.0.0/0"},
|
||||
SourceGroups: []ec2.UserSecurityGroup{
|
||||
ec2.UserSecurityGroup{
|
||||
Id: "sg-11111",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
Output: []map[string]interface{}{
|
||||
map[string]interface{}{
|
||||
"protocol": "icmp",
|
||||
"from_port": 1,
|
||||
"to_port": -1,
|
||||
"cidr_blocks": []string{"0.0.0.0/0"},
|
||||
"security_groups": []string{"sg-11111"},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
Input: []ec2.IPPerm{
|
||||
ec2.IPPerm{
|
||||
Protocol: "icmp",
|
||||
FromPort: 1,
|
||||
ToPort: -1,
|
||||
SourceIPs: []string{"0.0.0.0/0"},
|
||||
SourceGroups: nil,
|
||||
},
|
||||
},
|
||||
|
||||
Output: []map[string]interface{}{
|
||||
map[string]interface{}{
|
||||
"protocol": "icmp",
|
||||
"from_port": 1,
|
||||
"to_port": -1,
|
||||
"cidr_blocks": []string{"0.0.0.0/0"},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Input: []ec2.IPPerm{
|
||||
ec2.IPPerm{
|
||||
Protocol: "icmp",
|
||||
FromPort: 1,
|
||||
ToPort: -1,
|
||||
SourceIPs: nil,
|
||||
},
|
||||
},
|
||||
|
||||
Output: []map[string]interface{}{
|
||||
map[string]interface{}{
|
||||
"protocol": "icmp",
|
||||
"from_port": 1,
|
||||
"to_port": -1,
|
||||
},
|
||||
},
|
||||
},
|
||||
if *exp.IPRanges[0].CIDRIP != *perm.IPRanges[0].CIDRIP {
|
||||
t.Fatalf(
|
||||
"Got:\n\n%#v\n\nExpected:\n\n%#v\n",
|
||||
*perm.IPRanges[0].CIDRIP,
|
||||
*exp.IPRanges[0].CIDRIP)
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
||||
output := flattenIPPerms(tc.Input)
|
||||
if !reflect.DeepEqual(output, tc.Output) {
|
||||
t.Fatalf("Input:\n\n%#v\n\nOutput:\n\n%#v", tc.Input, output)
|
||||
}
|
||||
if *exp.UserIDGroupPairs[0].UserID != *perm.UserIDGroupPairs[0].UserID {
|
||||
t.Fatalf(
|
||||
"Got:\n\n%#v\n\nExpected:\n\n%#v\n",
|
||||
*perm.UserIDGroupPairs[0].UserID,
|
||||
*exp.UserIDGroupPairs[0].UserID)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestExpandListeners(t *testing.T) {
|
||||
|
|
Loading…
Reference in New Issue