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  }