provider/aws: Add the enable_sni attribute for Route53 health checks.
In #8502 it was requested that we add support for the EnableSNI parameter of Route53's health checks; this enables customers to manually specify whether or not the health check will use SNI when communicating with the endpoint. The customer originally requested we default to `false`. While implementing the issue, I discovered that when creating health checks with a Type set to HTTP, Amazon's default value for EnableSNI is `false`. However, when creating health checks with a Type set to HTTPS, Amazon's default value is `true`. So rather than setting a default value, I made the attribute computed.
This commit is contained in:
parent
61a1501731
commit
42049e984f
|
@ -115,6 +115,11 @@ func resourceAwsRoute53HealthCheck() *schema.Resource {
|
||||||
Optional: true,
|
Optional: true,
|
||||||
ForceNew: true,
|
ForceNew: true,
|
||||||
},
|
},
|
||||||
|
"enable_sni": &schema.Schema{
|
||||||
|
Type: schema.TypeBool,
|
||||||
|
Optional: true,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
|
||||||
"tags": tagsSchema(),
|
"tags": tagsSchema(),
|
||||||
},
|
},
|
||||||
|
@ -173,6 +178,10 @@ func resourceAwsRoute53HealthCheckUpdate(d *schema.ResourceData, meta interface{
|
||||||
updateHealthCheck.InsufficientDataHealthStatus = aws.String(d.Get("insufficient_data_health_status").(string))
|
updateHealthCheck.InsufficientDataHealthStatus = aws.String(d.Get("insufficient_data_health_status").(string))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if d.HasChange("enable_sni") {
|
||||||
|
updateHealthCheck.EnableSNI = aws.Bool(d.Get("enable_sni").(bool))
|
||||||
|
}
|
||||||
|
|
||||||
_, err := conn.UpdateHealthCheck(updateHealthCheck)
|
_, err := conn.UpdateHealthCheck(updateHealthCheck)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -230,6 +239,10 @@ func resourceAwsRoute53HealthCheckCreate(d *schema.ResourceData, meta interface{
|
||||||
healthConfig.Inverted = aws.Bool(v.(bool))
|
healthConfig.Inverted = aws.Bool(v.(bool))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if v, ok := d.GetOk("enable_sni"); ok {
|
||||||
|
healthConfig.EnableSNI = aws.Bool(v.(bool))
|
||||||
|
}
|
||||||
|
|
||||||
if *healthConfig.Type == route53.HealthCheckTypeCalculated {
|
if *healthConfig.Type == route53.HealthCheckTypeCalculated {
|
||||||
if v, ok := d.GetOk("child_healthchecks"); ok {
|
if v, ok := d.GetOk("child_healthchecks"); ok {
|
||||||
healthConfig.ChildHealthChecks = expandStringList(v.(*schema.Set).List())
|
healthConfig.ChildHealthChecks = expandStringList(v.(*schema.Set).List())
|
||||||
|
@ -314,6 +327,7 @@ func resourceAwsRoute53HealthCheckRead(d *schema.ResourceData, meta interface{})
|
||||||
d.Set("child_healthchecks", updated.ChildHealthChecks)
|
d.Set("child_healthchecks", updated.ChildHealthChecks)
|
||||||
d.Set("child_health_threshold", updated.HealthThreshold)
|
d.Set("child_health_threshold", updated.HealthThreshold)
|
||||||
d.Set("insufficient_data_health_status", updated.InsufficientDataHealthStatus)
|
d.Set("insufficient_data_health_status", updated.InsufficientDataHealthStatus)
|
||||||
|
d.Set("enable_sni", updated.EnableSNI)
|
||||||
|
|
||||||
if updated.AlarmIdentifier != nil {
|
if updated.AlarmIdentifier != nil {
|
||||||
d.Set("cloudwatch_alarm_name", updated.AlarmIdentifier.Name)
|
d.Set("cloudwatch_alarm_name", updated.AlarmIdentifier.Name)
|
||||||
|
|
|
@ -122,6 +122,41 @@ func TestAccAWSRoute53HealthCheck_CloudWatchAlarmCheck(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAccAWSRoute53HealthCheck_withSNI(t *testing.T) {
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
IDRefreshName: "aws_route53_health_check.foo",
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckRoute53HealthCheckDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccRoute53HealthCheckConfigWithoutSNI,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckRoute53HealthCheckExists("aws_route53_health_check.foo"),
|
||||||
|
resource.TestCheckResourceAttr(
|
||||||
|
"aws_route53_health_check.foo", "enable_sni", "true"),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccRoute53HealthCheckConfigWithSNIDisabled,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckRoute53HealthCheckExists("aws_route53_health_check.foo"),
|
||||||
|
resource.TestCheckResourceAttr(
|
||||||
|
"aws_route53_health_check.foo", "enable_sni", "false"),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccRoute53HealthCheckConfigWithSNI,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckRoute53HealthCheckExists("aws_route53_health_check.foo"),
|
||||||
|
resource.TestCheckResourceAttr(
|
||||||
|
"aws_route53_health_check.foo", "enable_sni", "true"),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func testAccCheckRoute53HealthCheckDestroy(s *terraform.State) error {
|
func testAccCheckRoute53HealthCheckDestroy(s *terraform.State) error {
|
||||||
conn := testAccProvider.Meta().(*AWSClient).r53conn
|
conn := testAccProvider.Meta().(*AWSClient).r53conn
|
||||||
|
|
||||||
|
@ -314,3 +349,56 @@ resource "aws_route53_health_check" "foo" {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
|
const testAccRoute53HealthCheckConfigWithoutSNI = `
|
||||||
|
resource "aws_route53_health_check" "foo" {
|
||||||
|
fqdn = "dev.notexample.com"
|
||||||
|
port = 443
|
||||||
|
type = "HTTPS"
|
||||||
|
resource_path = "/"
|
||||||
|
failure_threshold = "2"
|
||||||
|
request_interval = "30"
|
||||||
|
measure_latency = true
|
||||||
|
invert_healthcheck = true
|
||||||
|
|
||||||
|
tags = {
|
||||||
|
Name = "tf-test-health-check"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
const testAccRoute53HealthCheckConfigWithSNI = `
|
||||||
|
resource "aws_route53_health_check" "foo" {
|
||||||
|
fqdn = "dev.notexample.com"
|
||||||
|
port = 443
|
||||||
|
type = "HTTPS"
|
||||||
|
resource_path = "/"
|
||||||
|
failure_threshold = "2"
|
||||||
|
request_interval = "30"
|
||||||
|
measure_latency = true
|
||||||
|
invert_healthcheck = true
|
||||||
|
enable_sni = true
|
||||||
|
|
||||||
|
tags = {
|
||||||
|
Name = "tf-test-health-check"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
const testAccRoute53HealthCheckConfigWithSNIDisabled = `
|
||||||
|
resource "aws_route53_health_check" "foo" {
|
||||||
|
fqdn = "dev.notexample.com"
|
||||||
|
port = 443
|
||||||
|
type = "HTTPS"
|
||||||
|
resource_path = "/"
|
||||||
|
failure_threshold = "2"
|
||||||
|
request_interval = "30"
|
||||||
|
measure_latency = true
|
||||||
|
invert_healthcheck = true
|
||||||
|
enable_sni = false
|
||||||
|
|
||||||
|
tags = {
|
||||||
|
Name = "tf-test-health-check"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
Loading…
Reference in New Issue