func()

in pkg/apmclient/config.go [113:141]


func (cfg *Config) InferElasticCloudURLs() error {
	if cfg.ElasticsearchURL == "" {
		return nil
	}
	if cfg.APMServerURL != "" && cfg.KibanaURL != "" {
		return nil
	}

	// If ElasticsearchURL matches https://<alias>.es.<...>
	// then derive the APM Server URL from that by substituting
	// "apm" for "es", and Kibana URL by substituing "kb".
	url, err := url.Parse(cfg.ElasticsearchURL)
	if err != nil {
		return fmt.Errorf("error parsing ElasticsearchURL: %w", err)
	}
	if alias, remainder, ok := strings.Cut(url.Host, "."); ok {
		if component, remainder, ok := strings.Cut(remainder, "."); ok && component == "es" {
			if cfg.APMServerURL == "" {
				url.Host = fmt.Sprintf("%s.apm.%s", alias, remainder)
				cfg.APMServerURL = url.String()
			}
			if cfg.KibanaURL == "" {
				url.Host = fmt.Sprintf("%s.kb.%s", alias, remainder)
				cfg.KibanaURL = url.String()
			}
		}
	}
	return nil
}