Allow providing wrapper for client config

This commit is contained in:
Maciej Szulik 2021-11-04 16:14:27 +01:00
parent 3b76c75831
commit c5aea015c3
No known key found for this signature in database
GPG Key ID: F15E55D276FA84C4
2 changed files with 10 additions and 0 deletions

View File

@ -388,6 +388,12 @@ func (f *ConfigFlags) WithDiscoveryBurst(discoveryBurst int) *ConfigFlags {
return f
}
// WithWrapConfigFn allows providing a wrapper function for the client Config.
func (f *ConfigFlags) WithWrapConfigFn(wrapConfigFn func(*rest.Config) *rest.Config) *ConfigFlags {
f.WrapConfigFn = wrapConfigFn
return f
}
// NewConfigFlags returns ConfigFlags with default values set
func NewConfigFlags(usePersistentConfig bool) *ConfigFlags {
impersonateGroup := []string{}

View File

@ -433,8 +433,12 @@ func addCmdHeaderHooks(cmds *cobra.Command, kubeConfigFlags *genericclioptions.C
crt.ParseCommandHeaders(cmd, args)
return existingPreRunE(cmd, args)
}
wrapConfigFn := kubeConfigFlags.WrapConfigFn
// Wraps CommandHeaderRoundTripper around standard RoundTripper.
kubeConfigFlags.WrapConfigFn = func(c *rest.Config) *rest.Config {
if wrapConfigFn != nil {
c = wrapConfigFn(c)
}
c.Wrap(func(rt http.RoundTripper) http.RoundTripper {
// Must be separate RoundTripper; not "crt" closure.
// Fixes: https://github.com/kubernetes/kubectl/issues/1098