package main import ( "fmt" "oc-schedulerd/conf" "oc-schedulerd/daemons" "os" oclib "cloud.o-forge.io/core/oc-lib" "cloud.o-forge.io/core/oc-lib/tools" ) var appname = "oc-schedulerd" func main() { oclib.InitDaemon(appname) l := oclib.GetLogger() o := oclib.GetConfLoader(appname) conf.GetConfig().Mode = o.GetStringDefault("MODE", "local") conf.GetConfig().KubeNamespace = o.GetStringDefault("KUBERNETES_NAMESPACE", "default") conf.GetConfig().KubeImage = o.GetStringDefault("KUBERNETES_IMAGE", "opencloudregistry/oc-monitord") conf.GetConfig().PrepLeadSeconds = o.GetIntDefault("PREP_LEAD_SECONDS", 120) conf.GetConfig().KubeHost = o.GetStringDefault("KUBERNETES_SERVICE_HOST", "kubernetes.default.svc.cluster.local") conf.GetConfig().KubePort = o.GetStringDefault("KUBERNETES_SERVICE_PORT", "6443") conf.GetConfig().KubeCA = o.GetStringDefault("KUBE_CA", "") conf.GetConfig().KubeCert = o.GetStringDefault("KUBE_CERT", "") conf.GetConfig().KubeData = o.GetStringDefault("KUBE_DATA", "") fmt.Println(conf.GetConfig().KubeCA) // Test if oc-monitor binary is reachable // For local executions if _, err := os.Stat("../oc-monitord/oc-monitord"); err == nil { conf.GetConfig().MonitorPath = "../oc-monitord/oc-monitord" } // For container executions if _, err := os.Stat("/usr/bin/oc-monitord"); conf.GetConfig().MonitorPath == "" && err == nil { conf.GetConfig().MonitorPath = "/usr/bin/oc-monitord" } if conf.GetConfig().MonitorPath == "" { l.Fatal().Msg("Could not find oc-monitord binary") } l.Info().Msg("oc-monitord binary at " + conf.GetConfig().MonitorPath) sch_mngr := daemons.ScheduleManager{Logger: oclib.GetLogger()} exe_mngr := daemons.ExecutionManager{} go tools.NewNATSCaller().ListenNats(map[tools.NATSMethod]func(tools.NATSResponse){ tools.CREATE_EXECUTION: sch_mngr.GetNextScheduledWorkflows, // TODO: unused for now... tools.WORKFLOW_EVENT: sch_mngr.ExecuteWorkflow, tools.REMOVE_EXECUTION: daemons.Executions.DeleteSchedules, // TODO: unused for now... }) go sch_mngr.SchedulePolling() exe_mngr.RetrieveNextExecutions() }