new logger and etcd fixes

This commit is contained in:
ston1th 2021-10-09 16:52:06 +02:00
commit cbd4f38cca
11 changed files with 248 additions and 161 deletions

View file

@ -1,7 +1,9 @@
package db
import (
"errors"
"sync"
"time"
schemav1 "git.giftfish.de/ston1th/haproxy-lb/pkg/api/v1/schema"
"git.giftfish.de/ston1th/haproxy-lb/pkg/cluster"
@ -34,17 +36,37 @@ func (db *DB) GetIPs() (ips []string, err error) {
return
}
func (db *DB) GetDeletedIPs() (ips []string, err error) {
m, err := db.kv.GetPrefix(delPrefix)
if err != nil {
return
}
for k := range m {
ips = append(ips, k)
db.kv.Delete(delPrefix + k)
}
err = timeout(func() error {
m, err := db.kv.GetPrefix(delPrefix)
if err != nil {
return err
}
for k := range m {
ips = append(ips, k)
db.kv.Delete(delPrefix + k)
}
return nil
})
return
}
func timeout(f func() error) error {
return timeoutWithDuration(f, time.Second*3)
}
func timeoutWithDuration(f func() error, d time.Duration) error {
c := make(chan error, 1)
go func() {
e := f()
c <- e
}()
select {
case err := <-c:
return err
case <-time.After(d):
return errors.New("timeout")
}
}
func (db *DB) GetCIDR(name string) (cidr string, err error) {
b, err := db.GetLB(name)
if err != nil {