in client/internal/kubeconfig/validator.go [45:70]
func NewValidator(logger *zap.Logger) Validator {
return &validator{
clientConfigLoader: func(kubeconfigPath string) (*restclient.Config, error) {
if _, err := os.Stat(kubeconfigPath); err != nil {
return nil, fmt.Errorf("failed to read specified kubeconfig: %w", err)
}
// Load structured kubeconfig data from the given path.
loader := &clientcmd.ClientConfigLoadingRules{ExplicitPath: kubeconfigPath}
loadedConfig, err := loader.Load()
if err != nil {
return nil, err
}
// Flatten the loaded data to a particular restclient.Config based on the current context.
return clientcmd.NewNonInteractiveClientConfig(
*loadedConfig,
loadedConfig.CurrentContext,
&clientcmd.ConfigOverrides{},
loader,
).ClientConfig()
},
clientsetLoader: func(clientConfig *restclient.Config) (kubernetes.Interface, error) {
return kubernetes.NewForConfig(clientConfig)
},
logger: logger,
}
}