Skip to content

Commit f77d4bd

Browse files
Fixed ServiceAttachment target_service region/location inconsistency when referencing a Secure Web Proxy on creation (#13862) (#10178)
[upstream:27a690c5917b79021fe0eabc8c46ef2e610b7ebb] Signed-off-by: Modular Magician <[email protected]>
1 parent 0ea9b62 commit f77d4bd

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

.changelog/13862.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:bug
2+
compute: fixed validation for `target_service` field in `google_compute_service_attachment` resource causing issues when targeting a `google_network_services_gateway` resource
3+
```

google-beta/tpgresource/field_helpers.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ const (
3333
RegionalLinkTemplate = "projects/%s/regions/%s/%s/%s"
3434
RegionalLinkBasePattern = "projects/(.+)/regions/(.+)/%s/(.+)"
3535
RegionalPartialLinkBasePattern = "regions/(.+)/%s/(.+)"
36+
LocalLinkBasePattern = "projects/(.+)/locations/(.+)/%s/(.+)"
37+
LocalPartialLinkBasePattern = "locations/(.+)/%s/(.+)"
3638
ProjectLinkTemplate = "projects/%s/%s/%s"
3739
ProjectBasePattern = "projects/(.+)/%s/(.+)"
3840
OrganizationLinkTemplate = "organizations/%s/%s/%s"
@@ -430,6 +432,16 @@ func ParseRegionalFieldValue(resourceType, fieldValue, projectSchemaField, regio
430432
}, nil
431433
}
432434

435+
r = regexp.MustCompile(fmt.Sprintf(LocalLinkBasePattern, resourceType))
436+
if parts := r.FindStringSubmatch(fieldValue); parts != nil {
437+
return &RegionalFieldValue{
438+
Project: parts[1],
439+
Region: parts[2],
440+
Name: parts[3],
441+
resourceType: resourceType,
442+
}, nil
443+
}
444+
433445
project, err := GetProjectFromSchema(projectSchemaField, d, config)
434446
if err != nil {
435447
return nil, err
@@ -445,6 +457,16 @@ func ParseRegionalFieldValue(resourceType, fieldValue, projectSchemaField, regio
445457
}, nil
446458
}
447459

460+
r = regexp.MustCompile(fmt.Sprintf(LocalPartialLinkBasePattern, resourceType))
461+
if parts := r.FindStringSubmatch(fieldValue); parts != nil {
462+
return &RegionalFieldValue{
463+
Project: project,
464+
Region: parts[1],
465+
Name: parts[2],
466+
resourceType: resourceType,
467+
}, nil
468+
}
469+
448470
region, err := GetRegionFromSchema(regionSchemaField, zoneSchemaField, d, config)
449471
if err != nil {
450472
return nil, err

0 commit comments

Comments
 (0)