Skip to content
Merged
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
func expand{{$.GetPrefix}}{{$.TitlelizeProperty}}(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
resource := strings.Split(v.(string), "/")
resourceKind := resource[len(resource)-2]
resourceBound := resource[len(resource)-4]
// resourceBound := resource[len(resource)-4]
if len(resource) < 4 {
return nil, fmt.Errorf("invalid value for target_service")
}

_, err := tpgresource.ParseRegionalFieldValue(resourceKind, v.(string), "project", resourceBound, "zone", d, config, true)
_, err := tpgresource.ParseRegionalFieldValue(resourceKind, v.(string), "project", "region", "zone", d, config, true)
if err != nil {
return nil, fmt.Errorf("invalid value for target_service: %w", err)
}
Expand Down
22 changes: 22 additions & 0 deletions mmv1/third_party/terraform/tpgresource/field_helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ const (
RegionalLinkTemplate = "projects/%s/regions/%s/%s/%s"
RegionalLinkBasePattern = "projects/(.+)/regions/(.+)/%s/(.+)"
RegionalPartialLinkBasePattern = "regions/(.+)/%s/(.+)"
LocalLinkBasePattern = "projects/(.+)/locations/(.+)/%s/(.+)"
LocalPartialLinkBasePattern = "locations/(.+)/%s/(.+)"
ProjectLinkTemplate = "projects/%s/%s/%s"
ProjectBasePattern = "projects/(.+)/%s/(.+)"
OrganizationLinkTemplate = "organizations/%s/%s/%s"
Expand Down Expand Up @@ -414,6 +416,16 @@ func ParseRegionalFieldValue(resourceType, fieldValue, projectSchemaField, regio
}, nil
}

r = regexp.MustCompile(fmt.Sprintf(LocalLinkBasePattern, resourceType))
if parts := r.FindStringSubmatch(fieldValue); parts != nil {
return &RegionalFieldValue{
Project: parts[1],
Region: parts[2],
Name: parts[3],
resourceType: resourceType,
}, nil
}

project, err := GetProjectFromSchema(projectSchemaField, d, config)
if err != nil {
return nil, err
Expand All @@ -429,6 +441,16 @@ func ParseRegionalFieldValue(resourceType, fieldValue, projectSchemaField, regio
}, nil
}

r = regexp.MustCompile(fmt.Sprintf(LocalPartialLinkBasePattern, resourceType))
if parts := r.FindStringSubmatch(fieldValue); parts != nil {
return &RegionalFieldValue{
Project: project,
Region: parts[1],
Name: parts[2],
resourceType: resourceType,
}, nil
}

region, err := GetRegionFromSchema(regionSchemaField, zoneSchemaField, d, config)
if err != nil {
return nil, err
Expand Down
Loading