Skip to content
Merged
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