package daemons import ( "bufio" "fmt" "oc-schedulerd/conf" "os/exec" oclib "cloud.o-forge.io/core/oc-lib" "github.com/rs/zerolog" ) type LocalMonitor struct { ExecutionID string PeerID string Duration int Logger zerolog.Logger } func (lm *LocalMonitor) LaunchLocalMonitor() { if lm.ExecutionID == "" { lm.Logger.Error().Msg("Missing parameter in LocalMonitor") } lm.execKube() } func (lm *LocalMonitor) execKube() { l := oclib.GetLogger() args := []string{ "-e", lm.ExecutionID, "-p", lm.PeerID, "-u", conf.GetConfig().LokiUrl, "-m", conf.GetConfig().MongoUrl, "-d", conf.GetConfig().DBName, } if conf.GetConfig().Mode == "kubernetes" { args = append(args, []string{"-M", conf.GetConfig().Mode, "-H", conf.GetConfig().KubeHost, "-P", conf.GetConfig().KubePort, "-C", conf.GetConfig().KubeCert, "-D", conf.GetConfig().KubeData, "-c", conf.GetConfig().KubeCA}...) } if lm.Duration > 0 { args = append(args, "-t", fmt.Sprintf("%d", lm.Duration)) } cmd := exec.Command(conf.GetConfig().MonitorPath, args...) fmt.Printf("Command : %v\n", cmd) stdoutMonitord, err := cmd.StdoutPipe(); if err != nil { l.Error().Msg("Could not retrieve stdoutpipe for execution of oc-monitord" + err.Error()) return } err = cmd.Start() if err != nil { lm.Logger.Error().Msg("Could not start oc-monitor for " + lm.ExecutionID + " : " + err.Error()) } scanner := bufio.NewScanner(stdoutMonitord) for scanner.Scan() { output := scanner.Text() l.Debug().Msg(output) } }