Skip to content

Commit

Permalink
Render templates with options
Browse files Browse the repository at this point in the history
Signed-off-by: Raul Sevilla <rsevilla@redhat.com>
  • Loading branch information
rsevilla87 committed Dec 4, 2020
1 parent 2c0104f commit 203ca06
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 11 deletions.
10 changes: 5 additions & 5 deletions pkg/burner/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ func setupCreateJob(jobConfig config.Job) Executor {
}
// Deserialize YAML
uns := &unstructured.Unstructured{}
renderedObj := renderTemplate(t, empty)
renderedObj := renderTemplate(t, empty, missingKeyDefault)
_, gvk := yamlToUnstructured(renderedObj, uns)
gvr, _ := meta.UnsafeGuessKindToResource(*gvk)
obj := object{
Expand Down Expand Up @@ -152,18 +152,18 @@ func (ex *Executor) replicaHandler(objectIndex int, obj object, ns string, itera
"kube-burner-job": ex.Config.Name,
"kube-burner-index": strconv.Itoa(objectIndex),
}
tData := map[string]interface{}{
templateData := map[string]interface{}{
jobName: ex.Config.Name,
jobIteration: iteration,
jobUUID: ex.uuid,
}
for k, v := range obj.inputVars {
tData[k] = v
templateData[k] = v
}
for r := 1; r <= obj.replicas; r++ {
newObject := &unstructured.Unstructured{}
tData[replica] = r
renderedObj := renderTemplate(obj.objectSpec, tData)
templateData[replica] = r
renderedObj := renderTemplate(obj.objectSpec, templateData, missingKeyError)
// Re-decode rendered object
yamlToUnstructured(renderedObj, newObject)
for k, v := range newObject.GetLabels() {
Expand Down
16 changes: 10 additions & 6 deletions pkg/burner/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,21 @@ import (
"k8s.io/kubectl/pkg/scheme"
)

type templateOption string

const (
// Parameters for retrying with exponential backoff.
retryBackoffInitialDuration = 1 * time.Second
retryBackoffFactor = 3
retryBackoffJitter = 0
retryBackoffSteps = 3
retryBackoffInitialDuration = 1 * time.Second
retryBackoffFactor = 3
retryBackoffJitter = 0
retryBackoffSteps = 3
missingKeyDefault templateOption = "missingkey=default"
missingKeyError templateOption = "missingkey=error"
)

func renderTemplate(original []byte, data interface{}) []byte {
func renderTemplate(original []byte, data interface{}, options templateOption) []byte {
var rendered bytes.Buffer
t, err := template.New("").Parse(string(original))
t, err := template.New("").Option(string(options)).Parse(string(original))
if err != nil {
log.Fatalf("Error parsing template: %s", err)
}
Expand Down

0 comments on commit 203ca06

Please sign in to comment.