more work done

This commit is contained in:
ston1th 2021-03-06 16:51:36 +01:00
commit 6fda229a8e
23 changed files with 384 additions and 177 deletions

56
pkg/db/db.go Normal file
View file

@ -0,0 +1,56 @@
package db
import (
"git.giftfish.de/ston1th/haproxy-lb/pkg/cluster"
)
type DB struct {
kv cluster.KV
}
func New(kv cluster.KV) *DB {
return &DB{kv}
}
const (
ipPrefix = "/ip/"
namePrefix = "/name/"
)
func (db *DB) GetIPs() (ips []string, err error) {
m, err := db.kv.GetPrefix(namePrefix)
if err != nil {
return
}
for _, v := range m {
ips = append(ips, string(v))
}
return
}
func (db *DB) GetIP(ip string) (string, error) {
v, err := db.kv.Get(ipPrefix + ip)
return string(v), err
}
func (db *DB) IPExists(ip string) bool {
_, err := db.GetIP(ipPrefix + ip)
return err == nil
}
func (db *DB) SetIP(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) DeleteIP(ip, name string) error {
err := db.kv.Delete(ipPrefix + ip)
if err != nil {
return err
}
return db.kv.Delete(namePrefix + name)
}
func (db *DB) GetName(name string) (string, error) {
v, err := db.kv.Get(namePrefix + name)
return string(v), err
}