Skip to content

Commit 49dd615

Browse files
22603: add update_strategy to google_compute_network_peering (#13848) (#23454)
[upstream:e8e3af5d1e556d75eae383cc11cef19a0c618fbe] Signed-off-by: Modular Magician <[email protected]>
1 parent e577547 commit 49dd615

File tree

4 files changed

+59
-1
lines changed

4 files changed

+59
-1
lines changed

.changelog/13848.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
compute: added `update_strategy` field to `google_compute_network_peering ` resource (beta)
3+
```

google/services/compute/resource_compute_network_peering.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,7 @@ func findPeeringFromNetwork(network *compute.Network, peeringName string) *compu
324324
return nil
325325
}
326326
func expandNetworkPeering(d *schema.ResourceData) *compute.NetworkPeering {
327+
327328
return &compute.NetworkPeering{
328329
ExchangeSubnetRoutes: true,
329330
Name: d.Get("name").(string),
@@ -335,6 +336,7 @@ func expandNetworkPeering(d *schema.ResourceData) *compute.NetworkPeering {
335336
StackType: d.Get("stack_type").(string),
336337
ForceSendFields: []string{"ExportSubnetRoutesWithPublicIp", "ImportCustomRoutes", "ExportCustomRoutes"},
337338
}
339+
338340
}
339341

340342
func flattenNetworkPeeringStackType(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
@@ -346,6 +348,15 @@ func flattenNetworkPeeringStackType(v interface{}, d *schema.ResourceData, confi
346348
return v
347349
}
348350

351+
func flattenNetworkPeeringUpdateStrategy(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
352+
// To prevent the perma-diff caused by the absence of `update_strategy` in API responses for older resource.
353+
if v == nil || tpgresource.IsEmptyValue(reflect.ValueOf(v)) {
354+
return "INDEPENDENT"
355+
}
356+
357+
return v
358+
}
359+
349360
func sortedNetworkPeeringMutexKeys(networkName, peerNetworkName *tpgresource.GlobalFieldValue) []string {
350361
// Whether you delete the peering from network A to B or the one from B to A, they
351362
// cannot happen at the same time.

google/services/compute/resource_compute_network_peering_test.go

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
//
99
// This code is generated by Magic Modules using the following:
1010
//
11-
// Source file: https://github.com/GoogleCloudPlatform/magic-modules/tree/main/mmv1/third_party/terraform/services/compute/resource_compute_network_peering_test.go
11+
// Source file: https://github.com/GoogleCloudPlatform/magic-modules/tree/main/mmv1/third_party/terraform/services/compute/resource_compute_network_peering_test.go.tmpl
1212
//
1313
// DO NOT EDIT this file directly. Any changes made to this file will be
1414
// overwritten during the next generation cycle.
@@ -293,3 +293,44 @@ resource "google_compute_network_peering" "foo" {
293293
}
294294
`, primaryNetworkName, peeringNetworkName, peeringName)
295295
}
296+
297+
func testAccComputeNetworkPeering_updateStrategyDefault(primaryNetworkName, peeringNetworkName, peeringName string) string {
298+
return fmt.Sprintf(`
299+
resource "google_compute_network" "network1" {
300+
name = "%s"
301+
auto_create_subnetworks = false
302+
}
303+
304+
resource "google_compute_network" "network2" {
305+
name = "%s"
306+
auto_create_subnetworks = false
307+
}
308+
309+
resource "google_compute_network_peering" "foo" {
310+
name = "%s"
311+
network = google_compute_network.network1.self_link
312+
peer_network = google_compute_network.network2.self_link
313+
}
314+
`, primaryNetworkName, peeringNetworkName, peeringName)
315+
}
316+
317+
func testAccComputeNetworkPeering_updateStrategyUpdate(primaryNetworkName, peeringNetworkName, peeringName string) string {
318+
return fmt.Sprintf(`
319+
resource "google_compute_network" "network1" {
320+
name = "%s"
321+
auto_create_subnetworks = false
322+
}
323+
324+
resource "google_compute_network" "network2" {
325+
name = "%s"
326+
auto_create_subnetworks = false
327+
}
328+
329+
resource "google_compute_network_peering" "foo" {
330+
name = "%s"
331+
network = google_compute_network.network1.self_link
332+
peer_network = google_compute_network.network2.self_link
333+
update_strategy = "CONSENSUS"
334+
}
335+
`, primaryNetworkName, peeringNetworkName, peeringName)
336+
}

website/docs/r/compute_network_peering.html.markdown

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,9 @@ Whether subnet routes with public IP range are imported. The default value is fa
8282
* `stack_type` - (Optional)
8383
Which IP version(s) of traffic and routes are allowed to be imported or exported between peer networks. The default value is IPV4_ONLY. Possible values: ["IPV4_ONLY", "IPV4_IPV6"].
8484

85+
* `update_strategy` - (Optional, [Beta](https://terraform.io/docs/providers/google/guides/provider_versions.html))
86+
The update strategy determines the semantics for updates and deletes to the peering connection configuration. The default value is INDEPENDENT. Possible values: ["INDEPENDENT", "CONSENSUS"]
87+
8588
## Attributes Reference
8689

8790
In addition to the arguments listed above, the following computed attributes are

0 commit comments

Comments
 (0)