provider/aws: Change of alb_listener_rule listener_arn forces new resource
Fixes: #13006 ``` % make testacc TEST=./builtin/providers/aws TESTARGS='-run=TestAccAWSALBListenerRule_' ==> Checking that code complies with gofmt requirements... go generate $(go list ./... | grep -v /terraform/vendor/) 2017/03/28 18:16:04 Generated command/internal_plugin_list.go TF_ACC=1 go test ./builtin/providers/aws -v -run=TestAccAWSALBListenerRule_ -timeout 120m === RUN TestAccAWSALBListenerRule_basic --- PASS: TestAccAWSALBListenerRule_basic (303.34s) === RUN TestAccAWSALBListenerRule_updateRulePriority --- PASS: TestAccAWSALBListenerRule_updateRulePriority (319.42s) === RUN TestAccAWSALBListenerRule_changeListenerRuleArnForcesNew --- PASS: TestAccAWSALBListenerRule_changeListenerRuleArnForcesNew (281.93s) === RUN TestAccAWSALBListenerRule_multipleConditionThrowsError --- PASS: TestAccAWSALBListenerRule_multipleConditionThrowsError (0.01s) PASS ok github.com/hashicorp/terraform/builtin/providers/aws 904.724s ```
This commit is contained in:
parent
d588fdd9ba
commit
6ab1b8ad83
|
@ -31,6 +31,7 @@ func resourceAwsAlbListenerRule() *schema.Resource {
|
|||
"listener_arn": {
|
||||
Type: schema.TypeString,
|
||||
Required: true,
|
||||
ForceNew: true,
|
||||
},
|
||||
"priority": {
|
||||
Type: schema.TypeInt,
|
||||
|
|
|
@ -73,6 +73,34 @@ func TestAccAWSALBListenerRule_updateRulePriority(t *testing.T) {
|
|||
})
|
||||
}
|
||||
|
||||
func TestAccAWSALBListenerRule_changeListenerRuleArnForcesNew(t *testing.T) {
|
||||
var before, after elbv2.Rule
|
||||
albName := fmt.Sprintf("testrule-basic-%s", acctest.RandStringFromCharSet(13, acctest.CharSetAlphaNum))
|
||||
targetGroupName := fmt.Sprintf("testtargetgroup-%s", acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum))
|
||||
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
IDRefreshName: "aws_alb_listener_rule.static",
|
||||
Providers: testAccProviders,
|
||||
CheckDestroy: testAccCheckAWSALBListenerRuleDestroy,
|
||||
Steps: []resource.TestStep{
|
||||
{
|
||||
Config: testAccAWSALBListenerRuleConfig_basic(albName, targetGroupName),
|
||||
Check: resource.ComposeTestCheckFunc(
|
||||
testAccCheckAWSALBListenerRuleExists("aws_alb_listener_rule.static", &before),
|
||||
),
|
||||
},
|
||||
{
|
||||
Config: testAccAWSALBListenerRuleConfig_changeRuleArn(albName, targetGroupName),
|
||||
Check: resource.ComposeTestCheckFunc(
|
||||
testAccCheckAWSALBListenerRuleExists("aws_alb_listener_rule.static", &after),
|
||||
testAccCheckAWSAlbListenerRuleRecreated(t, &before, &after),
|
||||
),
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func TestAccAWSALBListenerRule_multipleConditionThrowsError(t *testing.T) {
|
||||
albName := fmt.Sprintf("testrule-basic-%s", acctest.RandStringFromCharSet(13, acctest.CharSetAlphaNum))
|
||||
targetGroupName := fmt.Sprintf("testtargetgroup-%s", acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum))
|
||||
|
@ -90,6 +118,16 @@ func TestAccAWSALBListenerRule_multipleConditionThrowsError(t *testing.T) {
|
|||
})
|
||||
}
|
||||
|
||||
func testAccCheckAWSAlbListenerRuleRecreated(t *testing.T,
|
||||
before, after *elbv2.Rule) resource.TestCheckFunc {
|
||||
return func(s *terraform.State) error {
|
||||
if *before.RuleArn == *after.RuleArn {
|
||||
t.Fatalf("Expected change of Listener Rule ARNs, but both were %v", before.RuleArn)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func testAccCheckAWSALBListenerRuleExists(n string, res *elbv2.Rule) resource.TestCheckFunc {
|
||||
return func(s *terraform.State) error {
|
||||
rs, ok := s.RootModule().Resources[n]
|
||||
|
@ -484,3 +522,126 @@ resource "aws_security_group" "alb_test" {
|
|||
}
|
||||
}`, albName, targetGroupName)
|
||||
}
|
||||
|
||||
func testAccAWSALBListenerRuleConfig_changeRuleArn(albName, targetGroupName string) string {
|
||||
return fmt.Sprintf(`
|
||||
resource "aws_alb_listener_rule" "static" {
|
||||
listener_arn = "${aws_alb_listener.front_end_ruleupdate.arn}"
|
||||
priority = 101
|
||||
|
||||
action {
|
||||
type = "forward"
|
||||
target_group_arn = "${aws_alb_target_group.test.arn}"
|
||||
}
|
||||
|
||||
condition {
|
||||
field = "path-pattern"
|
||||
values = ["/static/*"]
|
||||
}
|
||||
}
|
||||
|
||||
resource "aws_alb_listener" "front_end" {
|
||||
load_balancer_arn = "${aws_alb.alb_test.id}"
|
||||
protocol = "HTTP"
|
||||
port = "80"
|
||||
|
||||
default_action {
|
||||
target_group_arn = "${aws_alb_target_group.test.id}"
|
||||
type = "forward"
|
||||
}
|
||||
}
|
||||
|
||||
resource "aws_alb_listener" "front_end_ruleupdate" {
|
||||
load_balancer_arn = "${aws_alb.alb_test.id}"
|
||||
protocol = "HTTP"
|
||||
port = "8080"
|
||||
|
||||
default_action {
|
||||
target_group_arn = "${aws_alb_target_group.test.id}"
|
||||
type = "forward"
|
||||
}
|
||||
}
|
||||
|
||||
resource "aws_alb" "alb_test" {
|
||||
name = "%s"
|
||||
internal = true
|
||||
security_groups = ["${aws_security_group.alb_test.id}"]
|
||||
subnets = ["${aws_subnet.alb_test.*.id}"]
|
||||
|
||||
idle_timeout = 30
|
||||
enable_deletion_protection = false
|
||||
|
||||
tags {
|
||||
TestName = "TestAccAWSALB_basic"
|
||||
}
|
||||
}
|
||||
|
||||
resource "aws_alb_target_group" "test" {
|
||||
name = "%s"
|
||||
port = 8080
|
||||
protocol = "HTTP"
|
||||
vpc_id = "${aws_vpc.alb_test.id}"
|
||||
|
||||
health_check {
|
||||
path = "/health"
|
||||
interval = 60
|
||||
port = 8081
|
||||
protocol = "HTTP"
|
||||
timeout = 3
|
||||
healthy_threshold = 3
|
||||
unhealthy_threshold = 3
|
||||
matcher = "200-299"
|
||||
}
|
||||
}
|
||||
|
||||
variable "subnets" {
|
||||
default = ["10.0.1.0/24", "10.0.2.0/24"]
|
||||
type = "list"
|
||||
}
|
||||
|
||||
data "aws_availability_zones" "available" {}
|
||||
|
||||
resource "aws_vpc" "alb_test" {
|
||||
cidr_block = "10.0.0.0/16"
|
||||
|
||||
tags {
|
||||
TestName = "TestAccAWSALB_basic"
|
||||
}
|
||||
}
|
||||
|
||||
resource "aws_subnet" "alb_test" {
|
||||
count = 2
|
||||
vpc_id = "${aws_vpc.alb_test.id}"
|
||||
cidr_block = "${element(var.subnets, count.index)}"
|
||||
map_public_ip_on_launch = true
|
||||
availability_zone = "${element(data.aws_availability_zones.available.names, count.index)}"
|
||||
|
||||
tags {
|
||||
TestName = "TestAccAWSALB_basic"
|
||||
}
|
||||
}
|
||||
|
||||
resource "aws_security_group" "alb_test" {
|
||||
name = "allow_all_alb_test"
|
||||
description = "Used for ALB Testing"
|
||||
vpc_id = "${aws_vpc.alb_test.id}"
|
||||
|
||||
ingress {
|
||||
from_port = 0
|
||||
to_port = 0
|
||||
protocol = "-1"
|
||||
cidr_blocks = ["0.0.0.0/0"]
|
||||
}
|
||||
|
||||
egress {
|
||||
from_port = 0
|
||||
to_port = 0
|
||||
protocol = "-1"
|
||||
cidr_blocks = ["0.0.0.0/0"]
|
||||
}
|
||||
|
||||
tags {
|
||||
TestName = "TestAccAWSALB_basic"
|
||||
}
|
||||
}`, albName, targetGroupName)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue