From 59b12d9332d832daba8648c25b882f72a6c3af49 Mon Sep 17 00:00:00 2001 From: Dan Osborne Date: Wed, 21 Feb 2018 14:08:35 -0800 Subject: [PATCH] Handle error when creating etcd client --- lib/backend/etcdv3/etcdv3.go | 6 +++++- lib/backend/etcdv3/etcdv3_test.go | 32 +++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 lib/backend/etcdv3/etcdv3_test.go diff --git a/lib/backend/etcdv3/etcdv3.go b/lib/backend/etcdv3/etcdv3.go index 2c78042ca..ea169a9b1 100644 --- a/lib/backend/etcdv3/etcdv3.go +++ b/lib/backend/etcdv3/etcdv3.go @@ -60,7 +60,11 @@ func NewEtcdV3Client(config *apiconfig.EtcdConfig) (api.Client, error) { CertFile: config.EtcdCertFile, KeyFile: config.EtcdKeyFile, } - tls, _ := tlsInfo.ClientConfig() + + tls, err := tlsInfo.ClientConfig() + if err != nil { + return nil, fmt.Errorf("could not initialize etcdv3 client: %+v", err) + } // Build the etcdv3 config. cfg := clientv3.Config{ diff --git a/lib/backend/etcdv3/etcdv3_test.go b/lib/backend/etcdv3/etcdv3_test.go new file mode 100644 index 000000000..024559bc1 --- /dev/null +++ b/lib/backend/etcdv3/etcdv3_test.go @@ -0,0 +1,32 @@ +package etcdv3_test + +import ( + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" + "github.com/projectcalico/libcalico-go/lib/apiconfig" + "github.com/projectcalico/libcalico-go/lib/backend/etcdv3" +) + +var _ = Describe("RulesAPIToBackend", func() { + It("should raise an error if specified certs don't exist", func() { + _, err := etcdv3.NewEtcdV3Client(&apiconfig.EtcdConfig{ + EtcdCACertFile: "/fake/path", + EtcdCertFile: "/fake/path", + EtcdKeyFile: "/fake/path", + EtcdEndpoints: "http://fake:2379", + }) + + Expect(err).To(HaveOccurred()) + }) + + It("shouldn't create a client with empty certs", func() { + _, err := etcdv3.NewEtcdV3Client(&apiconfig.EtcdConfig{ + EtcdCACertFile: "/dev/null", + EtcdCertFile: "/dev/null", + EtcdKeyFile: "/dev/null", + EtcdEndpoints: "http://fake:2379", + }) + + Expect(err).To(HaveOccurred()) + }) +})