diff --git a/clientv3/cluster.go b/clientv3/cluster.go index ab2825b10..922d900e3 100644 --- a/clientv3/cluster.go +++ b/clientv3/cluster.go @@ -50,6 +50,10 @@ func NewCluster(c *Client) Cluster { return &cluster{remote: RetryClusterClient(c)} } +func NewClusterFromClusterClient(remote pb.ClusterClient) Cluster { + return &cluster{remote: remote} +} + func (c *cluster) MemberAdd(ctx context.Context, peerAddrs []string) (*MemberAddResponse, error) { r := &pb.MemberAddRequest{PeerURLs: peerAddrs} resp, err := c.remote.MemberAdd(ctx, r) diff --git a/etcdserver/api/v3client/v3client.go b/etcdserver/api/v3client/v3client.go index 2bcd64a1b..f2799e56e 100644 --- a/etcdserver/api/v3client/v3client.go +++ b/etcdserver/api/v3client/v3client.go @@ -42,5 +42,10 @@ func New(s *etcdserver.EtcdServer) *clientv3.Client { mc := adapter.MaintenanceServerToMaintenanceClient(v3rpc.NewMaintenanceServer(s)) c.Maintenance = clientv3.NewMaintenanceFromMaintenanceClient(mc) + clc := adapter.ClusterServerToClusterClient(v3rpc.NewClusterServer(s)) + c.Cluster = clientv3.NewClusterFromClusterClient(clc) + + // TODO: implement clientv3.Auth interface? + return c }