1
0
mirror of https://github.com/gluster/glusterd2.git synced 2026-02-05 12:45:38 +01:00
Files
glusterd2/pkg/elasticetcd/utils.go

84 lines
1.4 KiB
Go

package elasticetcd
import (
"strings"
"github.com/coreos/etcd/clientv3"
"github.com/coreos/etcd/pkg/types"
)
func urlsMapFromGetResp(resp *clientv3.GetResponse, prefix string) (types.URLsMap, error) {
urlsmap := make(types.URLsMap)
for _, kv := range resp.Kvs {
k := string(kv.Key)
v := string(kv.Value)
if prefix != "" {
k = strings.TrimSpace(strings.TrimPrefix(k, prefix))
}
if k == "" {
continue
}
urls, err := types.NewURLs(strings.Split(v, ","))
if err != nil {
return nil, err
}
urlsmap[k] = urls
}
return urlsmap, nil
}
func keysFromGetResp(resp *clientv3.GetResponse, prefix string) []string {
var keys []string
for _, kv := range resp.Kvs {
k := string(kv.Key)
if prefix != "" {
k = strings.TrimSpace(strings.TrimPrefix(k, prefix))
}
if k == "" {
continue
}
keys = append(keys, k)
}
return keys
}
// compareStringSlices compares two sorted slices
func compareStringSlices(a, b []string) bool {
if len(a) != len(b) {
return false
}
for i, v := range a {
if v != b[i] {
return false
}
}
return true
}
// diffStringSlices returns a slice with items which are unique to the first
func diffStringSlices(a, b []string) []string {
var diff []string
bmap := make(map[string]bool)
for _, v := range b {
bmap[v] = true
}
for _, v := range a {
if _, in := bmap[v]; !in {
diff = append(diff, v)
}
}
return diff
}