github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/internal/utils/kubectl/label.go (about)

     1  package kubectl
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  
     7  	"github.com/caos/orbos/mntr"
     8  )
     9  
    10  type KubectlLabel struct {
    11  	kubectl *Kubectl
    12  }
    13  
    14  func NewLabel(resultFilePath string) *KubectlLabel {
    15  	return &KubectlLabel{kubectl: New("label").AddFlag("--overwrite").AddParameter("-f", resultFilePath)}
    16  }
    17  func (k *KubectlLabel) AddParameter(key, value string) *KubectlLabel {
    18  	k.kubectl.AddParameter(key, value)
    19  	return k
    20  }
    21  
    22  func (k *KubectlLabel) Apply(monitor mntr.Monitor, labels map[string]string) error {
    23  	for key, value := range labels {
    24  		k.kubectl.AddFlag(strings.Join([]string{key, value}, "="))
    25  	}
    26  
    27  	cmd := k.kubectl.Build()
    28  
    29  	kubectlMonitor := monitor.WithFields(map[string]interface{}{
    30  		"cmd": cmd,
    31  	})
    32  	kubectlMonitor.Debug("Executing")
    33  
    34  	out, err := cmd.CombinedOutput()
    35  	if err != nil {
    36  		err = fmt.Errorf("error while executing command: %w", err)
    37  		kubectlMonitor.Debug(string(out))
    38  		kubectlMonitor.Error(err)
    39  	}
    40  
    41  	return err
    42  }