func NewClientParams()

in internal/elasticsearch/client.go [68:116]


func NewClientParams(args ClientParams) (*Client, error) {
	if args.Config == nil {
		return nil, errConfigMissing
	}

	transport := args.Transport
	if transport == nil {
		httpTransport, err := NewHTTPTransport(args.Config)
		if err != nil {
			return nil, err
		}
		transport = httpTransport
	}

	addrs, err := addresses(args.Config)
	if err != nil {
		return nil, err
	}

	headers := make(http.Header, len(args.Config.Headers)+2)
	if len(args.Config.Headers) > 0 {
		for k, v := range args.Config.Headers {
			headers.Set(k, v)
		}
	}

	headers.Set("X-Elastic-Product-Origin", "observability")
	if headers.Get("User-Agent") == "" {
		headers.Set("User-Agent", userAgent)
	}

	var apikey string
	if args.Config.APIKey != "" {
		apikey = base64.StdEncoding.EncodeToString([]byte(args.Config.APIKey))
	}

	return elastictransport.New(elastictransport.Config{
		APIKey:        apikey,
		Username:      args.Config.Username,
		Password:      args.Config.Password,
		URLs:          addrs,
		Header:        headers,
		Transport:     apmelasticsearch.WrapRoundTripper(transport),
		MaxRetries:    args.Config.MaxRetries,
		RetryBackoff:  exponentialBackoff(args.Config.Backoff),
		RetryOnError:  args.RetryOnError,
		RetryOnStatus: retryableStatuses,
	})
}