Skip to content

Commit

Permalink
Removing version guards for fields going GA (#10613)
Browse files Browse the repository at this point in the history
[upstream:6a4797785c1fca97572795018e6102801f995d6b]

Signed-off-by: Modular Magician <magic-modules@google.com>
  • Loading branch information
modular-magician committed May 8, 2024
1 parent 82e00b5 commit b39972a
Show file tree
Hide file tree
Showing 9 changed files with 528 additions and 5 deletions.
27 changes: 27 additions & 0 deletions google/services/compute/resource_compute_router.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,16 @@ CIDR-formatted string.`,
},
},
},
"identifier_range": {
Type: schema.TypeString,
Computed: true,
Optional: true,
Description: `Explicitly specifies a range of valid BGP Identifiers for this Router.
It is provided as a link-local IPv4 range (from 169.254.0.0/16), of
size at least /30, even if the BGP sessions are over IPv6. It must
not overlap with any IPv4 BGP session ranges. Other vendors commonly
call this router ID.`,
},
"keepalive_interval": {
Type: schema.TypeInt,
Optional: true,
Expand Down Expand Up @@ -589,6 +599,8 @@ func flattenComputeRouterBgp(v interface{}, d *schema.ResourceData, config *tran
flattenComputeRouterBgpAdvertisedIpRanges(original["advertisedIpRanges"], d, config)
transformed["keepalive_interval"] =
flattenComputeRouterBgpKeepaliveInterval(original["keepaliveInterval"], d, config)
transformed["identifier_range"] =
flattenComputeRouterBgpIdentifierRange(original["identifierRange"], d, config)
return []interface{}{transformed}
}
func flattenComputeRouterBgpAsn(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
Expand Down Expand Up @@ -660,6 +672,10 @@ func flattenComputeRouterBgpKeepaliveInterval(v interface{}, d *schema.ResourceD
return v // let terraform core handle it otherwise
}

func flattenComputeRouterBgpIdentifierRange(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}

func flattenComputeRouterEncryptedInterconnectRouter(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}
Expand Down Expand Up @@ -731,6 +747,13 @@ func expandComputeRouterBgp(v interface{}, d tpgresource.TerraformResourceData,
transformed["keepaliveInterval"] = transformedKeepaliveInterval
}

transformedIdentifierRange, err := expandComputeRouterBgpIdentifierRange(original["identifier_range"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedIdentifierRange); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["identifierRange"] = transformedIdentifierRange
}

return transformed, nil
}

Expand Down Expand Up @@ -787,6 +810,10 @@ func expandComputeRouterBgpKeepaliveInterval(v interface{}, d tpgresource.Terraf
return v, nil
}

func expandComputeRouterBgpIdentifierRange(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}

func expandComputeRouterEncryptedInterconnectRouter(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
Expand Down
198 changes: 198 additions & 0 deletions google/services/compute/resource_compute_router_bgp_peer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,48 @@ func TestAccComputeRouterPeer_Ipv6Basic(t *testing.T) {
})
}

func TestAccComputeRouterPeer_Ipv4BasicCreateUpdate(t *testing.T) {
t.Parallel()

routerName := fmt.Sprintf("tf-test-router-%s", acctest.RandString(t, 10))
resourceName := "google_compute_router_peer.foobar"
acctest.VcrTest(t, resource.TestCase{
PreCheck: func() { acctest.AccTestPreCheck(t) },
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
CheckDestroy: testAccCheckComputeRouterPeerDestroyProducer(t),
Steps: []resource.TestStep{
{
Config: testAccComputeRouterPeerIpv4(routerName),
Check: resource.ComposeTestCheckFunc(
testAccCheckComputeRouterPeerExists(
t, resourceName),
resource.TestCheckResourceAttr(resourceName, "enable_ipv4", "true"),
),
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
},
{
Config: testAccComputeRouterPeerUpdateIpv4Address(routerName),
Check: resource.ComposeTestCheckFunc(
testAccCheckComputeRouterPeerExists(
t, resourceName),
resource.TestCheckResourceAttr(resourceName, "enable_ipv4", "true"),
resource.TestCheckResourceAttr(resourceName, "ipv4_nexthop_address", "169.254.1.2"),
resource.TestCheckResourceAttr(resourceName, "peer_ipv4_nexthop_address", "169.254.1.1"),
),
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
},
},
})
}

func TestAccComputeRouterPeer_UpdateIpv6Address(t *testing.T) {
t.Parallel()

Expand Down Expand Up @@ -1503,3 +1545,159 @@ resource "google_compute_router_peer" "foobar" {
}
`, routerName, routerName, routerName, routerName, routerName, routerName, routerName, routerName, enableIpv6)
}

