client: alias etcdserver/etcdhttp/httptypes.Member
This commit is contained in:

committed by
Yicheng Qin

parent
932351a00d
commit
7255fb1b62
@ -31,6 +31,8 @@ var (
|
|||||||
defaultV2MembersPrefix = "/v2/members"
|
defaultV2MembersPrefix = "/v2/members"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type Member httptypes.Member
|
||||||
|
|
||||||
// NewMembersAPI constructs a new MembersAPI that uses HTTP to
|
// NewMembersAPI constructs a new MembersAPI that uses HTTP to
|
||||||
// interact with etcd's membership API.
|
// interact with etcd's membership API.
|
||||||
func NewMembersAPI(c Client) MembersAPI {
|
func NewMembersAPI(c Client) MembersAPI {
|
||||||
@ -40,8 +42,8 @@ func NewMembersAPI(c Client) MembersAPI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type MembersAPI interface {
|
type MembersAPI interface {
|
||||||
List(ctx context.Context) ([]httptypes.Member, error)
|
List(ctx context.Context) ([]Member, error)
|
||||||
Add(ctx context.Context, peerURL string) (*httptypes.Member, error)
|
Add(ctx context.Context, peerURL string) (*Member, error)
|
||||||
Remove(ctx context.Context, mID string) error
|
Remove(ctx context.Context, mID string) error
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,7 +51,7 @@ type httpMembersAPI struct {
|
|||||||
client httpClient
|
client httpClient
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *httpMembersAPI) List(ctx context.Context) ([]httptypes.Member, error) {
|
func (m *httpMembersAPI) List(ctx context.Context) ([]Member, error) {
|
||||||
req := &membersAPIActionList{}
|
req := &membersAPIActionList{}
|
||||||
resp, body, err := m.client.Do(ctx, req)
|
resp, body, err := m.client.Do(ctx, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -65,10 +67,15 @@ func (m *httpMembersAPI) List(ctx context.Context) ([]httptypes.Member, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return []httptypes.Member(mCollection), nil
|
ms := make([]Member, len(mCollection))
|
||||||
|
for i, m := range mCollection {
|
||||||
|
m := Member(m)
|
||||||
|
ms[i] = m
|
||||||
|
}
|
||||||
|
return ms, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *httpMembersAPI) Add(ctx context.Context, peerURL string) (*httptypes.Member, error) {
|
func (m *httpMembersAPI) Add(ctx context.Context, peerURL string) (*Member, error) {
|
||||||
urls, err := types.NewURLs([]string{peerURL})
|
urls, err := types.NewURLs([]string{peerURL})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -92,7 +99,7 @@ func (m *httpMembersAPI) Add(ctx context.Context, peerURL string) (*httptypes.Me
|
|||||||
return nil, httperr
|
return nil, httperr
|
||||||
}
|
}
|
||||||
|
|
||||||
var memb httptypes.Member
|
var memb Member
|
||||||
if err := json.Unmarshal(body, &memb); err != nil {
|
if err := json.Unmarshal(body, &memb); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,6 @@ import (
|
|||||||
"github.com/coreos/etcd/client"
|
"github.com/coreos/etcd/client"
|
||||||
"github.com/coreos/etcd/etcdserver"
|
"github.com/coreos/etcd/etcdserver"
|
||||||
"github.com/coreos/etcd/etcdserver/etcdhttp"
|
"github.com/coreos/etcd/etcdserver/etcdhttp"
|
||||||
"github.com/coreos/etcd/etcdserver/etcdhttp/httptypes"
|
|
||||||
"github.com/coreos/etcd/pkg/testutil"
|
"github.com/coreos/etcd/pkg/testutil"
|
||||||
"github.com/coreos/etcd/pkg/transport"
|
"github.com/coreos/etcd/pkg/transport"
|
||||||
"github.com/coreos/etcd/pkg/types"
|
"github.com/coreos/etcd/pkg/types"
|
||||||
@ -280,8 +279,8 @@ func (c *cluster) URLs() []string {
|
|||||||
return urls
|
return urls
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *cluster) HTTPMembers() []httptypes.Member {
|
func (c *cluster) HTTPMembers() []client.Member {
|
||||||
ms := make([]httptypes.Member, len(c.Members))
|
ms := make([]client.Member, len(c.Members))
|
||||||
for i, m := range c.Members {
|
for i, m := range c.Members {
|
||||||
ms[i].Name = m.Name
|
ms[i].Name = m.Name
|
||||||
for _, ln := range m.PeerListeners {
|
for _, ln := range m.PeerListeners {
|
||||||
@ -310,7 +309,7 @@ func (c *cluster) AddMember(t *testing.T) {
|
|||||||
cancel()
|
cancel()
|
||||||
|
|
||||||
// wait for the add node entry applied in the cluster
|
// wait for the add node entry applied in the cluster
|
||||||
members := append(c.HTTPMembers(), httptypes.Member{PeerURLs: []string{peerURL}, ClientURLs: []string{}})
|
members := append(c.HTTPMembers(), client.Member{PeerURLs: []string{peerURL}, ClientURLs: []string{}})
|
||||||
c.waitMembersMatch(t, members)
|
c.waitMembersMatch(t, members)
|
||||||
|
|
||||||
for _, ln := range m.PeerListeners {
|
for _, ln := range m.PeerListeners {
|
||||||
@ -363,7 +362,7 @@ func (c *cluster) Terminate(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *cluster) waitMembersMatch(t *testing.T, membs []httptypes.Member) {
|
func (c *cluster) waitMembersMatch(t *testing.T, membs []client.Member) {
|
||||||
for _, u := range c.URLs() {
|
for _, u := range c.URLs() {
|
||||||
cc := mustNewHTTPClient(t, []string{u})
|
cc := mustNewHTTPClient(t, []string{u})
|
||||||
ma := client.NewMembersAPI(cc)
|
ma := client.NewMembersAPI(cc)
|
||||||
@ -406,7 +405,7 @@ func (c *cluster) name(i int) string {
|
|||||||
|
|
||||||
// isMembersEqual checks whether two members equal except ID field.
|
// isMembersEqual checks whether two members equal except ID field.
|
||||||
// The given wmembs should always set ID field to empty string.
|
// The given wmembs should always set ID field to empty string.
|
||||||
func isMembersEqual(membs []httptypes.Member, wmembs []httptypes.Member) bool {
|
func isMembersEqual(membs []client.Member, wmembs []client.Member) bool {
|
||||||
sort.Sort(SortableMemberSliceByPeerURLs(membs))
|
sort.Sort(SortableMemberSliceByPeerURLs(membs))
|
||||||
sort.Sort(SortableMemberSliceByPeerURLs(wmembs))
|
sort.Sort(SortableMemberSliceByPeerURLs(wmembs))
|
||||||
for i := range membs {
|
for i := range membs {
|
||||||
@ -631,7 +630,7 @@ func mustNewTransport(t *testing.T) *http.Transport {
|
|||||||
return tr
|
return tr
|
||||||
}
|
}
|
||||||
|
|
||||||
type SortableMemberSliceByPeerURLs []httptypes.Member
|
type SortableMemberSliceByPeerURLs []client.Member
|
||||||
|
|
||||||
func (p SortableMemberSliceByPeerURLs) Len() int { return len(p) }
|
func (p SortableMemberSliceByPeerURLs) Len() int { return len(p) }
|
||||||
func (p SortableMemberSliceByPeerURLs) Less(i, j int) bool {
|
func (p SortableMemberSliceByPeerURLs) Less(i, j int) bool {
|
||||||
|
Reference in New Issue
Block a user