From 379d04ea537a76aebc00f8e7d8fedf667bbe6259 Mon Sep 17 00:00:00 2001 From: Hitoshi Mitake Date: Wed, 2 Mar 2016 14:57:40 +0900 Subject: [PATCH] clientv3: a new interface Auth for auth related RPCs --- clientv3/auth.go | 51 ++++++++++++++++++++++++++++++++++++++++++++++ clientv3/client.go | 2 ++ 2 files changed, 53 insertions(+) create mode 100644 clientv3/auth.go diff --git a/clientv3/auth.go b/clientv3/auth.go new file mode 100644 index 000000000..42062fc72 --- /dev/null +++ b/clientv3/auth.go @@ -0,0 +1,51 @@ +// Copyright 2016 Nippon Telegraph and Telephone Corporation. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package clientv3 + +import ( + "github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context" + "github.com/coreos/etcd/Godeps/_workspace/src/google.golang.org/grpc" + pb "github.com/coreos/etcd/etcdserver/etcdserverpb" +) + +type ( + AuthEnableResponse pb.AuthEnableResponse +) + +type Auth interface { + // AuthEnable enables auth of a etcd cluster. + AuthEnable(ctx context.Context) (*AuthEnableResponse, error) +} + +type auth struct { + c *Client + + conn *grpc.ClientConn // conn in-use + remote pb.AuthClient +} + +func NewAuth(c *Client) Auth { + conn := c.ActiveConnection() + return &auth{ + conn: c.ActiveConnection(), + remote: pb.NewAuthClient(conn), + c: c, + } +} + +func (auth *auth) AuthEnable(ctx context.Context) (*AuthEnableResponse, error) { + resp, err := auth.remote.AuthEnable(ctx, &pb.AuthEnableRequest{}) + return (*AuthEnableResponse)(resp), err +} diff --git a/clientv3/client.go b/clientv3/client.go index d7bc03129..a29be2ca8 100644 --- a/clientv3/client.go +++ b/clientv3/client.go @@ -37,6 +37,7 @@ type Client struct { KV Lease Watcher + Auth conn *grpc.ClientConn cfg Config @@ -152,6 +153,7 @@ func newClient(cfg *Config) (*Client, error) { client.KV = NewKV(client) client.Lease = NewLease(client) client.Watcher = NewWatcher(client) + client.Auth = NewAuth(client) return client, nil }