in pkg/client/custom_api/client.go [255:283]
func (mcp metricsClientProvider) NewClient(
client *kubernetes.Clientset,
metricServerCfg config.MetricServer,
) (client.Interface, error) {
restClientConfig, err := metricServerCfg.ClientConfig.NewRestClientConfig(client, mcp.baseConfig)
if err != nil {
return nil, fmt.Errorf("failed to generate rest restClientConfig for %s: %s", metricServerCfg.ClientConfig.Host, err)
}
discoveryClient, err := discovery.NewDiscoveryClientForConfig(restClientConfig)
if err != nil {
return nil, fmt.Errorf("failed to create discovery client: %v", err)
}
customMetricsAvailableAPIsGetter := cmClient.NewAvailableAPIsGetter(discoveryClient)
customMetricsClient := cmClient.NewForConfig(restClientConfig, mcp.mapper, customMetricsAvailableAPIsGetter)
externalMetricsClient, err := emClient.NewForConfig(restClientConfig)
if err != nil {
return nil, fmt.Errorf("%s: failed to create external metrics client: %v", metricServerCfg.Name, err)
}
return &metricsClient{
logger: log.ForPackage("custom_api"),
metricServerCfg: metricServerCfg,
customMetricsAvailableAPIsGetter: customMetricsAvailableAPIsGetter,
customMetricsClient: customMetricsClient,
externalMetricsClient: externalMetricsClient,
discoveryClient: discoveryClient,
mapper: mcp.mapper,
}, err
}