Change ASG Lifecycle Default Result to be computed and added a test to record what the default value is
This commit is contained in:
parent
a6961cad0f
commit
acabd4d407
|
@ -33,6 +33,7 @@ func resourceAwsAutoscalingLifecycleHook() *schema.Resource {
|
||||||
"default_result": &schema.Schema{
|
"default_result": &schema.Schema{
|
||||||
Type: schema.TypeString,
|
Type: schema.TypeString,
|
||||||
Optional: true,
|
Optional: true,
|
||||||
|
Computed: true,
|
||||||
},
|
},
|
||||||
"heartbeat_timeout": &schema.Schema{
|
"heartbeat_timeout": &schema.Schema{
|
||||||
Type: schema.TypeInt,
|
Type: schema.TypeInt,
|
||||||
|
|
|
@ -32,6 +32,25 @@ func TestAccAWSAutoscalingLifecycleHook_basic(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAccAWSAutoscalingLifecycleHook_omitDefaultResult(t *testing.T) {
|
||||||
|
var hook autoscaling.LifecycleHook
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckAWSAutoscalingLifecycleHookDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccAWSAutoscalingLifecycleHookConfig_omitDefaultResult,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckLifecycleHookExists("aws_autoscaling_lifecycle_hook.foobar", &hook),
|
||||||
|
resource.TestCheckResourceAttr("aws_autoscaling_lifecycle_hook.foobar", "default_result", "ABANDON"),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func testAccCheckLifecycleHookExists(n string, hook *autoscaling.LifecycleHook) resource.TestCheckFunc {
|
func testAccCheckLifecycleHookExists(n string, hook *autoscaling.LifecycleHook) resource.TestCheckFunc {
|
||||||
return func(s *terraform.State) error {
|
return func(s *terraform.State) error {
|
||||||
rs, ok := s.RootModule().Resources[n]
|
rs, ok := s.RootModule().Resources[n]
|
||||||
|
@ -165,3 +184,86 @@ EOF
|
||||||
role_arn = "${aws_iam_role.foobar.arn}"
|
role_arn = "${aws_iam_role.foobar.arn}"
|
||||||
}
|
}
|
||||||
`)
|
`)
|
||||||
|
|
||||||
|
var testAccAWSAutoscalingLifecycleHookConfig_omitDefaultResult = fmt.Sprintf(`
|
||||||
|
resource "aws_launch_configuration" "foobar" {
|
||||||
|
name = "terraform-test-foobar5"
|
||||||
|
image_id = "ami-21f78e11"
|
||||||
|
instance_type = "t1.micro"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_sqs_queue" "foobar" {
|
||||||
|
name = "foobar"
|
||||||
|
delay_seconds = 90
|
||||||
|
max_message_size = 2048
|
||||||
|
message_retention_seconds = 86400
|
||||||
|
receive_wait_time_seconds = 10
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_iam_role" "foobar" {
|
||||||
|
name = "foobar"
|
||||||
|
assume_role_policy = <<EOF
|
||||||
|
{
|
||||||
|
"Version" : "2012-10-17",
|
||||||
|
"Statement": [ {
|
||||||
|
"Effect": "Allow",
|
||||||
|
"Principal": {"AWS": "*"},
|
||||||
|
"Action": [ "sts:AssumeRole" ]
|
||||||
|
} ]
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_iam_role_policy" "foobar" {
|
||||||
|
name = "foobar"
|
||||||
|
role = "${aws_iam_role.foobar.id}"
|
||||||
|
policy = <<EOF
|
||||||
|
{
|
||||||
|
"Version" : "2012-10-17",
|
||||||
|
"Statement": [ {
|
||||||
|
"Effect": "Allow",
|
||||||
|
"Action": [
|
||||||
|
"sqs:SendMessage",
|
||||||
|
"sqs:GetQueueUrl",
|
||||||
|
"sns:Publish"
|
||||||
|
],
|
||||||
|
"Resource": [
|
||||||
|
"${aws_sqs_queue.foobar.arn}"
|
||||||
|
]
|
||||||
|
} ]
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
resource "aws_autoscaling_group" "foobar" {
|
||||||
|
availability_zones = ["us-west-2a"]
|
||||||
|
name = "terraform-test-foobar5"
|
||||||
|
max_size = 5
|
||||||
|
min_size = 2
|
||||||
|
health_check_grace_period = 300
|
||||||
|
health_check_type = "ELB"
|
||||||
|
force_delete = true
|
||||||
|
termination_policies = ["OldestInstance"]
|
||||||
|
launch_configuration = "${aws_launch_configuration.foobar.name}"
|
||||||
|
tag {
|
||||||
|
key = "Foo"
|
||||||
|
value = "foo-bar"
|
||||||
|
propagate_at_launch = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_autoscaling_lifecycle_hook" "foobar" {
|
||||||
|
name = "foobar"
|
||||||
|
autoscaling_group_name = "${aws_autoscaling_group.foobar.name}"
|
||||||
|
heartbeat_timeout = 2000
|
||||||
|
lifecycle_transition = "autoscaling:EC2_INSTANCE_LAUNCHING"
|
||||||
|
notification_metadata = <<EOF
|
||||||
|
{
|
||||||
|
"foo": "bar"
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
notification_target_arn = "${aws_sqs_queue.foobar.arn}"
|
||||||
|
role_arn = "${aws_iam_role.foobar.arn}"
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
|
|
@ -47,7 +47,7 @@ The following arguments are supported:
|
||||||
|
|
||||||
* `name` - (Required) The name of the lifecycle hook.
|
* `name` - (Required) The name of the lifecycle hook.
|
||||||
* `autoscaling_group_name` - (Requred) The name of the Auto Scaling group to which you want to assign the lifecycle hook
|
* `autoscaling_group_name` - (Requred) The name of the Auto Scaling group to which you want to assign the lifecycle hook
|
||||||
* `default_result` - (Optional) Defines the action the Auto Scaling group should take when the lifecycle hook timeout elapses or if an unexpected failure occurs.
|
* `default_result` - (Optional) Defines the action the Auto Scaling group should take when the lifecycle hook timeout elapses or if an unexpected failure occurs. The value for this parameter can be either CONTINUE or ABANDON. The default value for this parameter is ABANDON.
|
||||||
* `heartbeat_timeout` - (Optional) Defines the amount of time, in seconds, that can elapse before the lifecycle hook times out. When the lifecycle hook times out, Auto Scaling performs the action defined in the DefaultResult parameter
|
* `heartbeat_timeout` - (Optional) Defines the amount of time, in seconds, that can elapse before the lifecycle hook times out. When the lifecycle hook times out, Auto Scaling performs the action defined in the DefaultResult parameter
|
||||||
* `lifecycle_transition` - (Optional) The instance state to which you want to attach the lifecycle hook. For a list of lifecycle hook types, see [describe-lifecycle-hook-types](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/describe-lifecycle-hook-types.html#examples)
|
* `lifecycle_transition` - (Optional) The instance state to which you want to attach the lifecycle hook. For a list of lifecycle hook types, see [describe-lifecycle-hook-types](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/describe-lifecycle-hook-types.html#examples)
|
||||||
* `notification_metadata` - (Optional) Contains additional information that you want to include any time Auto Scaling sends a message to the notification target.
|
* `notification_metadata` - (Optional) Contains additional information that you want to include any time Auto Scaling sends a message to the notification target.
|
||||||
|
|
Loading…
Reference in New Issue