func (f *Factory) New(uri *url.URL) bridge.RegistryAdapter { urls := make([]string, 0) if uri.Host != "" { urls = append(urls, f.Scheme+"://"+uri.Host) } else { urls = append(urls, f.Scheme+"://127.0.0.1:4001") } if f.Scheme == "https" { cert := os.Getenv("ETCD_CERTFILE") key := os.Getenv("ETCD_KEYFILE") caCert := os.Getenv("ETCD_CAFILE") client, err := etcd2.NewTLSClient(urls, cert, key, caCert) if err != nil { log.Fatal("etcd: error creating tls client", err) } return &EtcdAdapter{client2: client, path: uri.Path} } res, err := http.Get(urls[0] + "/version") if err != nil { log.Fatal("etcd: error retrieving version", err) } defer res.Body.Close() body, _ := ioutil.ReadAll(res.Body) if match, _ := regexp.Match("0\\.4\\.*", body); match == true { log.Println("etcd: using v0 client") return &EtcdAdapter{client: etcd.NewClient(urls), path: uri.Path} } return &EtcdAdapter{client2: etcd2.NewClient(urls), path: uri.Path} }
func (f *Factory) New(uri *url.URL) bridge.RegistryAdapter { urls := make([]string, 0) if uri.Host != "" { urls = append(urls, "http://"+uri.Host) } else { urls = append(urls, "http://127.0.0.1:4001") } res, err := http.Get(urls[0] + "/version") if err != nil { log.Fatal("etcd: error retrieving version", err) } defer res.Body.Close() body, _ := ioutil.ReadAll(res.Body) if match, _ := regexp.Match("0\\.4\\.*", body); match == true { log.Println("etcd: using v0 client") return &EtcdAdapter{client: etcd.NewClient(urls), path: uri.Path} } return &EtcdAdapter{client2: etcd2.NewClient(urls), path: uri.Path} }