mirror of
https://github.com/opentofu/opentofu.git
synced 2025-02-25 18:45:20 -06:00
provider/aws: Fix source_dest_check with network_interface
The default value for `source_dest_check` needs to remain the same, so as not to break any backwards compatibility, however, adding a new `network_interface` parameter with a pre-configured network_interface that has `source_dest_check` set to false throws a diff after initial apply. Since we don't want to change `source_dest_check` to computed in order to not break sane defaults, ignore the diff thrown if `network_interface` attributes are configured on an instance. ``` $ make testacc TEST=./builtin/providers/aws TESTARGS="-run=TestAccAWSInstance_primaryNetworkInterfaceSourceDestCheck" ==> Checking that code complies with gofmt requirements... go generate $(go list ./... | grep -v /terraform/vendor/) 2017/04/28 16:26:02 Generated command/internal_plugin_list.go TF_ACC=1 go test ./builtin/providers/aws -v -run=TestAccAWSInstance_primaryNetworkInterfaceSourceDestCheck -timeout 120m === RUN TestAccAWSInstance_primaryNetworkInterfaceSourceDestCheck --- PASS: TestAccAWSInstance_primaryNetworkInterfaceSourceDestCheck (134.20s) PASS ok github.com/hashicorp/terraform/builtin/providers/aws 134.211s ``` ``` $ make testacc TEST=./builtin/providers/aws TESTARGS="-run=TestAccAWSInstance_sourceDestCheck" ==> Checking that code complies with gofmt requirements... go generate $(go list ./... | grep -v /terraform/vendor/) 2017/04/28 16:15:14 Generated command/internal_plugin_list.go TF_ACC=1 go test ./builtin/providers/aws -v -run=TestAccAWSInstance_sourceDestCheck -timeout 120m === RUN TestAccAWSInstance_sourceDestCheck --- PASS: TestAccAWSInstance_sourceDestCheck (179.81s) PASS ok github.com/hashicorp/terraform/builtin/providers/aws 179.815s ``` Fixes: #14068
This commit is contained in:
parent
362ad5d7fa
commit
d3c1f4b48d
@ -90,6 +90,11 @@ func resourceAwsInstance() *schema.Resource {
|
|||||||
Type: schema.TypeBool,
|
Type: schema.TypeBool,
|
||||||
Optional: true,
|
Optional: true,
|
||||||
Default: true,
|
Default: true,
|
||||||
|
DiffSuppressFunc: func(k, old, new string, d *schema.ResourceData) bool {
|
||||||
|
// Suppress diff if network_interface is set
|
||||||
|
_, ok := d.GetOk("network_interface")
|
||||||
|
return ok
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
"user_data": {
|
"user_data": {
|
||||||
@ -642,6 +647,7 @@ func resourceAwsInstanceRead(d *schema.ResourceData, meta interface{}) error {
|
|||||||
d.Set("primary_network_interface_id", primaryNetworkInterface.NetworkInterfaceId)
|
d.Set("primary_network_interface_id", primaryNetworkInterface.NetworkInterfaceId)
|
||||||
d.Set("associate_public_ip_address", primaryNetworkInterface.Association != nil)
|
d.Set("associate_public_ip_address", primaryNetworkInterface.Association != nil)
|
||||||
d.Set("ipv6_address_count", len(primaryNetworkInterface.Ipv6Addresses))
|
d.Set("ipv6_address_count", len(primaryNetworkInterface.Ipv6Addresses))
|
||||||
|
d.Set("source_dest_check", *primaryNetworkInterface.SourceDestCheck)
|
||||||
|
|
||||||
for _, address := range primaryNetworkInterface.Ipv6Addresses {
|
for _, address := range primaryNetworkInterface.Ipv6Addresses {
|
||||||
ipv6Addresses = append(ipv6Addresses, *address.Ipv6Address)
|
ipv6Addresses = append(ipv6Addresses, *address.Ipv6Address)
|
||||||
|
@ -966,6 +966,27 @@ func TestAccAWSInstance_primaryNetworkInterface(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAccAWSInstance_primaryNetworkInterfaceSourceDestCheck(t *testing.T) {
|
||||||
|
var instance ec2.Instance
|
||||||
|
var ini ec2.NetworkInterface
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckInstanceDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
{
|
||||||
|
Config: testAccInstanceConfigPrimaryNetworkInterfaceSourceDestCheck,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckInstanceExists("aws_instance.foo", &instance),
|
||||||
|
testAccCheckAWSENIExists("aws_network_interface.bar", &ini),
|
||||||
|
resource.TestCheckResourceAttr("aws_instance.foo", "source_dest_check", "false"),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func TestAccAWSInstance_addSecondaryInterface(t *testing.T) {
|
func TestAccAWSInstance_addSecondaryInterface(t *testing.T) {
|
||||||
var before ec2.Instance
|
var before ec2.Instance
|
||||||
var after ec2.Instance
|
var after ec2.Instance
|
||||||
@ -1866,6 +1887,42 @@ resource "aws_instance" "foo" {
|
|||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
|
const testAccInstanceConfigPrimaryNetworkInterfaceSourceDestCheck = `
|
||||||
|
resource "aws_vpc" "foo" {
|
||||||
|
cidr_block = "172.16.0.0/16"
|
||||||
|
tags {
|
||||||
|
Name = "tf-instance-test"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_subnet" "foo" {
|
||||||
|
vpc_id = "${aws_vpc.foo.id}"
|
||||||
|
cidr_block = "172.16.10.0/24"
|
||||||
|
availability_zone = "us-west-2a"
|
||||||
|
tags {
|
||||||
|
Name = "tf-instance-test"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_network_interface" "bar" {
|
||||||
|
subnet_id = "${aws_subnet.foo.id}"
|
||||||
|
private_ips = ["172.16.10.100"]
|
||||||
|
source_dest_check = false
|
||||||
|
tags {
|
||||||
|
Name = "primary_network_interface"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_instance" "foo" {
|
||||||
|
ami = "ami-22b9a343"
|
||||||
|
instance_type = "t2.micro"
|
||||||
|
network_interface {
|
||||||
|
network_interface_id = "${aws_network_interface.bar.id}"
|
||||||
|
device_index = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
const testAccInstanceConfigAddSecondaryNetworkInterfaceBefore = `
|
const testAccInstanceConfigAddSecondaryNetworkInterfaceBefore = `
|
||||||
resource "aws_vpc" "foo" {
|
resource "aws_vpc" "foo" {
|
||||||
cidr_block = "172.16.0.0/16"
|
cidr_block = "172.16.0.0/16"
|
||||||
|
Loading…
Reference in New Issue
Block a user