Skip to content

Commit e05a490

Browse files
Support google_compute_network patch to enable ULA internal IPv6 (#15895)
1 parent afa180c commit e05a490

File tree

2 files changed

+68
-1
lines changed

2 files changed

+68
-1
lines changed

mmv1/products/compute/Network.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,9 @@ properties:
235235
description: |
236236
Enable ULA internal ipv6 on this network. Enabling this feature will assign
237237
a /48 from google defined ULA prefix fd20::/20.
238-
immutable: true
238+
update_url: 'projects/{{project}}/global/networks/{{name}}'
239+
update_verb: 'PATCH'
240+
update_id: 'enableUlaInternalIpv6'
239241
- name: 'internalIpv6Range'
240242
type: String
241243
description: |

mmv1/third_party/terraform/services/compute/resource_compute_network_test.go.tmpl

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -650,6 +650,28 @@ func testAccCheckComputeNetworkIsCustomSubnet(t *testing.T, n string, network *c
650650
}
651651
}
652652

653+
func testAccCheckComputeNetworkIsUlaInternalIpv6Enabled(t *testing.T, n string, network *compute.Network, expectEnabled bool) resource.TestCheckFunc {
654+
return func(s *terraform.State) error {
655+
config := acctest.GoogleProviderConfig(t)
656+
657+
found, err := config.NewComputeClient(config.UserAgent).Networks.Get(
658+
config.Project, network.Name).Do()
659+
if err != nil {
660+
return err
661+
}
662+
663+
if found.EnableUlaInternalIpv6 != expectEnabled {
664+
return fmt.Errorf("does not match expected EnableUlaInternalIpv6 value")
665+
}
666+
667+
if expectEnabled && found.InternalIpv6Range == "" {
668+
return fmt.Errorf("should have InternalIPv6Range")
669+
}
670+
671+
return nil
672+
}
673+
}
674+
653675
func testAccCheckComputeNetworkHasMtu(t *testing.T, n string, network *compute.Network, mtu int32) resource.TestCheckFunc {
654676
return func(s *terraform.State) error {
655677
config := acctest.GoogleProviderConfig(t)
@@ -848,6 +870,39 @@ func TestAccComputeNetwork_networkBgpStandardModeDeleteMed(t *testing.T) {
848870
})
849871
}
850872

873+
func TestAccComputeNetwork_updateEnableUlaInternalIpv6(t *testing.T) {
874+
t.Parallel()
875+
876+
var network compute.Network
877+
var updatedNetwork compute.Network
878+
suffixName := acctest.RandString(t, 10)
879+
networkName := fmt.Sprintf("tf-test-network-enable-ula-%s", suffixName)
880+
881+
acctest.VcrTest(t, resource.TestCase{
882+
PreCheck: func() { acctest.AccTestPreCheck(t) },
883+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
884+
CheckDestroy: testAccCheckComputeNetworkDestroyProducer(t),
885+
Steps: []resource.TestStep{
886+
{
887+
Config: testAccComputeNetwork_custom_subnet(networkName),
888+
Check: resource.ComposeTestCheckFunc(
889+
testAccCheckComputeNetworkExists(
890+
t, "google_compute_network.baz", &network),
891+
),
892+
},
893+
{
894+
Config: testAccComputeNetwork_ula(networkName),
895+
Check: resource.ComposeTestCheckFunc(
896+
testAccCheckComputeNetworkExists(
897+
t, "google_compute_network.baz", &updatedNetwork),
898+
testAccCheckComputeNetworkWasUpdated(&updatedNetwork, &network),
899+
),
900+
},
901+
},
902+
})
903+
}
904+
905+
851906
func testAccComputeNetwork_basic(networkName string) string {
852907
return fmt.Sprintf(`
853908
resource "google_compute_network" "bar" {
@@ -866,6 +921,16 @@ resource "google_compute_network" "baz" {
866921
`, networkName)
867922
}
868923

924+
func testAccComputeNetwork_ula(networkName string) string {
925+
return fmt.Sprintf(`
926+
resource "google_compute_network" "baz" {
927+
name = "%s"
928+
auto_create_subnetworks = false
929+
enable_ula_internal_ipv6 = true
930+
}
931+
`, networkName)
932+
}
933+
869934
func testAccComputeNetwork_bgp(name, bgpBestPathSelectionMode, bgpAlwaysCompareMed, deleteBgpAlwaysCompareMed string) string {
870935
var medLine, deleteMedLine string
871936
if bgpAlwaysCompareMed != "" {

0 commit comments

Comments
 (0)