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 }