From 763a37d3f1b0e31348d5b58494f0a36a1796f136 Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Mon, 6 Mar 2017 23:25:11 -0800 Subject: [PATCH] v3client: a bridge between an etcdserver and a clientv3 --- etcdserver/api/v3client/doc.go | 16 ++++++++++++ etcdserver/api/v3client/v3client.go | 40 +++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 etcdserver/api/v3client/doc.go create mode 100644 etcdserver/api/v3client/v3client.go diff --git a/etcdserver/api/v3client/doc.go b/etcdserver/api/v3client/doc.go new file mode 100644 index 000000000..8a8e15515 --- /dev/null +++ b/etcdserver/api/v3client/doc.go @@ -0,0 +1,16 @@ +// Copyright 2017 The etcd Authors +// +// 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 v3client provides clientv3 interfaces from an etcdserver. +package v3client diff --git a/etcdserver/api/v3client/v3client.go b/etcdserver/api/v3client/v3client.go new file mode 100644 index 000000000..59d3e4a8d --- /dev/null +++ b/etcdserver/api/v3client/v3client.go @@ -0,0 +1,40 @@ +// Copyright 2017 The etcd Authors +// +// 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 v3client + +import ( + "context" + "time" + + "github.com/coreos/etcd/clientv3" + "github.com/coreos/etcd/etcdserver" + "github.com/coreos/etcd/etcdserver/api/v3rpc" + "github.com/coreos/etcd/proxy/grpcproxy/adapter" +) + +func New(s *etcdserver.EtcdServer) *clientv3.Client { + c := clientv3.NewCtxClient(context.Background()) + + kvc := adapter.KvServerToKvClient(v3rpc.NewQuotaKVServer(s)) + c.KV = clientv3.NewKVFromKVClient(kvc) + + lc := adapter.LeaseServerToLeaseClient(v3rpc.NewQuotaLeaseServer(s)) + c.Lease = clientv3.NewLeaseFromLeaseClient(lc, time.Second) + + wc := adapter.WatchServerToWatchClient(v3rpc.NewWatchServer(s)) + c.Watcher = clientv3.NewWatchFromWatchClient(wc) + + return c +}