Merge "Allow to configure timeout for k8s client"

This commit is contained in:
Zuul 2021-06-01 21:32:25 +00:00 committed by Gerrit Code Review
commit 0d588c83b1
2 changed files with 16 additions and 2 deletions

View File

@ -30,12 +30,26 @@ import (
"opendev.org/airship/airshipctl/pkg/document"
)
// ClientOption is a function that allows to modify ConfigFlags object which is used to create Client
type ClientOption func(*genericclioptions.ConfigFlags)
// SetTimeout sets Timeout option in ConfigFlags object
func SetTimeout(timeout string) ClientOption {
return func(co *genericclioptions.ConfigFlags) {
*co.Timeout = timeout
}
}
// FactoryFromKubeConfig returns a factory with the
// default Kubernetes resources for the given kube config path and context
func FactoryFromKubeConfig(path, context string) cmdutil.Factory {
func FactoryFromKubeConfig(path, context string, opts ...ClientOption) cmdutil.Factory {
kf := genericclioptions.NewConfigFlags(false)
kf.KubeConfig = &path
kf.Context = &context
for _, o := range opts {
o(kf)
}
return cmdutil.NewFactory(cmdutil.NewMatchVersionFlags(&factory.CachingRESTClientGetter{
Delegate: kf,
}))

View File

@ -29,7 +29,7 @@ import (
func TestDefaultManifestFactory(t *testing.T) {
bundle, err := document.NewBundleByPath("testdata/source_bundle")
require.NoError(t, err)
mapper, err := FactoryFromKubeConfig("testdata/kubeconfig.yaml", "").ToRESTMapper()
mapper, err := FactoryFromKubeConfig("testdata/kubeconfig.yaml", "", SetTimeout("30s")).ToRESTMapper()
require.NoError(t, err)
reader := DefaultManifestReaderFactory(false, bundle, mapper)
require.NotNil(t, reader)