first working version
This commit is contained in:
parent
372915e24d
commit
6da132106f
18 changed files with 519 additions and 96 deletions
|
|
@ -19,7 +19,7 @@ func NewLBController(cfg *config.Config, srv *api.Server, log logr.Logger) (call
|
|||
if err != nil {
|
||||
return
|
||||
}
|
||||
ha, err := haproxy.NewHAProxyManager(cfg.HAProxyConfig)
|
||||
ha, err := haproxy.NewHAProxyManager(cfg.HAProxyConfig, cfg.HAProxyService)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
|
@ -27,7 +27,14 @@ func NewLBController(cfg *config.Config, srv *api.Server, log logr.Logger) (call
|
|||
callbacks = cluster.Callbacks{
|
||||
Leader: func(ctx context.Context, cc cluster.CallbackContext) {
|
||||
db := db.New(cc)
|
||||
err := srv.UpdateDB(db)
|
||||
cc.V(2).Info("starting haproxy", "service", cfg.HAProxyService)
|
||||
err := ha.Start(ctx)
|
||||
if err != nil {
|
||||
cc.Error(err, "error starting haproxy")
|
||||
cc.Fatal(err)
|
||||
return
|
||||
}
|
||||
err = srv.UpdateDB(db)
|
||||
if err != nil {
|
||||
cc.Error(err, "error initialising api server as leader")
|
||||
cc.Fatal(err)
|
||||
|
|
@ -44,15 +51,21 @@ func NewLBController(cfg *config.Config, srv *api.Server, log logr.Logger) (call
|
|||
}
|
||||
for {
|
||||
cc.Info("leading", "id", cc.ID())
|
||||
ips, err := db.GetIPs()
|
||||
ips, err := db.GetDeletedIPs()
|
||||
if err != nil && err != cluster.ErrPrefixNotFound {
|
||||
cc.Error(err, "error reading ip list")
|
||||
cc.Error(err, "error reading deleted ips list")
|
||||
<-t.C
|
||||
continue
|
||||
}
|
||||
deleteIPs(cc, n, ips)
|
||||
|
||||
ips, err = db.GetIPs()
|
||||
if err != nil && err != cluster.ErrPrefixNotFound {
|
||||
cc.Error(err, "error reading ips list")
|
||||
<-t.C
|
||||
continue
|
||||
}
|
||||
addIPs(cc, n, ips)
|
||||
// TODO
|
||||
// deleted LB IPs need to be removed
|
||||
|
||||
lbs, err := db.GetLBs("")
|
||||
if err != nil && err != cluster.ErrPrefixNotFound {
|
||||
|
|
@ -76,6 +89,11 @@ func NewLBController(cfg *config.Config, srv *api.Server, log logr.Logger) (call
|
|||
case <-ctx.Done():
|
||||
t.Stop()
|
||||
deleteIPs(cc, n, ips)
|
||||
cc.V(2).Info("stopping haproxy", "service", cfg.HAProxyService)
|
||||
err = ha.Stop(context.Background())
|
||||
if err != nil {
|
||||
cc.Error(err, "error stopping haproxy")
|
||||
}
|
||||
cc.Info("leading canceled", "id", cc.ID())
|
||||
return
|
||||
case <-t.C:
|
||||
|
|
@ -101,14 +119,6 @@ func NewLBController(cfg *config.Config, srv *api.Server, log logr.Logger) (call
|
|||
}
|
||||
for {
|
||||
cc.Info("following", "id", cc.ID())
|
||||
//TODO
|
||||
//ips, err := db.GetIPs()
|
||||
//if err != nil {
|
||||
// cc.Error("error getting config key", err)
|
||||
// <-t.C
|
||||
// continue
|
||||
//}
|
||||
//deleteIPs(cc, n, ips)
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
t.Stop()
|
||||
Loading…
Add table
Add a link
Reference in a new issue