func testAccComputeRouterPeerIpv4(routerName string) string {
return fmt.Sprintf(`resource "google_compute_network" "foobar" {
name = "%s-net"
auto_create_subnetworks = false
}
resource "google_compute_subnetwork" "foobar" {
name = "%s-subnet"
network = google_compute_network.foobar.self_link
ip_cidr_range = "10.0.0.0/16"
region = "us-central1"
stack_type = "IPV4_IPV6"
ipv6_access_type = "EXTERNAL"
}
resource "google_compute_ha_vpn_gateway" "foobar" {
name = "%s-gateway"
network = google_compute_network.foobar.self_link
region = google_compute_subnetwork.foobar.region
stack_type = "IPV4_IPV6"
}
resource "google_compute_external_vpn_gateway" "external_gateway" {
name = "%s-external-gateway"
redundancy_type = "SINGLE_IP_INTERNALLY_REDUNDANT"
description = "An externally managed VPN gateway"
interface {
id = 0
ip_address = "8.8.8.8"
}
}
resource "google_compute_router" "foobar" {
name = "%s"
region = google_compute_subnetwork.foobar.region
network = google_compute_network.foobar.self_link
bgp {
asn = 64514
}
}
resource "google_compute_vpn_tunnel" "foobar" {
name = "%s-tunnel"
region = google_compute_subnetwork.foobar.region
vpn_gateway = google_compute_ha_vpn_gateway.foobar.id
peer_external_gateway = google_compute_external_vpn_gateway.external_gateway.id
peer_external_gateway_interface = 0
shared_secret = "unguessable"
router = google_compute_router.foobar.name
vpn_gateway_interface = 0
}
resource "google_compute_router_interface" "foobar" {
name = "%s-interface"
router = google_compute_router.foobar.name
region = google_compute_router.foobar.region
vpn_tunnel = google_compute_vpn_tunnel.foobar.name
ip_range = "fdff:1::1:1/126"
}
resource "google_compute_router_peer" "foobar" {
name = "%s-peer"
router = google_compute_router.foobar.name
region = google_compute_router.foobar.region
peer_asn = 65515
advertised_route_priority = 100
interface = google_compute_router_interface.foobar.name
ip_address = "fdff:1::1:1"
peer_ip_address = "fdff:1::1:2"
enable_ipv4 = true
enable_ipv6 = true
ipv4_nexthop_address = "169.254.1.1"
peer_ipv4_nexthop_address = "169.254.1.2"
}
`, routerName, routerName, routerName, routerName, routerName, routerName, routerName, routerName)
}

