// NewRegistry creates a kubernetes registry func NewRegistry(opts ...registry.Option) registry.Registry { var options registry.Options for _, o := range opts { o(&options) } // get first host var host string if len(options.Addrs) > 0 && len(options.Addrs[0]) > 0 { host = options.Addrs[0] } if options.Timeout == 0 { options.Timeout = time.Second * 1 } // if no hosts setup, assume InCluster var c client.Kubernetes if len(host) == 0 { c = client.NewClientInCluster() } else { c = client.NewClientByHost(host) } return &kregistry{ client: c, timeout: options.Timeout, } }
func NewRegistry(opts ...registry.Option) registry.Registry { config := clientv3.Config{ Endpoints: []string{"127.0.0.1:2379"}, } var options registry.Options for _, o := range opts { o(&options) } if options.Timeout == 0 { options.Timeout = 5 * time.Second } if options.Secure || options.TLSConfig != nil { tlsConfig := options.TLSConfig if tlsConfig == nil { tlsConfig = &tls.Config{ InsecureSkipVerify: true, } } config.TLS = tlsConfig } var cAddrs []string for _, addr := range options.Addrs { if len(addr) == 0 { continue } cAddrs = append(cAddrs, addr) } // if we got addrs then we'll update if len(cAddrs) > 0 { config.Endpoints = cAddrs } cli, _ := clientv3.New(config) e := &etcdv3Registry{ client: cli, options: options, register: make(map[string]uint64), leases: make(map[string]clientv3.LeaseID), } return e }
func NewRegistry(opts ...registry.Option) registry.Registry { var options registry.Options for _, o := range opts { o(&options) } if options.Timeout == 0 { options.Timeout = 5 } var cAddrs []string for _, addr := range options.Addrs { if len(addr) == 0 { continue } cAddrs = append(cAddrs, addr) } if len(cAddrs) == 0 { cAddrs = []string{"127.0.0.1:2181"} } // connect to zookeeper c, _, err := zk.Connect(cAddrs, time.Second*options.Timeout) if err != nil { log.Fatal(err) } // create our prefix path if err := createPath(prefix, []byte{}, c); err != nil { log.Fatal(err) } return &zookeeperRegistry{ client: c, options: options, register: make(map[string]uint64), } }
func TestOAuth2ClientCredentials(t *testing.T) { clientID := "client-id" clientSecret := "client-secret" tokenURL := "token-url" var config clientcredentials.Config origFn := newOAuthClient newOAuthClient = func(c clientcredentials.Config) *http.Client { config = c return origFn(c) } options := new(registry.Options) options.Context = context.WithValue(context.Background(), "foo", "bar") OAuth2ClientCredentials(clientID, clientSecret, tokenURL)(options) if clientID != config.ClientID { t.Errorf("ClientID: want %q, got %q", clientID, config.ClientID) } if clientSecret != config.ClientSecret { t.Errorf("ClientSecret: want %q, got %q", clientSecret, config.ClientSecret) } if tokenURL != config.TokenURL { t.Errorf("TokenURL: want %q, got %q", tokenURL, config.TokenURL) } if _, ok := options.Context.Value(contextHttpClient{}).(*http.Client); !ok { t.Errorf("HttpClient not set in options.Context") } if str, ok := options.Context.Value("foo").(string); !ok || str != "bar" { t.Errorf("Original context overwritten") } }
func NewRegistry(opts ...registry.Option) registry.Registry { config := etcd.Config{ Endpoints: []string{"http://127.0.0.1:2379"}, } var options registry.Options for _, o := range opts { o(&options) } if options.Timeout == 0 { options.Timeout = etcd.DefaultRequestTimeout } if options.Secure || options.TLSConfig != nil { tlsConfig := options.TLSConfig if tlsConfig == nil { tlsConfig = &tls.Config{ InsecureSkipVerify: true, } } // for InsecureSkipVerify t := &http.Transport{ Proxy: http.ProxyFromEnvironment, Dial: (&net.Dialer{ Timeout: 30 * time.Second, KeepAlive: 30 * time.Second, }).Dial, TLSHandshakeTimeout: 10 * time.Second, TLSClientConfig: tlsConfig, } runtime.SetFinalizer(&t, func(tr **http.Transport) { (*tr).CloseIdleConnections() }) config.Transport = t // default secure address config.Endpoints = []string{"https://127.0.0.1:2379"} } var cAddrs []string for _, addr := range options.Addrs { if len(addr) == 0 { continue } if options.Secure { // replace http:// with https:// if its there addr = strings.Replace(addr, "http://", "https://", 1) // has the prefix? no... ok add it if !strings.HasPrefix(addr, "https://") { addr = "https://" + addr } } cAddrs = append(cAddrs, addr) } // if we got addrs then we'll update if len(cAddrs) > 0 { config.Endpoints = cAddrs } c, _ := etcd.New(config) e := &etcdRegistry{ client: etcd.NewKeysAPI(c), options: options, } return e }