@@ -18,7 +18,8 @@ import (
1818)
1919
2020var (
21- otGV = otv1 .GroupVersion .String ()
21+ otGV = otv1 .GroupVersion .String ()
22+ prefix = "__"
2223)
2324
2425// Common common controllers things
@@ -28,10 +29,15 @@ type Common struct {
2829}
2930
3031// UpdateObjectsByTemplate update object
31- func (c * Common ) UpdateObjectsByTemplate (ot otv1.ObjectTemplate , owners []metav1.OwnerReference , namespaceName string , paramsValues map [string ]string ) error {
32+ func (c * Common ) UpdateObjectsByTemplate (ot otv1.ObjectTemplate , owners []metav1.OwnerReference , namespaceName string , paramsValues map [string ]string ) ( err error ) {
3233 for _ , obj := range ot .Spec .Objects {
33- normParams := c .normalizeParametersValues (ot .Spec .Parameters , paramsValues )
34- err := c .UpdateSingleObjectByTemplate (obj , owners , namespaceName , normParams )
34+ normParams , err := c .normalizeParametersValues (obj , namespaceName , ot .Spec .Parameters , paramsValues )
35+
36+ if err != nil {
37+ return err
38+ }
39+
40+ err = c .UpdateSingleObjectByTemplate (obj , owners , namespaceName , normParams )
3541
3642 if err != nil {
3743 return err
@@ -41,17 +47,28 @@ func (c *Common) UpdateObjectsByTemplate(ot otv1.ObjectTemplate, owners []metav1
4147 return nil
4248}
4349
44- func (c * Common ) normalizeParametersValues (templateParamsValues []otv1.Parameter , paramsValues map [string ]string ) (params map [string ]string ) {
50+ func (c * Common ) normalizeParametersValues (obj otv1.Object , namespaceName string , templateParamsValues []otv1.Parameter , paramsValues map [string ]string ) (params map [string ]string , err error ) {
51+ templateValues := c .addRuntimeVariablesToMap (map [string ]string {}, obj , namespaceName )
52+
4553 params = map [string ]string {}
4654 for _ , tp := range templateParamsValues {
55+ var pvalue string
4756 if len (paramsValues [tp .Name ]) > 0 {
48- params [ tp . Name ] = paramsValues [tp .Name ]
57+ pvalue = paramsValues [tp .Name ]
4958 } else {
50- params [ tp . Name ] = tp .Default
59+ pvalue = tp .Default
5160 }
61+
62+ templateExecuted , err := executeTemplate (pvalue , templateValues )
63+
64+ if err != nil {
65+ return params , err
66+ }
67+
68+ params [tp .Name ] = templateExecuted
5269 }
5370
54- return params
71+ return params , nil
5572}
5673
5774// UpdateSingleObjectByTemplate update object
@@ -221,10 +238,10 @@ func (c *Common) UpdateStatus(ctx context.Context, obj runtime.Object) {
221238func (c * Common ) addRuntimeVariablesToMap (values map [string ]string , obj otv1.Object , namespaceName string ) map [string ]string {
222239 newMap := copyMap (values )
223240
224- newMap ["__namespace " ] = namespaceName
225- newMap ["__apiVersion " ] = obj .APIVersion
226- newMap ["__kind " ] = obj .Kind
227- newMap ["__name " ] = obj .Name
241+ newMap [prefix + "namespace " ] = namespaceName
242+ newMap [prefix + "apiVersion " ] = obj .APIVersion
243+ newMap [prefix + "kind " ] = obj .Kind
244+ newMap [prefix + "name " ] = obj .Name
228245
229246 return newMap
230247}
0 commit comments