mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdhttp: sort member
This commit is contained in:
parent
8d6bb4a471
commit
86facb3f91
@ -25,6 +25,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"path"
|
"path"
|
||||||
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
@ -160,10 +161,11 @@ func (h serverHandler) serveAdminMembers(w http.ResponseWriter, r *http.Request)
|
|||||||
idStr := strings.TrimPrefix(r.URL.Path, adminMembersPrefix)
|
idStr := strings.TrimPrefix(r.URL.Path, adminMembersPrefix)
|
||||||
if idStr == "" {
|
if idStr == "" {
|
||||||
msmap := h.clusterStore.Get().Members()
|
msmap := h.clusterStore.Get().Members()
|
||||||
ms := make([]*etcdserver.Member, 0, len(msmap))
|
ms := make(SortableMemberSlice, 0, len(msmap))
|
||||||
for _, m := range msmap {
|
for _, m := range msmap {
|
||||||
ms = append(ms, m)
|
ms = append(ms, m)
|
||||||
}
|
}
|
||||||
|
sort.Sort(ms)
|
||||||
w.Header().Set("Content-Type", "application/json")
|
w.Header().Set("Content-Type", "application/json")
|
||||||
if err := json.NewEncoder(w).Encode(ms); err != nil {
|
if err := json.NewEncoder(w).Encode(ms); err != nil {
|
||||||
log.Printf("etcdhttp: %v", err)
|
log.Printf("etcdhttp: %v", err)
|
||||||
@ -580,3 +582,9 @@ func trimNodeExternPrefix(n *store.NodeExtern, prefix string) *store.NodeExtern
|
|||||||
}
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type SortableMemberSlice []*etcdserver.Member
|
||||||
|
|
||||||
|
func (s SortableMemberSlice) Len() int { return len(s) }
|
||||||
|
func (s SortableMemberSlice) Less(i, j int) bool { return s[i].ID < s[j].ID }
|
||||||
|
func (s SortableMemberSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user