func testAccComputeRouterPeerUpdateIpv4Address(routerName string) string {
return fmt.Sprintf(`resource "google_compute_network" "foobar" {
name = "%s-net"
auto_create_subnetworks = false
}
resource "google_compute_subnetwork" "foobar" {
name = "%s-subnet"
network = google_compute_network.foobar.self_link
ip_cidr_range = "10.0.0.0/16"
region = "us-central1"
stack_type = "IPV4_IPV6"
ipv6_access_type = "EXTERNAL"
}
resource "google_compute_ha_vpn_gateway" "foobar" {
name = "%s-gateway"
network = google_compute_network.foobar.self_link
region = google_compute_subnetwork.foobar.region
stack_type = "IPV4_IPV6"
}
resource "google_compute_external_vpn_gateway" "external_gateway" {
name = "%s-external-gateway"
redundancy_type = "SINGLE_IP_INTERNALLY_REDUNDANT"
description = "An externally managed VPN gateway"
interface {
id = 0
ip_address = "8.8.8.8"
}
}
resource "google_compute_router" "foobar" {
name = "%s"
region = google_compute_subnetwork.foobar.region
network = google_compute_network.foobar.self_link
bgp {
asn = 64514
}
}
resource "google_compute_vpn_tunnel" "foobar" {
name = "%s-tunnel"
region = google_compute_subnetwork.foobar.region
vpn_gateway = google_compute_ha_vpn_gateway.foobar.id
peer_external_gateway = google_compute_external_vpn_gateway.external_gateway.id
peer_external_gateway_interface = 0
shared_secret = "unguessable"
router = google_compute_router.foobar.name
vpn_gateway_interface = 0
}
resource "google_compute_router_interface" "foobar" {
name = "%s-interface"
router = google_compute_router.foobar.name
region = google_compute_router.foobar.region
vpn_tunnel = google_compute_vpn_tunnel.foobar.name
ip_range = "fdff:1::1:1/126"
}
resource "google_compute_router_peer" "foobar" {
name = "%s-peer"
router = google_compute_router.foobar.name
region = google_compute_router.foobar.region
peer_asn = 65515
advertised_route_priority = 100
interface = google_compute_router_interface.foobar.name
ip_address = "fdff:1::1:1"
peer_ip_address = "fdff:1::1:2"
enable_ipv4 = true
enable_ipv6 = true
ipv4_nexthop_address = "169.254.1.2"
peer_ipv4_nexthop_address = "169.254.1.1"
}
`, routerName, routerName, routerName, routerName, routerName, routerName, routerName, routerName)
}
16 changes: 16 additions & 0 deletions google/services/compute/resource_compute_router_interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-provider-google/google/verify"
"google.golang.org/api/googleapi"

"google.golang.org/api/compute/v1"
Expand Down Expand Up @@ -77,6 +78,14 @@ func ResourceComputeRouterInterface() *schema.Resource {
AtLeastOneOf: []string{"ip_range", "interconnect_attachment", "subnetwork", "vpn_tunnel"},
Description: `The IP address and range of the interface. The IP range must be in the RFC3927 link-local IP space. Changing this forces a new interface to be created.`,
},
"ip_version": {
Type: schema.TypeString,
Optional: true,
ForceNew: true,
Computed: true,
ValidateFunc: verify.ValidateEnum([]string{"IPV4", "IPV6"}),
Description: `IP version of this interface.`,
},
"private_ip_address": {
Type: schema.TypeString,
Optional: true,
Expand Down Expand Up @@ -175,6 +184,10 @@ func resourceComputeRouterInterfaceCreate(d *schema.ResourceData, meta interface
iface.IpRange = ipRangeVal.(string)
}

if ipVersionVal, ok := d.GetOk("ip_version"); ok {
iface.IpVersion = ipVersionVal.(string)
}

if privateIpVal, ok := d.GetOk("private_ip_address"); ok {
iface.PrivateIpAddress = privateIpVal.(string)
}
Expand Down Expand Up @@ -266,6 +279,9 @@ func resourceComputeRouterInterfaceRead(d *schema.ResourceData, meta interface{}
if err := d.Set("ip_range", iface.IpRange); err != nil {
return fmt.Errorf("Error setting ip_range: %s", err)
}
if err := d.Set("ip_version", iface.IpVersion); err != nil {
return fmt.Errorf("Error setting ip_version: %s", err)
}
if err := d.Set("private_ip_address", iface.PrivateIpAddress); err != nil {
return fmt.Errorf("Error setting private_ip_address: %s", err)
}
Expand Down
Loading

0 comments on commit b39972a

Please sign in to comment.