Skip to content

Commit 25b1a7a

Browse files
committed
Fix string values to escape TF characters in resource discovery
1 parent 11378a4 commit 25b1a7a

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
### Fixed
88
- Fixed DNS outage causing problems for DNS records
9+
- Fixed string values to escape TF characters in resource discovery
910

1011
## 3.76.0 (May 19, 2020)
1112

oci/export_compartment.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -648,7 +648,7 @@ func getHCLStringFromMap(builder *strings.Builder, sourceAttributes map[string]i
648648
v = varOverride
649649
builder.WriteString(fmt.Sprintf("%s = %v\n", tfAttribute, v))
650650
} else {
651-
builder.WriteString(fmt.Sprintf("%s = %q\n", tfAttribute, v))
651+
builder.WriteString(fmt.Sprintf("%s = %q\n", tfAttribute, escapeTFStrings(v)))
652652
}
653653
continue
654654
case int, bool, float64:
@@ -680,7 +680,7 @@ func getHCLStringFromMap(builder *strings.Builder, sourceAttributes map[string]i
680680
trueListVal = varOverride
681681
builder.WriteString(fmt.Sprintf("%v,\n", trueListVal))
682682
} else {
683-
builder.WriteString(fmt.Sprintf("%q,\n", trueListVal))
683+
builder.WriteString(fmt.Sprintf("%q,\n", escapeTFStrings(trueListVal)))
684684
}
685685
case int, bool, float64:
686686
builder.WriteString(fmt.Sprintf("\"%v\",\n", trueListVal))
@@ -719,7 +719,7 @@ func getHCLStringFromMap(builder *strings.Builder, sourceAttributes map[string]i
719719
mapVal = varOverride
720720
builder.WriteString(fmt.Sprintf("\"%s\" = %v\n", mapKey, mapVal))
721721
} else {
722-
builder.WriteString(fmt.Sprintf("\"%s\" = %q\n", mapKey, mapVal))
722+
builder.WriteString(fmt.Sprintf("\"%s\" = %q\n", mapKey, escapeTFStrings(mapVal)))
723723
}
724724
case int, bool, float64:
725725
builder.WriteString(fmt.Sprintf("\"%s\" = \"%v\"\n", mapKey, mapVal))
@@ -998,6 +998,13 @@ func convertResourceDataToMap(schemaMap map[string]*schema.Schema, d *schema.Res
998998
return result
999999
}
10001000

1001+
// This function should only be used to escape TF-characters in strings
1002+
func escapeTFStrings(val string) string {
1003+
val = strings.ReplaceAll(val, "%{", "%%{")
1004+
val = strings.ReplaceAll(val, "${", "$${")
1005+
return val
1006+
}
1007+
10011008
func generateTerraformNameFromResource(resourceAttributes map[string]interface{}, resourceSchema map[string]*schema.Schema) (string, error) {
10021009
possibleNameAttributes := []string{
10031010
"display_name",

0 commit comments

Comments
 (0)