dependency/client_set.go
func (c *ClientSet) CreateConsulClient(i *CreateConsulClientInput) error {
	consulConfig := consulapi.DefaultConfig()

	if i.Address != "" {
		consulConfig.Address = i.Address
	}

	if i.Token != "" {
		consulConfig.Token = i.Token
	}

	if i.AuthEnabled {
		consulConfig.HttpAuth = &consulapi.HttpBasicAuth{
			Username: i.AuthUsername,
			Password: i.AuthPassword,
		}
	}

	// This transport will attempt to keep connections open to the Consul server.
	transport := &http.Transport{
		Proxy: http.ProxyFromEnvironment,
		Dial: (&net.Dialer{
			Timeout:   i.TransportDialTimeout,
			KeepAlive: i.TransportDialKeepAlive,
		}).Dial,
		DisableKeepAlives:   i.TransportDisableKeepAlives,
		MaxIdleConns:        i.TransportMaxIdleConns,
		IdleConnTimeout:     i.TransportIdleConnTimeout,
		MaxIdleConnsPerHost: i.TransportMaxIdleConnsPerHost,
		TLSHandshakeTimeout: i.TransportTLSHandshakeTimeout,
	}

	// Configure SSL
	if i.SSLEnabled {
		consulConfig.Scheme = "https"

		var tlsConfig tls.Config

		// Custom certificate or certificate and key
		if i.SSLCert != "" && i.SSLKey != "" {
			cert, err := tls.LoadX509KeyPair(i.SSLCert, i.SSLKey)
			if err != nil {
				return fmt.Errorf("client set: consul: %s", err)
			}
			tlsConfig.Certificates = []tls.Certificate{cert}
		} else if i.SSLCert != "" {
			cert, err := tls.LoadX509KeyPair(i.SSLCert, i.SSLCert)
			if err != nil {
				return fmt.Errorf("client set: consul: %s", err)
			}
			tlsConfig.Certificates = []tls.Certificate{cert}
		}

		// Custom CA certificate
		if i.SSLCACert != "" || i.SSLCAPath != "" {
			rootConfig := &rootcerts.Config{
				CAFile: i.SSLCACert,
				CAPath: i.SSLCAPath,
			}
			if err := rootcerts.ConfigureTLS(&tlsConfig, rootConfig); err != nil {
				return fmt.Errorf("client set: consul configuring TLS failed: %s", err)
			}
		}

		// Construct all the certificates now
		tlsConfig.BuildNameToCertificate()

		// SSL verification
		if i.ServerName != "" {
			tlsConfig.ServerName = i.ServerName
			tlsConfig.InsecureSkipVerify = false
		}
		if !i.SSLVerify {
			log.Printf("[WARN] (clients) disabling consul SSL verification")
			tlsConfig.InsecureSkipVerify = true
		}

		// Save the TLS config on our transport
		transport.TLSClientConfig = &tlsConfig
	}

	// Setup the new transport
	consulConfig.Transport = transport

	// Create the API client
	client, err := consulapi.NewClient(consulConfig)
	if err != nil {
		return fmt.Errorf("client set: consul: %s", err)
	}

	// Save the data on ourselves
	c.Lock()
	c.consul = &consulClient{
		client:    client,
		transport: transport,
	}
	c.Unlock()

	return nil
}
func (c *ClientSet) CreateConsulClient(i *CreateConsulClientInput) error {
	consulConfig := consulapi.DefaultConfig()

	if i.Address != "" {
		consulConfig.Address = i.Address
	}

	if i.Token != "" {
		consulConfig.Token = i.Token
	}

	if i.AuthEnabled {
		consulConfig.HttpAuth = &consulapi.HttpBasicAuth{
			Username: i.AuthUsername,
			Password: i.AuthPassword,
		}
	}

	// This transport will attempt to keep connections open to the Consul server.
	transport := &http.Transport{
		Proxy: http.ProxyFromEnvironment,
		Dial: (&net.Dialer{
			Timeout:   i.TransportDialTimeout,
			KeepAlive: i.TransportDialKeepAlive,
		}).Dial,
		DisableKeepAlives:   i.TransportDisableKeepAlives,
		MaxIdleConns:        i.TransportMaxIdleConns,
		IdleConnTimeout:     i.TransportIdleConnTimeout,
		MaxIdleConnsPerHost: i.TransportMaxIdleConnsPerHost,
		TLSHandshakeTimeout: i.TransportTLSHandshakeTimeout,
	}

	// Configure SSL
	if i.SSLEnabled {
		consulConfig.Scheme = "https"

		var tlsConfig tls.Config

		// Custom certificate or certificate and key
		if i.SSLCert != "" && i.SSLKey != "" {
			cert, err := tls.LoadX509KeyPair(i.SSLCert, i.SSLKey)
			if err != nil {
				return fmt.Errorf("client set: consul: %s", err)
			}
			tlsConfig.Certificates = []tls.Certificate{cert}
		} else if i.SSLCert != "" {
			cert, err := tls.LoadX509KeyPair(i.SSLCert, i.SSLCert)
			if err != nil {
				return fmt.Errorf("client set: consul: %s", err)
			}
			tlsConfig.Certificates = []tls.Certificate{cert}
		}

		// Custom CA certificate
		if i.SSLCACert != "" || i.SSLCAPath != "" {
			rootConfig := &rootcerts.Config{
				CAFile: i.SSLCACert,
				CAPath: i.SSLCAPath,
			}
			if err := rootcerts.ConfigureTLS(&tlsConfig, rootConfig); err != nil {
				return fmt.Errorf("client set: consul configuring TLS failed: %s", err)
			}
		}

		// Construct all the certificates now
		tlsConfig.BuildNameToCertificate()

		// SSL verification
		if i.ServerName != "" {
			tlsConfig.ServerName = i.ServerName
			tlsConfig.InsecureSkipVerify = false
		}
		if !i.SSLVerify {
			log.Printf("[WARN] (clients) disabling consul SSL verification")
			tlsConfig.InsecureSkipVerify = true
		}

		// Save the TLS config on our transport
		transport.TLSClientConfig = &tlsConfig
	}

	// Setup the new transport
	consulConfig.Transport = transport

	// Create the API client
	client, err := consulapi.NewClient(consulConfig)
	if err != nil {
		return fmt.Errorf("client set: consul: %s", err)
	}

	// Save the data on ourselves
	c.Lock()
	c.consul = &consulClient{
		client:    client,
		transport: transport,
	}
	c.Unlock()

	return nil
}
func ( c * ClientSet ) CreateConsulClient ( i * CreateConsulClientInput ) error { consulConfig := consulapi . DefaultConfig ( ) if i . Address != " " { consulConfig . Address = i . Address } if i . Token != " " { consulConfig . Token = i . Token } if i . AuthEnabled { consulConfig . HttpAuth = & consulapi . HttpBasicAuth { Username : i . AuthUsername , Password : i . AuthPassword , } } // This transport will attempt to keep connections open to the Consul server. transport := & http . Transport { Proxy : http . ProxyFromEnvironment , Dial : ( & net . Dialer { Timeout : i . TransportDialTimeout , KeepAlive : i . TransportDialKeepAlive , } ) . Dial , DisableKeepAlives : i . TransportDisableKeepAlives , MaxIdleConns : i . TransportMaxIdleConns , IdleConnTimeout : i . TransportIdleConnTimeout , MaxIdleConnsPerHost : i . TransportMaxIdleConnsPerHost , TLSHandshakeTimeout : i . TransportTLSHandshakeTimeout , } // Configure SSL if i . SSLEnabled { consulConfig . Scheme = " " var tlsConfig tls . Config // Custom certificate or certificate and key if i . SSLCert != " " && i . SSLKey != " " { cert , err := tls . LoadX509KeyPair ( i . SSLCert , i . SSLKey ) if err != nil { return fmt . Errorf ( " " , err ) } tlsConfig . Certificates = [ ] tls . Certificate { cert } } else if i . SSLCert != " " { cert , err := tls . LoadX509KeyPair ( i . SSLCert , i . SSLCert ) if err != nil { return fmt . Errorf ( " " , err ) } tlsConfig . Certificates = [ ] tls . Certificate { cert } } // Custom CA certificate if i . SSLCACert != " " || i . SSLCAPath != " " { rootConfig := & rootcerts . Config { CAFile : i . SSLCACert , CAPath : i . SSLCAPath , } if err := rootcerts . ConfigureTLS ( & tlsConfig , rootConfig ) ; err != nil { return fmt . Errorf ( " " , err ) } } // Construct all the certificates now tlsConfig . BuildNameToCertificate ( ) // SSL verification if i . ServerName != " " { tlsConfig . ServerName = i . ServerName tlsConfig . InsecureSkipVerify = false } if ! i . SSLVerify { log . Printf ( " " ) tlsConfig . InsecureSkipVerify = true } // Save the TLS config on our transport transport . TLSClientConfig = & tlsConfig } // Setup the new transport consulConfig . Transport = transport // Create the API client client , err := consulapi . NewClient ( consulConfig ) if err != nil { return fmt . Errorf ( " " , err ) } // Save the data on ourselves c . Lock ( ) c . consul = & consulClient { client : client , transport : transport , } c . Unlock ( ) return nil }
// CreateConsulClient creates a new Consul API client from the given input.
CreateConsulClient creates a new Consul API client from the given input .