some api changes

This commit is contained in:
ston1th 2021-10-19 21:24:14 +02:00
commit 70fd3f71e5
11 changed files with 118 additions and 76 deletions

View file

@ -3,6 +3,7 @@ package main
import (
"errors"
"flag"
"fmt"
"os"
"os/signal"
"syscall"
@ -14,10 +15,12 @@ import (
"git.giftfish.de/ston1th/haproxy-lb/pkg/controller"
"git.giftfish.de/ston1th/haproxy-lb/pkg/etcd"
"git.giftfish.de/ston1th/haproxy-lb/pkg/raft"
"github.com/go-logr/logr"
//"github.com/iand/logfmtr"
"git.giftfish.de/ston1th/logfmtr"
//"git.giftfish.de/ston1th/logfmtr"
"github.com/go-logr/logr"
"github.com/go-logr/logr/funcr"
)
var (
@ -34,42 +37,52 @@ func fatal(err error, msg string) {
}
func main() {
logopts := logfmtr.DefaultOptions()
logopts.TimestampFormat = "2006-01-02T15:04:05.000Z-0700"
logopts.AddCaller = true
logopts.CallerSkip = 1
logopts.Timezone = true
logfmtr.UseOptions(logopts)
//logopts := logfmtr.DefaultOptions()
//logopts.TimestampFormat = "2006-01-02T15:04:05.000Z-0700"
//logopts.AddCaller = true
//logopts.CallerSkip = 1
//logopts.Timezone = true
//logfmtr.UseOptions(logopts)
flag.IntVar(&verbosity, "v", verbosity, "number for the log level verbosity")
flag.StringVar(&configFile, "config", "haproxy-lb.yaml", "haproxy-lb config file")
flag.Parse()
logfmtr.SetVerbosity(verbosity)
log = logfmtr.New().WithName("main")
//logfmtr.SetVerbosity(verbosity)
//log = logfmtr.New()
log.Info("starting haproxy-lb", "version", version)
log = funcr.New(
func(pfx, args string) { fmt.Println("bla", pfx, args) },
funcr.Options{
LogCaller: funcr.All,
LogTimestamp: true,
},
)
l := log.WithName("main")
l.Info("starting haproxy-lb", "version", version)
cfg, err := config.ParseFile(configFile)
if err != nil {
fatal(err, "init failed")
fatal(err, "config init failed")
}
var c cluster.Cluster
if cfg.Cluster.Raft != nil {
log.Info("creating cluster", "mode", "raft")
c = raft.NewCluster(logfmtr.New().WithName("raft"))
l.Info("creating cluster", "mode", "raft")
c = raft.NewCluster(log.WithName("raft"))
} else if cfg.Cluster.Etcd != nil {
log.Info("creating cluster", "mode", "etcd")
c = etcd.NewCluster(logfmtr.New().WithName("etcd"))
l.Info("creating cluster", "mode", "etcd")
c = etcd.NewCluster(log.WithName("etcd"))
}
log.Info("starting api server", "address", cfg.APIServer.Listen, "tls", cfg.APIServer.TLS != nil, "auth", !cfg.APIServer.DisableAuth)
srv, err := api.NewServer(cfg, logfmtr.New().WithName("api"))
l.Info("starting api server", "address", cfg.APIServer.Listen, "tls", cfg.APIServer.TLS != nil, "auth", !cfg.APIServer.DisableAuth)
srv, err := api.NewServer(cfg, log.WithName("api"))
if err != nil {
fatal(err, "init failed")
}
log.Info("starting vip-controller")
callbacks, err := controller.NewLBController(cfg, srv, logfmtr.New().WithName("vip-controller"))
l.Info("starting vip-controller")
callbacks, err := controller.NewLBController(cfg, srv, log.WithName("vip-controller"))
if err != nil {
fatal(err, "init failed")
}
@ -81,7 +94,7 @@ func main() {
for {
err = c.Start(cfg)
if err == cluster.ErrRestart {
log.Error(err, "received restart signal. restarting cluster controller.")
l.Error(err, "received restart signal. restarting cluster controller.")
c.Reset()
time.Sleep(time.Second)
continue
@ -102,16 +115,16 @@ func main() {
sigs := make(chan os.Signal, 1)
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
s := <-sigs
log.Info("haproxy-lb shutdown", "signal", s.String())
l.Info("haproxy-lb shutdown", "signal", s.String())
go func() {
select {
case <-time.After(time.Second * 20):
log.Error(errors.New("shutdown took longer than 20 seconds"), "shutdown forced")
l.Error(errors.New("shutdown took longer than 20 seconds"), "shutdown forced")
case <-sigs:
log.Error(errors.New("force shutdown triggerd"), "shutdown forced")
l.Error(errors.New("force shutdown triggerd"), "shutdown forced")
}
os.Exit(1)
}()
c.Stop()
log.Info("haproxy-lb stopped")
l.Info("haproxy-lb stopped")
}