CI / changes (push) Successful in 4s
CI / openapi (push) Successful in 24s
CI / go (push) Successful in 22s
CI / bird2 (push) Successful in 13s
CI / docker-images (deploy/docker/bird2/Dockerfile, evobgp-bird2) (push) Successful in 38s
CI / docker-images (deploy/docker/evobgp-agent/Dockerfile, evobgp-agent) (push) Successful in 1m8s
CI / docker-images (deploy/docker/evobgp-web/Dockerfile, evobgp-web) (push) Successful in 49s
CI / docker-images (evobgp-all, 1, deploy/docker/gobinary/Dockerfile, evobgp-all) (push) Successful in 1m30s
CI / docker-images (evobgp-api, 1, deploy/docker/gobinary/Dockerfile, evobgp-api) (push) Successful in 1m31s
CI / docker-images (evobgp-ingest, 0, deploy/docker/gobinary/Dockerfile, evobgp-ingest) (push) Has been cancelled
CI / docker-images (evobgp-deploy, 0, deploy/docker/gobinary/Dockerfile, evobgp-deploy) (push) Has been cancelled
CI / docker-images (evobgp-node, 0, deploy/docker/gobinary/Dockerfile, evobgp-node) (push) Has been cancelled
CI / docker-images (evobgp-render, 0, deploy/docker/gobinary/Dockerfile, evobgp-render) (push) Has been cancelled
CI / docker-images (evobgp-scheduler, 0, deploy/docker/gobinary/Dockerfile, evobgp-scheduler) (push) Has been cancelled
61 lines
1.6 KiB
Go
61 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
"os/signal"
|
|
"strings"
|
|
"syscall"
|
|
"time"
|
|
|
|
"evobgp/internal/config"
|
|
"evobgp/internal/httpapi"
|
|
"evobgp/internal/scheduler"
|
|
)
|
|
|
|
func main() {
|
|
cfg := config.Load()
|
|
name := cfg.ServiceName
|
|
if name == "" {
|
|
name = "evobgp-scheduler"
|
|
}
|
|
log.Printf("%s starting (reference profile worker)", name)
|
|
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
|
|
defer stop()
|
|
|
|
bctx, bcancel := context.WithTimeout(context.Background(), 90*time.Second)
|
|
defer bcancel()
|
|
opts := httpapi.Options{
|
|
DatabaseURL: strings.TrimSpace(os.Getenv("EVOBGP_DATABASE_URL")),
|
|
SeedDemo: os.Getenv("EVOBGP_SEED_DEMO") != "0",
|
|
}
|
|
st, reg, pool, err := httpapi.BootstrapWorkers(bctx, opts)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
if pool != nil {
|
|
defer pool.Close()
|
|
}
|
|
|
|
apiBase := strings.TrimSpace(os.Getenv("EVOBGP_CONTROL_PLANE_URL"))
|
|
apiTok := strings.TrimSpace(os.Getenv("EVOBGP_SCHEDULER_BEARER"))
|
|
deps := &scheduler.Deps{
|
|
Store: st,
|
|
HTTP: &http.Client{Timeout: 45 * time.Second},
|
|
}
|
|
if (apiBase != "") != (apiTok != "") {
|
|
log.Fatal("evobgp-scheduler: set both EVOBGP_CONTROL_PLANE_URL and EVOBGP_SCHEDULER_BEARER for HTTP mode, or leave both empty for in-process job registry")
|
|
}
|
|
if apiBase != "" {
|
|
deps.APIBase = apiBase
|
|
deps.APIToken = apiTok
|
|
log.Printf("evobgp-scheduler: control plane HTTP mode (%s)", apiBase)
|
|
} else {
|
|
deps.Jobs = reg
|
|
log.Printf("evobgp-scheduler: in-process job registry mode (use EVOBGP_CONTROL_PLANE_URL + EVOBGP_SCHEDULER_BEARER for split containers)")
|
|
}
|
|
scheduler.Run(ctx, deps)
|
|
}
|