From fee2fb1d7087fd7c86fda69b00349f5580af660a Mon Sep 17 00:00:00 2001 From: Soam Vasani Date: Tue, 20 Sep 2016 16:48:25 -0700 Subject: [PATCH] Helper func to connect to etcd --- controller/resourceStore.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/controller/resourceStore.go b/controller/resourceStore.go index 4529747e..c2ebcbf8 100644 --- a/controller/resourceStore.go +++ b/controller/resourceStore.go @@ -19,7 +19,8 @@ package controller import ( "errors" "reflect" - + "time" + log "github.com/Sirupsen/logrus" "github.com/coreos/etcd/client" "github.com/satori/go.uuid" @@ -38,6 +39,20 @@ func makeResourceStore(fs *fileStore, ks client.KeysAPI, s serializer) *resource return &resourceStore{fileStore: fs, KeysAPI: ks, serializer: s} } +func getEtcdKeyAPI(etcdUrls []string) client.KeysAPI { + cfg := client.Config{ + Endpoints: etcdUrls, + Transport: client.DefaultTransport, + // set timeout per request to fail fast when the target endpoint is unavailable + HeaderTimeoutPerRequest: time.Second, + } + c, err := client.New(cfg) + if err != nil { + log.Fatalf("failed to connect to etcd: %v", err) + } + return client.NewKeysAPI(c) +} + func getTypeName(r resource) (string, error) { typ := reflect.TypeOf(r) if typ.Kind().String() == "ptr" {