From 86facb3f9166c16f12970acc2e0494cc3323ec6e Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Thu, 23 Oct 2014 11:21:20 -0700 Subject: [PATCH] etcdhttp: sort member --- etcdserver/etcdhttp/http.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/etcdserver/etcdhttp/http.go b/etcdserver/etcdhttp/http.go index 67fb416e0..6a91b393a 100644 --- a/etcdserver/etcdhttp/http.go +++ b/etcdserver/etcdhttp/http.go @@ -25,6 +25,7 @@ import ( "net/http" "net/url" "path" + "sort" "strconv" "strings" "time" @@ -160,10 +161,11 @@ func (h serverHandler) serveAdminMembers(w http.ResponseWriter, r *http.Request) idStr := strings.TrimPrefix(r.URL.Path, adminMembersPrefix) if idStr == "" { msmap := h.clusterStore.Get().Members() - ms := make([]*etcdserver.Member, 0, len(msmap)) + ms := make(SortableMemberSlice, 0, len(msmap)) for _, m := range msmap { ms = append(ms, m) } + sort.Sort(ms) w.Header().Set("Content-Type", "application/json") if err := json.NewEncoder(w).Encode(ms); err != nil { log.Printf("etcdhttp: %v", err) @@ -580,3 +582,9 @@ func trimNodeExternPrefix(n *store.NodeExtern, prefix string) *store.NodeExtern } 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] }