56 lines
1 KiB
Go
56 lines
1 KiB
Go
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
|
|
}
|