in main.go [143:187]
func (a *ElasticsearchAdapter) newMetricsClients(adapterCfg *config.Config, tracer *apm.Tracer) ([]client.Interface, error) {
dynamicClient, err := a.DynamicClient()
if err != nil {
return nil, fmt.Errorf("unable to construct dynamic dynamicClient: %w", err)
}
mapper, err := a.RESTMapper()
if err != nil {
return nil, fmt.Errorf("unable to construct dynamicClient REST mapper: %w", err)
}
var clients []client.Interface
for _, clientCfg := range adapterCfg.MetricServers {
switch clientCfg.ServerType {
case elastisearchMetricServerType:
esMetricClient, err := elasticsearch.NewElasticsearchClient(
clientCfg,
dynamicClient,
mapper,
tracer,
)
if err != nil {
return nil, fmt.Errorf("unable to construct Elasticsearch dynamicClient: %w", err)
}
clients = append(clients, esMetricClient)
case customMetricServerType:
kubeClientCfg, err := a.ClientConfig()
if err != nil {
return nil, fmt.Errorf("unable to construct Kubernetes dynamicClient config: %w", err)
}
kubeClient, err := kubernetes.NewForConfig(kubeClientCfg)
if err != nil {
return nil, fmt.Errorf("unable to construct Kubernetes dynamicClient: %w", err)
}
metricApiClient, err := custom_api.NewMetricApiClientProvider(kubeClientCfg, mapper).NewClient(kubeClient, clientCfg)
if err != nil {
return nil, fmt.Errorf("unable to construct Kubernetes custom metric API dynamicClient: %w", err)
}
clients = append(clients, metricApiClient)
}
}
return clients, nil
}