migrated to external IP allocator
This commit is contained in:
parent
8672452033
commit
e2449b425e
15 changed files with 478 additions and 194 deletions
70
pkg/db/db.go
70
pkg/db/db.go
|
|
@ -1,15 +1,19 @@
|
|||
package db
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
schemav1 "git.giftfish.de/ston1th/haproxy-lb/pkg/api/v1/schema"
|
||||
"git.giftfish.de/ston1th/haproxy-lb/pkg/cluster"
|
||||
)
|
||||
|
||||
type DB struct {
|
||||
sync.Mutex
|
||||
kv cluster.KV
|
||||
}
|
||||
|
||||
func New(kv cluster.KV) *DB {
|
||||
return &DB{kv}
|
||||
return &DB{kv: kv}
|
||||
}
|
||||
|
||||
const (
|
||||
|
|
@ -20,12 +24,12 @@ const (
|
|||
)
|
||||
|
||||
func (db *DB) GetIPs() (ips []string, err error) {
|
||||
m, err := db.kv.GetPrefix(namePrefix)
|
||||
m, err := db.kv.GetPrefix(ipPrefix)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
for _, v := range m {
|
||||
ips = append(ips, string(v))
|
||||
for k := range m {
|
||||
ips = append(ips, k)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
@ -40,36 +44,18 @@ func (db *DB) GetDeletedIPs() (ips []string, err error) {
|
|||
}
|
||||
return
|
||||
}
|
||||
func (db *DB) GetName(ip string) (string, error) {
|
||||
v, err := db.kv.Get(ipPrefix + ip)
|
||||
return string(v), err
|
||||
}
|
||||
func (db *DB) IPExists(ip string) bool {
|
||||
_, err := db.GetName(ip)
|
||||
return err == nil
|
||||
}
|
||||
func (db *DB) SetIPName(ip, name string) error {
|
||||
err := db.kv.Set(ipPrefix+ip, []byte(name))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return db.kv.Set(namePrefix+name, []byte(ip))
|
||||
}
|
||||
func (db *DB) DeleteIPName(ip, name string) error {
|
||||
err := db.kv.Delete(ipPrefix + ip)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = db.kv.Delete(namePrefix + name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return db.kv.Set(delPrefix+ip, nil)
|
||||
}
|
||||
|
||||
func (db *DB) GetIP(name string) (string, error) {
|
||||
v, err := db.kv.Get(namePrefix + name)
|
||||
return string(v), err
|
||||
func (db *DB) GetCIDR(name string) (cidr string, err error) {
|
||||
b, err := db.GetLB(name)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
lb, err := schemav1.NewLoadBalancerFromBytes(b)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
cidr = lb.CIDR
|
||||
return
|
||||
}
|
||||
|
||||
func (db *DB) GetLBs(cl string) (lbs map[string][]byte, err error) {
|
||||
|
|
@ -103,3 +89,21 @@ func (db *DB) SetLB(name string, lb []byte) error {
|
|||
func (db *DB) DeleteLB(name string) error {
|
||||
return db.kv.Delete(lbPrefix + name)
|
||||
}
|
||||
|
||||
func (db *DB) Exists(key string) (bool, error) {
|
||||
_, err := db.kv.Get(ipPrefix + key)
|
||||
if err == cluster.ErrKeyNotFound {
|
||||
return false, nil
|
||||
}
|
||||
return err == nil, err
|
||||
}
|
||||
func (db *DB) Add(key string) error {
|
||||
return db.kv.Set(ipPrefix+key, nil)
|
||||
}
|
||||
func (db *DB) Delete(key string) error {
|
||||
err := db.kv.Delete(ipPrefix + key)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return db.kv.Set(delPrefix+key, nil)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue