浏览代码

etcdmain, integration, v3rpc: consolidate grpc server setup

Anthony Romano 10 年之前
父节点
当前提交
4634874d99
共有 3 个文件被更改,包括 46 次插入17 次删除
  1. 5 12
      etcdmain/etcd.go
  2. 40 0
      etcdserver/api/v3rpc/grpc.go
  3. 1 5
      integration/cluster.go

+ 5 - 12
etcdmain/etcd.go

@@ -32,13 +32,10 @@ import (
 	systemdutil "github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/go-systemd/util"
 	"github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/pkg/capnslog"
 	"github.com/coreos/etcd/Godeps/_workspace/src/github.com/prometheus/client_golang/prometheus"
-	"github.com/coreos/etcd/Godeps/_workspace/src/google.golang.org/grpc"
-	"github.com/coreos/etcd/Godeps/_workspace/src/google.golang.org/grpc/credentials"
 	"github.com/coreos/etcd/discovery"
 	"github.com/coreos/etcd/etcdserver"
 	"github.com/coreos/etcd/etcdserver/api/v3rpc"
 	"github.com/coreos/etcd/etcdserver/etcdhttp"
-	"github.com/coreos/etcd/etcdserver/etcdserverpb"
 	"github.com/coreos/etcd/pkg/cors"
 	"github.com/coreos/etcd/pkg/fileutil"
 	pkgioutil "github.com/coreos/etcd/pkg/ioutil"
@@ -331,20 +328,16 @@ func startEtcd(cfg *config) (<-chan struct{}, error) {
 
 	if cfg.v3demo {
 		// set up v3 demo rpc
-		creds, err := credentials.NewServerTLSFromFile(
-			cfg.clientTLSInfo.CertFile,
-			cfg.clientTLSInfo.KeyFile)
+		tls := &cfg.clientTLSInfo
+		if cfg.clientTLSInfo.Empty() {
+			tls = nil
+		}
+		grpcServer, err := v3rpc.Server(s, tls)
 		if err != nil {
 			s.Stop()
 			<-s.StopNotify()
 			return nil, err
 		}
-
-		grpcServer := grpc.NewServer(grpc.Creds(creds))
-		etcdserverpb.RegisterKVServer(grpcServer, v3rpc.NewKVServer(s))
-		etcdserverpb.RegisterWatchServer(grpcServer, v3rpc.NewWatchServer(s))
-		etcdserverpb.RegisterLeaseServer(grpcServer, v3rpc.NewLeaseServer(s))
-		etcdserverpb.RegisterClusterServer(grpcServer, v3rpc.NewClusterServer(s))
 		go func() { plog.Fatal(grpcServer.Serve(v3l)) }()
 	}
 

+ 40 - 0
etcdserver/api/v3rpc/grpc.go

@@ -0,0 +1,40 @@
+// Copyright 2016 CoreOS, Inc.
+//
+// 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 v3rpc
+
+import (
+	"github.com/coreos/etcd/Godeps/_workspace/src/google.golang.org/grpc"
+	"github.com/coreos/etcd/Godeps/_workspace/src/google.golang.org/grpc/credentials"
+	"github.com/coreos/etcd/etcdserver"
+	pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
+	"github.com/coreos/etcd/pkg/transport"
+)
+
+func Server(s *etcdserver.EtcdServer, tls *transport.TLSInfo) (*grpc.Server, error) {
+	var opts []grpc.ServerOption
+	if tls != nil {
+		creds, err := credentials.NewServerTLSFromFile(tls.CertFile, tls.KeyFile)
+		if err != nil {
+			return nil, err
+		}
+		opts = append(opts, grpc.Creds(creds))
+	}
+
+	grpcServer := grpc.NewServer(opts...)
+	pb.RegisterKVServer(grpcServer, NewKVServer(s))
+	pb.RegisterWatchServer(grpcServer, NewWatchServer(s))
+	pb.RegisterLeaseServer(grpcServer, NewLeaseServer(s))
+	pb.RegisterClusterServer(grpcServer, NewClusterServer(s))
+	return grpcServer, nil
+}

+ 1 - 5
integration/cluster.go

@@ -37,7 +37,6 @@ import (
 	"github.com/coreos/etcd/etcdserver"
 	"github.com/coreos/etcd/etcdserver/api/v3rpc"
 	"github.com/coreos/etcd/etcdserver/etcdhttp"
-	"github.com/coreos/etcd/etcdserver/etcdserverpb"
 	"github.com/coreos/etcd/pkg/testutil"
 	"github.com/coreos/etcd/pkg/transport"
 	"github.com/coreos/etcd/pkg/types"
@@ -524,10 +523,7 @@ func (m *member) Launch() error {
 		m.hss = append(m.hss, hs)
 	}
 	if m.grpcListener != nil {
-		m.grpcServer = grpc.NewServer()
-		etcdserverpb.RegisterKVServer(m.grpcServer, v3rpc.NewKVServer(m.s))
-		etcdserverpb.RegisterWatchServer(m.grpcServer, v3rpc.NewWatchServer(m.s))
-		etcdserverpb.RegisterLeaseServer(m.grpcServer, v3rpc.NewLeaseServer(m.s))
+		m.grpcServer, err = v3rpc.Server(m.s, nil)
 		go m.grpcServer.Serve(m.grpcListener)
 	}
 	return nil