Skip to content

Commit 4b8b8b5

Browse files
Support prodcuer port in network endpoint group (#11820) (#8766)
[upstream:4d2543ed91c3699db29fb5de387dfa900af00e68] Signed-off-by: Modular Magician <[email protected]>
1 parent a84381d commit 4b8b8b5

4 files changed

+103
-13
lines changed

.changelog/11820.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
compute: added the `psc_data` field to the `google_compute_region_network_endpoint_group` resource
3+
```

google-beta/services/compute/resource_compute_region_network_endpoint_group.go

+69
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,26 @@ The URL of the network to which all network endpoints in the NEG belong. Uses
222222
Description: `Type of network endpoints in this network endpoint group. Defaults to SERVERLESS. Default value: "SERVERLESS" Possible values: ["SERVERLESS", "PRIVATE_SERVICE_CONNECT", "INTERNET_IP_PORT", "INTERNET_FQDN_PORT", "GCE_VM_IP_PORTMAP"]`,
223223
Default: "SERVERLESS",
224224
},
225+
"psc_data": {
226+
Type: schema.TypeList,
227+
Optional: true,
228+
ForceNew: true,
229+
Description: `This field is only used for PSC NEGs.`,
230+
MaxItems: 1,
231+
Elem: &schema.Resource{
232+
Schema: map[string]*schema.Schema{
233+
"producer_port": {
234+
Type: schema.TypeString,
235+
Optional: true,
236+
ForceNew: true,
237+
Description: `The PSC producer port to use when consumer PSC NEG connects to a producer. If
238+
this flag isn't specified for a PSC NEG with endpoint type
239+
private-service-connect, then PSC NEG will be connected to a first port in the
240+
available PSC producer port range.`,
241+
},
242+
},
243+
},
244+
},
225245
"psc_target_service": {
226246
Type: schema.TypeString,
227247
Optional: true,
@@ -344,6 +364,12 @@ func resourceComputeRegionNetworkEndpointGroupCreate(d *schema.ResourceData, met
344364
} else if v, ok := d.GetOkExists("subnetwork"); !tpgresource.IsEmptyValue(reflect.ValueOf(subnetworkProp)) && (ok || !reflect.DeepEqual(v, subnetworkProp)) {
345365
obj["subnetwork"] = subnetworkProp
346366
}
367+
pscDataProp, err := expandComputeRegionNetworkEndpointGroupPscData(d.Get("psc_data"), d, config)
368+
if err != nil {
369+
return err
370+
} else if v, ok := d.GetOkExists("psc_data"); !tpgresource.IsEmptyValue(reflect.ValueOf(pscDataProp)) && (ok || !reflect.DeepEqual(v, pscDataProp)) {
371+
obj["pscData"] = pscDataProp
372+
}
347373
cloudRunProp, err := expandComputeRegionNetworkEndpointGroupCloudRun(d.Get("cloud_run"), d, config)
348374
if err != nil {
349375
return err
@@ -491,6 +517,9 @@ func resourceComputeRegionNetworkEndpointGroupRead(d *schema.ResourceData, meta
491517
if err := d.Set("subnetwork", flattenComputeRegionNetworkEndpointGroupSubnetwork(res["subnetwork"], d, config)); err != nil {
492518
return fmt.Errorf("Error reading RegionNetworkEndpointGroup: %s", err)
493519
}
520+
if err := d.Set("psc_data", flattenComputeRegionNetworkEndpointGroupPscData(res["pscData"], d, config)); err != nil {
521+
return fmt.Errorf("Error reading RegionNetworkEndpointGroup: %s", err)
522+
}
494523
if err := d.Set("cloud_run", flattenComputeRegionNetworkEndpointGroupCloudRun(res["cloudRun"], d, config)); err != nil {
495524
return fmt.Errorf("Error reading RegionNetworkEndpointGroup: %s", err)
496525
}
@@ -620,6 +649,23 @@ func flattenComputeRegionNetworkEndpointGroupSubnetwork(v interface{}, d *schema
620649
return tpgresource.ConvertSelfLinkToV1(v.(string))
621650
}
622651

652+
func flattenComputeRegionNetworkEndpointGroupPscData(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
653+
if v == nil {
654+
return nil
655+
}
656+
original := v.(map[string]interface{})
657+
if len(original) == 0 {
658+
return nil
659+
}
660+
transformed := make(map[string]interface{})
661+
transformed["producer_port"] =
662+
flattenComputeRegionNetworkEndpointGroupPscDataProducerPort(original["producerPort"], d, config)
663+
return []interface{}{transformed}
664+
}
665+
func flattenComputeRegionNetworkEndpointGroupPscDataProducerPort(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
666+
return d.Get("psc_data.0.producer_port")
667+
}
668+
623669
func flattenComputeRegionNetworkEndpointGroupCloudRun(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
624670
if v == nil {
625671
return nil
@@ -769,6 +815,29 @@ func expandComputeRegionNetworkEndpointGroupSubnetwork(v interface{}, d tpgresou
769815
return f.RelativeLink(), nil
770816
}
771817

818+
func expandComputeRegionNetworkEndpointGroupPscData(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
819+
l := v.([]interface{})
820+
if len(l) == 0 || l[0] == nil {
821+
return nil, nil
822+
}
823+
raw := l[0]
824+
original := raw.(map[string]interface{})
825+
transformed := make(map[string]interface{})
826+
827+
transformedProducerPort, err := expandComputeRegionNetworkEndpointGroupPscDataProducerPort(original["producer_port"], d, config)
828+
if err != nil {
829+
return nil, err
830+
} else if val := reflect.ValueOf(transformedProducerPort); val.IsValid() && !tpgresource.IsEmptyValue(val) {
831+
transformed["producerPort"] = transformedProducerPort
832+
}
833+
834+
return transformed, nil
835+
}
836+
837+
func expandComputeRegionNetworkEndpointGroupPscDataProducerPort(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
838+
return v, nil
839+
}
840+
772841
func expandComputeRegionNetworkEndpointGroupCloudRun(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
773842
l := v.([]interface{})
774843
if len(l) == 0 || l[0] == nil {

google-beta/services/compute/resource_compute_region_network_endpoint_group_generated_test.go

+13-11
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ func TestAccComputeRegionNetworkEndpointGroup_regionNetworkEndpointGroupFunction
5050
ResourceName: "google_compute_region_network_endpoint_group.function_neg",
5151
ImportState: true,
5252
ImportStateVerify: true,
53-
ImportStateVerifyIgnore: []string{"network", "region", "subnetwork"},
53+
ImportStateVerifyIgnore: []string{"network", "psc_data.0.producer_port", "region", "subnetwork"},
5454
},
5555
},
5656
})
@@ -113,7 +113,7 @@ func TestAccComputeRegionNetworkEndpointGroup_regionNetworkEndpointGroupCloudrun
113113
ResourceName: "google_compute_region_network_endpoint_group.cloudrun_neg",
114114
ImportState: true,
115115
ImportStateVerify: true,
116-
ImportStateVerifyIgnore: []string{"network", "region", "subnetwork"},
116+
ImportStateVerifyIgnore: []string{"network", "psc_data.0.producer_port", "region", "subnetwork"},
117117
},
118118
},
119119
})
@@ -170,7 +170,7 @@ func TestAccComputeRegionNetworkEndpointGroup_regionNetworkEndpointGroupAppengin
170170
ResourceName: "google_compute_region_network_endpoint_group.appengine_neg",
171171
ImportState: true,
172172
ImportStateVerify: true,
173-
ImportStateVerifyIgnore: []string{"network", "region", "subnetwork"},
173+
ImportStateVerifyIgnore: []string{"network", "psc_data.0.producer_port", "region", "subnetwork"},
174174
},
175175
},
176176
})
@@ -275,7 +275,7 @@ func TestAccComputeRegionNetworkEndpointGroup_regionNetworkEndpointGroupAppengin
275275
ResourceName: "google_compute_region_network_endpoint_group.appengine_neg",
276276
ImportState: true,
277277
ImportStateVerify: true,
278-
ImportStateVerifyIgnore: []string{"network", "region", "subnetwork"},
278+
ImportStateVerifyIgnore: []string{"network", "psc_data.0.producer_port", "region", "subnetwork"},
279279
},
280280
},
281281
})
@@ -313,7 +313,7 @@ func TestAccComputeRegionNetworkEndpointGroup_regionNetworkEndpointGroupPscExamp
313313
ResourceName: "google_compute_region_network_endpoint_group.psc_neg",
314314
ImportState: true,
315315
ImportStateVerify: true,
316-
ImportStateVerifyIgnore: []string{"network", "region", "subnetwork"},
316+
ImportStateVerifyIgnore: []string{"network", "psc_data.0.producer_port", "region", "subnetwork"},
317317
},
318318
},
319319
})
@@ -350,7 +350,7 @@ func TestAccComputeRegionNetworkEndpointGroup_regionNetworkEndpointGroupPscServi
350350
ResourceName: "google_compute_region_network_endpoint_group.psc_neg_service_attachment",
351351
ImportState: true,
352352
ImportStateVerify: true,
353-
ImportStateVerifyIgnore: []string{"network", "region", "subnetwork"},
353+
ImportStateVerifyIgnore: []string{"network", "psc_data.0.producer_port", "region", "subnetwork"},
354354
},
355355
},
356356
})
@@ -399,7 +399,7 @@ resource "google_compute_forwarding_rule" "default" {
399399
400400
load_balancing_scheme = "INTERNAL"
401401
backend_service = google_compute_region_backend_service.default.id
402-
all_ports = true
402+
ports = ["80", "88", "443"]
403403
network = google_compute_network.default.name
404404
subnetwork = google_compute_subnetwork.default.name
405405
}
@@ -421,7 +421,9 @@ resource "google_compute_region_network_endpoint_group" "psc_neg_service_attachm
421421
422422
network_endpoint_type = "PRIVATE_SERVICE_CONNECT"
423423
psc_target_service = google_compute_service_attachment.default.self_link
424-
424+
psc_data {
425+
producer_port = "88"
426+
}
425427
network = google_compute_network.default.self_link
426428
subnetwork = google_compute_subnetwork.default.self_link
427429
}
@@ -447,7 +449,7 @@ func TestAccComputeRegionNetworkEndpointGroup_regionNetworkEndpointGroupInternet
447449
ResourceName: "google_compute_region_network_endpoint_group.region_network_endpoint_group_internet_ip_port",
448450
ImportState: true,
449451
ImportStateVerify: true,
450-
ImportStateVerifyIgnore: []string{"network", "region", "subnetwork"},
452+
ImportStateVerifyIgnore: []string{"network", "psc_data.0.producer_port", "region", "subnetwork"},
451453
},
452454
},
453455
})
@@ -488,7 +490,7 @@ func TestAccComputeRegionNetworkEndpointGroup_regionNetworkEndpointGroupInternet
488490
ResourceName: "google_compute_region_network_endpoint_group.region_network_endpoint_group_internet_fqdn_port",
489491
ImportState: true,
490492
ImportStateVerify: true,
491-
ImportStateVerifyIgnore: []string{"network", "region", "subnetwork"},
493+
ImportStateVerifyIgnore: []string{"network", "psc_data.0.producer_port", "region", "subnetwork"},
492494
},
493495
},
494496
})
@@ -529,7 +531,7 @@ func TestAccComputeRegionNetworkEndpointGroup_regionNetworkEndpointGroupPortmapE
529531
ResourceName: "google_compute_region_network_endpoint_group.region_network_endpoint_group_portmap",
530532
ImportState: true,
531533
ImportStateVerify: true,
532-
ImportStateVerifyIgnore: []string{"network", "region", "subnetwork"},
534+
ImportStateVerifyIgnore: []string{"network", "psc_data.0.producer_port", "region", "subnetwork"},
533535
},
534536
},
535537
})

website/docs/r/compute_region_network_endpoint_group.html.markdown

+18-2
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ resource "google_compute_forwarding_rule" "default" {
285285
286286
load_balancing_scheme = "INTERNAL"
287287
backend_service = google_compute_region_backend_service.default.id
288-
all_ports = true
288+
ports = ["80", "88", "443"]
289289
network = google_compute_network.default.name
290290
subnetwork = google_compute_subnetwork.default.name
291291
}
@@ -307,7 +307,9 @@ resource "google_compute_region_network_endpoint_group" "psc_neg_service_attachm
307307
308308
network_endpoint_type = "PRIVATE_SERVICE_CONNECT"
309309
psc_target_service = google_compute_service_attachment.default.self_link
310-
310+
psc_data {
311+
producer_port = "88"
312+
}
311313
network = google_compute_network.default.self_link
312314
subnetwork = google_compute_subnetwork.default.self_link
313315
}
@@ -438,6 +440,11 @@ The following arguments are supported:
438440
This field is only used for PSC NEGs.
439441
Optional URL of the subnetwork to which all network endpoints in the NEG belong.
440442

443+
* `psc_data` -
444+
(Optional)
445+
This field is only used for PSC NEGs.
446+
Structure is [documented below](#nested_psc_data).
447+
441448
* `cloud_run` -
442449
(Optional)
443450
This field is only used for SERVERLESS NEGs.
@@ -466,6 +473,15 @@ The following arguments are supported:
466473
If it is not provided, the provider project is used.
467474

468475

476+
<a name="nested_psc_data"></a>The `psc_data` block supports:
477+
478+
* `producer_port` -
479+
(Optional)
480+
The PSC producer port to use when consumer PSC NEG connects to a producer. If
481+
this flag isn't specified for a PSC NEG with endpoint type
482+
private-service-connect, then PSC NEG will be connected to a first port in the
483+
available PSC producer port range.
484+
469485
<a name="nested_cloud_run"></a>The `cloud_run` block supports:
470486

471487
* `service` -

0 commit comments

Comments
 (0)