github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/internal/operator/boom/templator/helm/presteps.go (about) 1 package helm 2 3 import ( 4 "fmt" 5 6 "github.com/caos/orbos/internal/operator/boom/api/latest" 7 "github.com/caos/orbos/internal/operator/boom/templator" 8 "github.com/caos/orbos/internal/utils/yaml" 9 "github.com/caos/orbos/mntr" 10 ) 11 12 type TemplatorPreSteps interface { 13 templator.HelmApplication 14 HelmPreApplySteps(mntr.Monitor, *latest.ToolsetSpec) ([]interface{}, error) 15 } 16 17 func (h *Helm) preApplySteps(app interface{}, spec *latest.ToolsetSpec) error { 18 19 pre, ok := app.(TemplatorPreSteps) 20 if ok { 21 22 logFields := map[string]interface{}{ 23 "application": pre.GetName().String(), 24 "overlay": h.overlay, 25 } 26 27 monitor := h.monitor.WithFields(logFields) 28 monitor.Debug("Pre-steps") 29 resources, err := pre.HelmPreApplySteps(monitor, spec) 30 if err != nil { 31 return fmt.Errorf("error while processing pre-steps for application %s: %w", pre.GetName().String(), err) 32 } 33 34 resultfilepath := h.GetResultsFilePath(pre.GetName(), h.overlay, h.templatorDirectoryPath) 35 y := yaml.New(resultfilepath) 36 for i, resource := range resources { 37 value, isString := resource.(string) 38 39 if isString { 40 err := y.AddStringObject(value) 41 if err != nil { 42 return fmt.Errorf("error while adding element %d to result-file: %w", i, err) 43 } 44 } else { 45 err = y.AddStruct(resource) 46 if err != nil { 47 return fmt.Errorf("error while adding element %d to result-file: %w", i, err) 48 } 49 } 50 } 51 } 52 return nil 53 }