added netbox allocator
This commit is contained in:
parent
fef86deac8
commit
cef74df3e8
10 changed files with 195 additions and 53 deletions
|
|
@ -13,6 +13,7 @@ import (
|
|||
"git.giftfish.de/ston1th/haproxy-lb/pkg/db"
|
||||
|
||||
"git.giftfish.de/ston1th/netalloc"
|
||||
"git.giftfish.de/ston1th/netalloc/netbox"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
"github.com/gorilla/mux"
|
||||
|
|
@ -25,7 +26,6 @@ type Server struct {
|
|||
log logr.Logger
|
||||
|
||||
Data *types.ContextData
|
||||
cidr string
|
||||
|
||||
init chan struct{}
|
||||
stop chan struct{}
|
||||
|
|
@ -33,6 +33,9 @@ type Server struct {
|
|||
|
||||
tlsConfig *tls.Config
|
||||
listen net.Listener
|
||||
|
||||
prefix string
|
||||
store config.Store
|
||||
}
|
||||
|
||||
type notFoundHandler struct {
|
||||
|
|
@ -48,17 +51,19 @@ func NewServer(c *config.Config, log logr.Logger) (*Server, error) {
|
|||
s := &Server{
|
||||
mux: mux.NewRouter(),
|
||||
log: log,
|
||||
cidr: c.VIP.Prefix,
|
||||
Data: &types.ContextData{},
|
||||
|
||||
init: make(chan struct{}),
|
||||
stop: make(chan struct{}),
|
||||
stopKeyReset: make(chan struct{}),
|
||||
}
|
||||
s.Data.Auth = types.NewAuth(c.Server.BasicAuth)
|
||||
|
||||
if c.Server.TLS != nil {
|
||||
cert, err := tls.LoadX509KeyPair(c.Server.TLS.Cert, c.Server.TLS.Key)
|
||||
prefix: c.VIP.Prefix,
|
||||
store: c.VIP.Store,
|
||||
}
|
||||
s.Data.Auth = types.NewAuth(c.APIServer.BasicAuth)
|
||||
|
||||
if c.APIServer.TLS != nil {
|
||||
cert, err := tls.LoadX509KeyPair(c.APIServer.TLS.Cert, c.APIServer.TLS.Key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -83,13 +88,13 @@ func NewServer(c *config.Config, log logr.Logger) (*Server, error) {
|
|||
PreferServerCipherSuites: true,
|
||||
Certificates: []tls.Certificate{cert},
|
||||
}
|
||||
l, err := tls.Listen("tcp", c.Server.Listen, s.tlsConfig)
|
||||
l, err := tls.Listen("tcp", c.APIServer.Listen, s.tlsConfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
s.listen = l
|
||||
} else {
|
||||
l, err := net.Listen("tcp", c.Server.Listen)
|
||||
l, err := net.Listen("tcp", c.APIServer.Listen)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -107,15 +112,32 @@ func NewServer(c *config.Config, log logr.Logger) (*Server, error) {
|
|||
func (s *Server) UpdateDB(db *db.DB, leader bool) error {
|
||||
s.Data.DB = db
|
||||
s.Data.Leader = leader
|
||||
if s.Data.Net == nil {
|
||||
na, err := netalloc.NewGenericAlloc(db, s.cidr)
|
||||
if err != nil {
|
||||
return err
|
||||
if s.store.Local != nil {
|
||||
if s.Data.Net == nil {
|
||||
na, err := netalloc.NewGenericAlloc(db, s.prefix)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
s.Data.Net = na
|
||||
close(s.init)
|
||||
} else {
|
||||
s.Data.Net.SetStore(db)
|
||||
}
|
||||
s.Data.Net = na
|
||||
close(s.init)
|
||||
} else {
|
||||
s.Data.Net.SetStore(db)
|
||||
if s.Data.Net == nil {
|
||||
nb := s.store.Netbox
|
||||
na, err := netbox.NewAllocator(
|
||||
netbox.WithEndpoint(nb.Endpoint),
|
||||
netbox.WithToken(nb.Token),
|
||||
netbox.WithPrefix(s.prefix),
|
||||
netbox.WithInsecureClient(nb.Insecure),
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
s.Data.Net = na
|
||||
close(s.init)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue