mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
client: elevate context to caller of MembersAPI
This commit is contained in:
@@ -75,9 +75,9 @@ func (c *httpClusterClient) Do(ctx context.Context, act HTTPAction) (*http.Respo
|
||||
return c.endpoints[0].Do(ctx, act)
|
||||
}
|
||||
|
||||
func (c *httpClusterClient) Sync() error {
|
||||
mAPI := NewMembersAPI(c, DefaultRequestTimeout)
|
||||
ms, err := mAPI.List()
|
||||
func (c *httpClusterClient) Sync(ctx context.Context) error {
|
||||
mAPI := NewMembersAPI(c)
|
||||
ms, err := mAPI.List(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -23,7 +23,6 @@ import (
|
||||
"net/http"
|
||||
"net/url"
|
||||
"path"
|
||||
"time"
|
||||
|
||||
"github.com/coreos/etcd/Godeps/_workspace/src/code.google.com/p/go.net/context"
|
||||
"github.com/coreos/etcd/etcdserver/etcdhttp/httptypes"
|
||||
@@ -34,29 +33,25 @@ var (
|
||||
DefaultV2MembersPrefix = "/v2/members"
|
||||
)
|
||||
|
||||
func NewMembersAPI(c httpActionDo, to time.Duration) MembersAPI {
|
||||
func NewMembersAPI(c httpActionDo) MembersAPI {
|
||||
return &httpMembersAPI{
|
||||
client: c,
|
||||
timeout: to,
|
||||
client: c,
|
||||
}
|
||||
}
|
||||
|
||||
type MembersAPI interface {
|
||||
List() ([]httptypes.Member, error)
|
||||
Add(peerURL string) (*httptypes.Member, error)
|
||||
Remove(mID string) error
|
||||
List(ctx context.Context) ([]httptypes.Member, error)
|
||||
Add(ctx context.Context, peerURL string) (*httptypes.Member, error)
|
||||
Remove(ctx context.Context, mID string) error
|
||||
}
|
||||
|
||||
type httpMembersAPI struct {
|
||||
client httpActionDo
|
||||
timeout time.Duration
|
||||
client httpActionDo
|
||||
}
|
||||
|
||||
func (m *httpMembersAPI) List() ([]httptypes.Member, error) {
|
||||
func (m *httpMembersAPI) List(ctx context.Context) ([]httptypes.Member, error) {
|
||||
req := &membersAPIActionList{}
|
||||
ctx, cancel := context.WithTimeout(context.Background(), m.timeout)
|
||||
resp, body, err := m.client.Do(ctx, req)
|
||||
cancel()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -73,16 +68,14 @@ func (m *httpMembersAPI) List() ([]httptypes.Member, error) {
|
||||
return []httptypes.Member(mCollection), nil
|
||||
}
|
||||
|
||||
func (m *httpMembersAPI) Add(peerURL string) (*httptypes.Member, error) {
|
||||
func (m *httpMembersAPI) Add(ctx context.Context, peerURL string) (*httptypes.Member, error) {
|
||||
urls, err := types.NewURLs([]string{peerURL})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
req := &membersAPIActionAdd{peerURLs: urls}
|
||||
ctx, cancel := context.WithTimeout(context.Background(), m.timeout)
|
||||
resp, body, err := m.client.Do(ctx, req)
|
||||
cancel()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -99,11 +92,9 @@ func (m *httpMembersAPI) Add(peerURL string) (*httptypes.Member, error) {
|
||||
return &memb, nil
|
||||
}
|
||||
|
||||
func (m *httpMembersAPI) Remove(memberID string) error {
|
||||
func (m *httpMembersAPI) Remove(ctx context.Context, memberID string) error {
|
||||
req := &membersAPIActionRemove{memberID: memberID}
|
||||
ctx, cancel := context.WithTimeout(context.Background(), m.timeout)
|
||||
resp, _, err := m.client.Do(ctx, req)
|
||||
cancel()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user