Help us shape the future of Go! Take the 2026 Go Developer Survey

httpconfig

package
v0.26.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 9, 2022 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Overview

Package httpconfig is a wrapper around github.com/prometheus/common/config.

Index

Constants

This section is empty.

Variables

View Source
var ThanosUserAgent = fmt.Sprintf("Thanos/%s", version.Version)

Functions

func NewHTTPClient

func NewHTTPClient(cfg ClientConfig, name string) (*http.Client, error)

NewHTTPClient returns a new HTTP client.

func NewRoundTripperFromConfig

func NewRoundTripperFromConfig(cfg config_util.HTTPClientConfig, transportConfig TransportConfig, name string) (http.RoundTripper, error)

NewRoundTripperFromConfig returns a new HTTP RoundTripper configured for the given http.HTTPClientConfig and http.HTTPClientOption.

Types

type AddressProvider

type AddressProvider interface {
	Resolve(context.Context, []string) error
	Addresses() []string
}

type BasicAuth

type BasicAuth struct {
	Username     string `yaml:"username"`
	Password     string `yaml:"password"`
	PasswordFile string `yaml:"password_file"`
}

BasicAuth configures basic authentication for HTTP clients.

func (BasicAuth) IsZero

func (b BasicAuth) IsZero() bool

IsZero returns false if basic authentication isn't enabled.

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client represents a client that can send requests to a cluster of HTTP-based endpoints.

func NewClient

func NewClient(logger log.Logger, cfg EndpointsConfig, client *http.Client, provider AddressProvider) (*Client, error)

NewClient returns a new Client.

func (*Client) Discover

func (c *Client) Discover(ctx context.Context)

Discover runs the service to discover endpoints until the given context is done.

func (*Client) Do

func (c *Client) Do(req *http.Request) (*http.Response, error)

Do executes an HTTP request with the underlying HTTP client.

func (*Client) Endpoints

func (c *Client) Endpoints() []*url.URL

Endpoints returns the list of known endpoints.

func (*Client) Resolve

func (c *Client) Resolve(ctx context.Context) error

Resolve refreshes and resolves the list of targets.

type ClientConfig

type ClientConfig struct {
	// The HTTP basic authentication credentials for the targets.
	BasicAuth BasicAuth `yaml:"basic_auth"`
	// The bearer token for the targets.
	BearerToken string `yaml:"bearer_token"`
	// The bearer token file for the targets.
	BearerTokenFile string `yaml:"bearer_token_file"`
	// HTTP proxy server to use to connect to the targets.
	ProxyURL string `yaml:"proxy_url"`
	// TLSConfig to use to connect to the targets.
	TLSConfig TLSConfig `yaml:"tls_config"`
	// TransportConfig for Client transport properties
	TransportConfig TransportConfig `yaml:"transport_config"`
	// ClientMetrics contains metrics that will be used to instrument
	// the client that will be created with this config.
	ClientMetrics *extpromhttp.ClientMetrics `yaml:"-"`
}

ClientConfig configures an HTTP client.

func NewClientConfigFromYAML

func NewClientConfigFromYAML(cfg []byte) (*ClientConfig, error)

type Config

type Config struct {
	HTTPClientConfig ClientConfig    `yaml:"http_config"`
	EndpointsConfig  EndpointsConfig `yaml:",inline"`
}

Config is a structure that allows pointing to various HTTP endpoint, e.g ruler connecting to queriers.

func BuildConfig

func BuildConfig(addrs []string) ([]Config, error)

BuildConfig returns a configuration from a static addresses.

func DefaultConfig

func DefaultConfig() Config

func LoadConfigs

func LoadConfigs(confYAML []byte) ([]Config, error)

LoadConfigs loads a list of Config from YAML data.

func (*Config) UnmarshalYAML

func (c *Config) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface.

type EndpointsConfig

type EndpointsConfig struct {
	// List of addresses with DNS prefixes.
	StaticAddresses []string `yaml:"static_configs"`
	// List of file  configurations (our FileSD supports different DNS lookups).
	FileSDConfigs []FileSDConfig `yaml:"file_sd_configs"`

	// The URL scheme to use when talking to targets.
	Scheme string `yaml:"scheme"`

	// Path prefix to add in front of the endpoint path.
	PathPrefix string `yaml:"path_prefix"`
}

EndpointsConfig configures a cluster of HTTP endpoints from static addresses and file service discovery.

type FileSDConfig

type FileSDConfig struct {
	Files           []string       `yaml:"files"`
	RefreshInterval model.Duration `yaml:"refresh_interval"`
}

FileSDConfig represents a file service discovery configuration.

type TLSConfig

type TLSConfig struct {
	// The CA cert to use for the targets.
	CAFile string `yaml:"ca_file"`
	// The client cert file for the targets.
	CertFile string `yaml:"cert_file"`
	// The client key file for the targets.
	KeyFile string `yaml:"key_file"`
	// Used to verify the hostname for the targets. See https://tools.ietf.org/html/rfc4366#section-3.1
	ServerName string `yaml:"server_name"`
	// Disable target certificate validation.
	InsecureSkipVerify bool `yaml:"insecure_skip_verify"`
}

TLSConfig configures TLS connections.

type TransportConfig

type TransportConfig struct {
	MaxIdleConns          int   `yaml:"max_idle_conns"`
	MaxIdleConnsPerHost   int   `yaml:"max_idle_conns_per_host"`
	IdleConnTimeout       int64 `yaml:"idle_conn_timeout"`
	ResponseHeaderTimeout int64 `yaml:"response_header_timeout"`
	ExpectContinueTimeout int64 `yaml:"expect_continue_timeout"`
	MaxConnsPerHost       int   `yaml:"max_conns_per_host"`
	DisableCompression    bool  `yaml:"disable_compression"`
	TLSHandshakeTimeout   int64 `yaml:"tls_handshake_timeout"`
}

Transport configures client's transport properties.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL