in mmv1/api/resource/examples.go [225:303]
func (e *Examples) SetHCLText() {
originalVars := e.Vars
originalTestEnvVars := e.TestEnvVars
docTestEnvVars := make(map[string]string)
docs_defaults := map[string]string{
"PROJECT_NAME": "my-project-name",
"PROJECT_NUMBER": "1111111111111",
"CREDENTIALS": "my/credentials/filename.json",
"REGION": "us-west1",
"ORG_ID": "123456789",
"ORG_DOMAIN": "example.com",
"ORG_TARGET": "123456789",
"BILLING_ACCT": "000000-0000000-0000000-000000",
"MASTER_BILLING_ACCT": "000000-0000000-0000000-000000",
"SERVICE_ACCT": "my@service-account.com",
"CUST_ID": "A01b123xz",
"IDENTITY_USER": "cloud_identity_user",
"PAP_DESCRIPTION": "description",
"CHRONICLE_ID": "00000000-0000-0000-0000-000000000000",
"VMWAREENGINE_PROJECT": "my-vmwareengine-project",
}
// Apply doc defaults to test_env_vars from YAML
for key := range e.TestEnvVars {
docTestEnvVars[key] = docs_defaults[e.TestEnvVars[key]]
}
e.TestEnvVars = docTestEnvVars
e.DocumentationHCLText = ExecuteTemplate(e, e.ConfigPath, true)
e.DocumentationHCLText = regexp.MustCompile(`\n\n$`).ReplaceAllString(e.DocumentationHCLText, "\n")
// Remove region tags
re1 := regexp.MustCompile(`# \[[a-zA-Z_ ]+\]\n`)
re2 := regexp.MustCompile(`\n# \[[a-zA-Z_ ]+\]`)
e.DocumentationHCLText = re1.ReplaceAllString(e.DocumentationHCLText, "")
e.DocumentationHCLText = re2.ReplaceAllString(e.DocumentationHCLText, "")
testVars := make(map[string]string)
testTestEnvVars := make(map[string]string)
// Override vars to inject test values into configs - will have
// - "a-example-var-value%{random_suffix}""
// - "%{my_var}" for overrides that have custom Golang values
for key, value := range originalVars {
var newVal string
if strings.Contains(value, "-") {
newVal = fmt.Sprintf("tf-test-%s", value)
} else if strings.Contains(value, "_") {
newVal = fmt.Sprintf("tf_test_%s", value)
} else {
// Some vars like descriptions shouldn't have prefix
newVal = value
}
// Random suffix is 10 characters and standard name length <= 64
if len(newVal) > 54 {
newVal = newVal[:54]
}
testVars[key] = fmt.Sprintf("%s%%{random_suffix}", newVal)
}
// Apply overrides from YAML
for key := range e.TestVarsOverrides {
testVars[key] = fmt.Sprintf("%%{%s}", key)
}
for key := range originalTestEnvVars {
testTestEnvVars[key] = fmt.Sprintf("%%{%s}", key)
}
e.Vars = testVars
e.TestEnvVars = testTestEnvVars
e.TestHCLText = ExecuteTemplate(e, e.ConfigPath, true)
e.TestHCLText = regexp.MustCompile(`\n\n$`).ReplaceAllString(e.TestHCLText, "\n")
// Remove region tags
e.TestHCLText = re1.ReplaceAllString(e.TestHCLText, "")
e.TestHCLText = re2.ReplaceAllString(e.TestHCLText, "")
e.TestHCLText = SubstituteTestPaths(e.TestHCLText)
// Reset the example
e.Vars = originalVars
e.TestEnvVars = originalTestEnvVars
}