From f81dfbcf8bc70cb68863091675ad5a8db03111a5 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 15 May 2017 19:21:28 -0400 Subject: [PATCH] Create rule(s) for prefix-list-only AWS security group ingress/egress permissions on 'terraform import'. --- .../aws/import_aws_security_group.go | 16 +++++++++++ .../aws/import_aws_security_group_test.go | 28 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/builtin/providers/aws/import_aws_security_group.go b/builtin/providers/aws/import_aws_security_group.go index d76529058..d1a6341f0 100644 --- a/builtin/providers/aws/import_aws_security_group.go +++ b/builtin/providers/aws/import_aws_security_group.go @@ -118,6 +118,22 @@ func resourceAwsSecurityGroupImportStatePerm(sg *ec2.SecurityGroup, ruleType str result = append(result, r) } } + + if len(result) == 0 && len(perm.PrefixListIds) > 0 { + p := &ec2.IpPermission{ + FromPort: perm.FromPort, + IpProtocol: perm.IpProtocol, + PrefixListIds: perm.PrefixListIds, + ToPort: perm.ToPort, + } + + r, err := resourceAwsSecurityGroupImportStatePermPair(sg, ruleType, p) + if err != nil { + return nil, err + } + result = append(result, r) + } + return result, nil } diff --git a/builtin/providers/aws/import_aws_security_group_test.go b/builtin/providers/aws/import_aws_security_group_test.go index d91b1027a..a57313ae5 100644 --- a/builtin/providers/aws/import_aws_security_group_test.go +++ b/builtin/providers/aws/import_aws_security_group_test.go @@ -157,3 +157,31 @@ func TestAccAWSSecurityGroup_importIPRangesWithSameRules(t *testing.T) { }, }) } + +func TestAccAWSSecurityGroup_importPrefixList(t *testing.T) { + checkFn := func(s []*terraform.InstanceState) error { + // Expect 2: group, 1 rule + if len(s) != 2 { + return fmt.Errorf("expected 2 states: %#v", s) + } + + return nil + } + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckAWSSecurityGroupDestroy, + Steps: []resource.TestStep{ + { + Config: testAccAWSSecurityGroupConfigPrefixListEgress, + }, + + { + ResourceName: "aws_security_group.egress", + ImportState: true, + ImportStateCheck: checkFn, + }, + }, + }) +}