From 44608c3c9d405918a67bdff2315a939ebdd52482 Mon Sep 17 00:00:00 2001 From: David Eads Date: Fri, 16 Mar 2018 12:28:50 -0400 Subject: [PATCH] provide easy methods for direct kubeconfig loading from bytes Kubernetes-commit: 8eec665ecce5e91f858c4f4b92a5e7b674798b2f --- tools/clientcmd/client_config.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tools/clientcmd/client_config.go b/tools/clientcmd/client_config.go index c202e6b2..93e99a94 100644 --- a/tools/clientcmd/client_config.go +++ b/tools/clientcmd/client_config.go @@ -100,6 +100,26 @@ func NewInteractiveClientConfig(config clientcmdapi.Config, contextName string, return &DirectClientConfig{config, contextName, overrides, fallbackReader, configAccess, promptedCredentials{}} } +// NewClientConfigFromBytes takes your kubeconfig and gives you back a ClientConfig +func NewClientConfigFromBytes(configBytes []byte) (ClientConfig, error) { + config, err := Load(configBytes) + if err != nil { + return nil, err + } + + return &DirectClientConfig{*config, "", &ConfigOverrides{}, nil, nil, promptedCredentials{}}, nil +} + +// RESTConfigFromKubeConfig is a convenience method to give back a restconfig from your kubeconfig bytes. +// For programmatic access, this is what you want 80% of the time +func RESTConfigFromKubeConfig(configBytes []byte) (*restclient.Config, error) { + clientConfig, err := NewClientConfigFromBytes(configBytes) + if err != nil { + return nil, err + } + return clientConfig.ClientConfig() +} + func (config *DirectClientConfig) RawConfig() (clientcmdapi.Config, error) { return config.config, nil }