func()

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
}