diff --git a/pkg/kube/client.go b/pkg/kube/client.go index 9e54930ed..17a4a1759 100644 --- a/pkg/kube/client.go +++ b/pkg/kube/client.go @@ -44,12 +44,20 @@ import ( // Client represents a client capable of communicating with the Kubernetes API. type Client struct { *cmdutil.Factory + // IncludeThirdPartyAPIs indicates whether to load "dynamic" APIs. + // + // This requires additional calls to the Kubernetes API server, and these calls + // are not supported by all versions. Additionally, during testing, initializing + // a client will still attempt to contact a live server. In these situations, + // this flag may need to be disabled. + IncludeThirdPartyAPIs bool } // New create a new Client func New(config clientcmd.ClientConfig) *Client { return &Client{ - Factory: cmdutil.NewFactory(config), + Factory: cmdutil.NewFactory(config), + IncludeThirdPartyAPIs: true, } } @@ -145,7 +153,7 @@ func (c *Client) Get(namespace string, reader io.Reader) (string, error) { // // Namespace will set the namespaces func (c *Client) Update(namespace string, currentReader, targetReader io.Reader) error { - current := c.NewBuilder(includeThirdPartyAPIs). + current := c.NewBuilder(c.IncludeThirdPartyAPIs). ContinueOnError(). NamespaceParam(namespace). DefaultNamespace(). @@ -153,7 +161,7 @@ func (c *Client) Update(namespace string, currentReader, targetReader io.Reader) Flatten(). Do() - target := c.NewBuilder(includeThirdPartyAPIs). + target := c.NewBuilder(c.IncludeThirdPartyAPIs). ContinueOnError(). NamespaceParam(namespace). DefaultNamespace(). @@ -275,10 +283,8 @@ func (c *Client) WatchUntilReady(namespace string, reader io.Reader) error { return perform(c, namespace, reader, watchUntilReady) } -const includeThirdPartyAPIs = false - func perform(c *Client, namespace string, reader io.Reader, fn ResourceActorFunc) error { - r := c.NewBuilder(includeThirdPartyAPIs). + r := c.NewBuilder(c.IncludeThirdPartyAPIs). ContinueOnError(). NamespaceParam(namespace). DefaultNamespace(). diff --git a/pkg/kube/client_test.go b/pkg/kube/client_test.go index 168488d82..7cf5b8246 100644 --- a/pkg/kube/client_test.go +++ b/pkg/kube/client_test.go @@ -101,6 +101,7 @@ func TestPerform(t *testing.T) { } c := New(nil) + c.IncludeThirdPartyAPIs = false c.ClientForMapping = func(mapping *meta.RESTMapping) (resource.RESTClient, error) { return &fake.RESTClient{}, nil } @@ -121,12 +122,15 @@ func TestPerform(t *testing.T) { func TestReal(t *testing.T) { t.Skip("This is a live test, comment this line to run") - if err := New(nil).Create("test", strings.NewReader(guestbookManifest)); err != nil { + c := New(nil) + c.IncludeThirdPartyAPIs = false + if err := c.Create("test", strings.NewReader(guestbookManifest)); err != nil { t.Fatal(err) } testSvcEndpointManifest := testServiceManifest + "\n---\n" + testEndpointManifest - c := New(nil) + c = New(nil) + c.IncludeThirdPartyAPIs = false if err := c.Create("test-delete", strings.NewReader(testSvcEndpointManifest)); err != nil { t.Fatal(err) }