diff --git a/conf/conf.go b/conf/conf.go index 3e03005..683b483 100644 --- a/conf/conf.go +++ b/conf/conf.go @@ -8,18 +8,14 @@ import ( ) type Config struct { - MonitorPath string - MongoUrl string - DBName string - Logs string - LokiUrl string - NatsUrl string - Mode string - KubeHost string - KubePort string - KubeCA string - KubeCert string - KubeData string + MonitorPath string + Logs string + Mode string + KubeHost string + KubePort string + KubeCA string + KubeCert string + KubeData string } var instance *Config diff --git a/daemons/execute_monitor_container.go b/daemons/execute_monitor_container.go index 02a569f..6bfa3bc 100644 --- a/daemons/execute_monitor_container.go +++ b/daemons/execute_monitor_container.go @@ -8,29 +8,30 @@ import ( "net/http" "oc-schedulerd/conf" + oclib "cloud.o-forge.io/core/oc-lib" "github.com/rs/zerolog" ) type ContainerMonitor struct { - Monitor LocalMonitor - KubeCA string - KubeCert string - KubeData string - KubeHost string - KubePort string + Monitor LocalMonitor + KubeCA string + KubeCert string + KubeData string + KubeHost string + KubePort string } -func NewContainerMonitor(UUID string, peerId string, duration int) (Executor){ +func NewContainerMonitor(UUID string, peerId string, duration int) Executor { return &ContainerMonitor{ - Monitor: LocalMonitor{ + Monitor: LocalMonitor{ ExecutionID: UUID, - PeerID: peerId, - Duration: duration, - LokiUrl: conf.GetConfig().LokiUrl, - MongoUrl: conf.GetConfig().MongoUrl, - DBName: conf.GetConfig().DBName, + PeerID: peerId, + Duration: duration, + LokiUrl: oclib.GetConfig().LokiUrl, + MongoUrl: oclib.GetConfig().MongoUrl, + DBName: oclib.GetConfig().MongoDatabase, }, - KubeCA: conf.GetConfig().KubeCA, + KubeCA: conf.GetConfig().KubeCA, KubeCert: conf.GetConfig().KubeCert, KubeData: conf.GetConfig().KubeData, KubeHost: conf.GetConfig().KubeHost, @@ -38,7 +39,7 @@ func NewContainerMonitor(UUID string, peerId string, duration int) (Executor){ } } -func (cm *ContainerMonitor) PrepareMonitorExec() []string { +func (cm *ContainerMonitor) PrepareMonitorExec() []string { args := []string{ "-e", cm.Monitor.ExecutionID, @@ -49,7 +50,7 @@ func (cm *ContainerMonitor) PrepareMonitorExec() []string { "-M", "kubernetes", "-H", cm.KubeHost, "-P", cm.KubePort, - "-C", cm.KubeCert, + "-C", cm.KubeCert, "-D", cm.KubeData, "-c", cm.KubeCA, } @@ -58,8 +59,8 @@ func (cm *ContainerMonitor) PrepareMonitorExec() []string { args = append(args, "-t", fmt.Sprintf("%d", cm.Monitor.Duration)) } - return args - + return args + } // Contact the docker's API at the KubeHost's URL to : @@ -67,8 +68,8 @@ func (cm *ContainerMonitor) PrepareMonitorExec() []string { // - Create the container // - Start the container func (cm *ContainerMonitor) LaunchMonitor(args []string, l zerolog.Logger) { - - var containerID string + + var containerID string imageName := "oc-monitord" url := "http://" + cm.KubeHost + ":2375" @@ -81,15 +82,15 @@ func (cm *ContainerMonitor) LaunchMonitor(args []string, l zerolog.Logger) { d, _ := io.ReadAll(resp.Body) l.Fatal().Msg("Couldn't find the oc-monitord image : " + string(d)) } - - dataCreation := map[string]interface{}{"Image": imageName, "Cmd" : args} + + dataCreation := map[string]interface{}{"Image": imageName, "Cmd": args} byteData, err := json.Marshal(dataCreation) if err != nil { l.Fatal().Msg("Error when contacting the creating request body : " + err.Error()) } - - r, _ := http.NewRequest("POST",url + "/containers/create", bytes.NewBuffer(byteData)) - r.Header.Add("Content-Type","application/json") + + r, _ := http.NewRequest("POST", url+"/containers/create", bytes.NewBuffer(byteData)) + r.Header.Add("Content-Type", "application/json") resp, err = http.DefaultClient.Do(r) if err != nil { l.Fatal().Msg("Error when contacting the docker API on " + url + ": " + err.Error()) @@ -116,9 +117,9 @@ func (cm *ContainerMonitor) LaunchMonitor(args []string, l zerolog.Logger) { networkName := "oc" - dataNetwork, _ := json.Marshal(map[string]string{"Container" : containerID}) - r, _ = http.NewRequest("POST",url + "/networks/" + networkName + "/connect", bytes.NewBuffer(dataNetwork)) - r.Header.Add("Content-Type","application/json") + dataNetwork, _ := json.Marshal(map[string]string{"Container": containerID}) + r, _ = http.NewRequest("POST", url+"/networks/"+networkName+"/connect", bytes.NewBuffer(dataNetwork)) + r.Header.Add("Content-Type", "application/json") resp, err = http.DefaultClient.Do(r) if err != nil { l.Fatal().Msg("Error when contacting the docker API on " + url + ": " + err.Error()) @@ -129,7 +130,7 @@ func (cm *ContainerMonitor) LaunchMonitor(args []string, l zerolog.Logger) { return } - resp, err = http.Post( url + "/containers/" + containerID + "/start", "", nil) + resp, err = http.Post(url+"/containers/"+containerID+"/start", "", nil) if err != nil { l.Fatal().Msg("Error when contacting the docker API on " + url + ": " + err.Error()) } @@ -143,4 +144,4 @@ func (cm *ContainerMonitor) LaunchMonitor(args []string, l zerolog.Logger) { // we can add logging with GET /containers/id/logs?stdout=true&follow=true // logExecution(stdoutMonitord, l) -} \ No newline at end of file +} diff --git a/daemons/execute_monitor_local.go b/daemons/execute_monitor_local.go index b228b78..e051fb5 100644 --- a/daemons/execute_monitor_local.go +++ b/daemons/execute_monitor_local.go @@ -5,6 +5,7 @@ import ( "oc-schedulerd/conf" "os/exec" + oclib "cloud.o-forge.io/core/oc-lib" "github.com/rs/zerolog" ) @@ -12,20 +13,19 @@ type LocalMonitor struct { ExecutionID string PeerID string Duration int - LokiUrl string - MongoUrl string - DBName string - + LokiUrl string + MongoUrl string + DBName string } -func NewLocalMonitor(UUID string, peerId string, duration int) (Executor){ +func NewLocalMonitor(UUID string, peerId string, duration int) Executor { return &LocalMonitor{ ExecutionID: UUID, - PeerID: peerId, - Duration: duration, - LokiUrl: conf.GetConfig().LokiUrl, - MongoUrl: conf.GetConfig().MongoUrl, - DBName: conf.GetConfig().DBName, + PeerID: peerId, + Duration: duration, + LokiUrl: oclib.GetConfig().LokiUrl, + MongoUrl: oclib.GetConfig().MongoUrl, + DBName: oclib.GetConfig().MongoDatabase, } } @@ -46,7 +46,6 @@ func (lm *LocalMonitor) PrepareMonitorExec() []string { "-d", lm.DBName, } - if lm.Duration > 0 { args = append(args, "-t", fmt.Sprintf("%d", lm.Duration)) } @@ -54,7 +53,7 @@ func (lm *LocalMonitor) PrepareMonitorExec() []string { return args } -func (lm *LocalMonitor) LaunchMonitor(args []string, l zerolog.Logger) { +func (lm *LocalMonitor) LaunchMonitor(args []string, l zerolog.Logger) { cmd := exec.Command(conf.GetConfig().MonitorPath, args...) fmt.Printf("Command : %v\n", cmd) @@ -70,4 +69,3 @@ func (lm *LocalMonitor) LaunchMonitor(args []string, l zerolog.Logger) { logExecution(stdoutMonitord, l) } - diff --git a/main.go b/main.go index c9ce3c5..174680b 100644 --- a/main.go +++ b/main.go @@ -14,18 +14,6 @@ func main() { l := oclib.GetLogger() o := oclib.GetConfLoader() - c := oclib.SetConfig( - o.GetStringDefault("MONGO_URL", "mongodb://127.0.0.1:27017"), - o.GetStringDefault("MONGO_DATABASE", "DC_myDC"), - o.GetStringDefault("NATS_URL", "nats://localhost:4222"), - o.GetStringDefault("LOKI_URL", ""), - o.GetStringDefault("LOG_LEVEL", "info"), - ) - - conf.GetConfig().DBName = c.MongoDatabase - conf.GetConfig().MongoUrl = c.MongoUrl - conf.GetConfig().NatsUrl = c.NATSUrl - conf.GetConfig().LokiUrl = c.LokiUrl conf.GetConfig().Mode = o.GetStringDefault("MODE", "") if conf.GetConfig().Mode == "container" {