From 2245c64a5aa411c57e9bc72044074b26f894405c Mon Sep 17 00:00:00 2001 From: Sunny Date: Sun, 30 Sep 2018 15:09:53 +0530 Subject: [PATCH] envtest: export DefaultKubeAPIServerFlags & make it configurable This change exports DefaultKubeAPIServerFlags, allowing a user to append the default flags with other custom flags and set it to Environment.KubeAPIServerFlags. If KubeAPIServerFlags is not set, DefaultKubeAPIServerFlags is used when the API server starts. --- pkg/envtest/server.go | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/pkg/envtest/server.go b/pkg/envtest/server.go index b3b6997e39..c24dc595e5 100644 --- a/pkg/envtest/server.go +++ b/pkg/envtest/server.go @@ -52,9 +52,8 @@ func defaultAssetPath(binary string) string { } -// APIServerDefaultArgs are flags necessary to bring up apiserver. -// TODO: create test framework interface to append flag to default flags. -var defaultKubeAPIServerFlags = []string{ +// DefaultKubeAPIServerFlags are default flags necessary to bring up apiserver. +var DefaultKubeAPIServerFlags = []string{ "--etcd-servers={{ if .EtcdURL }}{{ .EtcdURL.String }}{{ end }}", "--cert-dir={{ .CertDir }}", "--insecure-port={{ if .URL }}{{ .URL.Port }}{{ end }}", @@ -92,6 +91,9 @@ type Environment struct { // may take to stop. It defaults to the KUBEBUILDER_CONTROLPLANE_STOP_TIMEOUT // environment variable or 20 seconds if unspecified ControlPlaneStopTimeout time.Duration + + // KubeAPIServerFlags is the set of flags passed while starting the api server. + KubeAPIServerFlags []string } // Stop stops a running server @@ -104,6 +106,11 @@ func (te *Environment) Stop() error { // Start starts a local Kubernetes server and updates te.ApiserverPort with the port it is listening on func (te *Environment) Start() (*rest.Config, error) { + // Set default API server flags if not set. + if len(te.KubeAPIServerFlags) == 0 { + te.KubeAPIServerFlags = DefaultKubeAPIServerFlags + } + if te.UseExistingCluster { if te.Config == nil { // we want to allow people to pass in their own config, so @@ -117,8 +124,7 @@ func (te *Environment) Start() (*rest.Config, error) { } } else { te.ControlPlane = integration.ControlPlane{} - te.ControlPlane.APIServer = &integration.APIServer{Args: defaultKubeAPIServerFlags} - + te.ControlPlane.APIServer = &integration.APIServer{Args: te.KubeAPIServerFlags} if os.Getenv(envKubeAPIServerBin) == "" { te.ControlPlane.APIServer.Path = defaultAssetPath("kube-apiserver") }