...
1
2
3
4
5
6
7
8
9
10
11
12
13
14 package main
15
16 import (
17 "bytes"
18 "text/template"
19 )
20
21 const validatorTmpl = `
22 // GetChaosValidator returns chaos object by kind
23 func GetChaosValidator(chaosKind string) ChaosValidator {
24 switch chaosKind {
25 {{range $val := .}}
26 case Kind{{$val}}:
27 return &{{$val}}{}
28 {{end}}
29 default:
30 return nil
31 }
32 }
33 `
34
35 func generateGetChaosValidatorFunc(allTypes []string) string {
36 tmpl, err := template.New("ini").Parse(validatorTmpl)
37 if err != nil {
38 log.Error(err, "fail to build template")
39 panic(err)
40 }
41
42 buf := new(bytes.Buffer)
43 err = tmpl.Execute(buf, allTypes)
44 if err != nil {
45 log.Error(err, "fail to execute template")
46 panic(err)
47 }
48
49 return buf.String()
50
51 }
52