func()

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
}