diff --git a/pkg/kubectl/cmd/apiresources.go b/pkg/kubectl/cmd/apiresources.go index 03de1b11617..dadc13d8a25 100644 --- a/pkg/kubectl/cmd/apiresources.go +++ b/pkg/kubectl/cmd/apiresources.go @@ -113,7 +113,7 @@ func (o *ApiResourcesOptions) RunApiResources(cmd *cobra.Command, f cmdutil.Fact w := printers.GetNewTabWriter(o.Out) defer w.Flush() - discoveryclient, err := f.DiscoveryClient() + discoveryclient, err := f.ToDiscoveryClient() if err != nil { return err } diff --git a/pkg/kubectl/cmd/apiversions.go b/pkg/kubectl/cmd/apiversions.go index b59856c8d0d..516bbfcc2c2 100644 --- a/pkg/kubectl/cmd/apiversions.go +++ b/pkg/kubectl/cmd/apiversions.go @@ -65,7 +65,7 @@ func NewCmdApiVersions(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) func (o *ApiVersionsOptions) Complete(f cmdutil.Factory) error { var err error - o.discoveryClient, err = f.DiscoveryClient() + o.discoveryClient, err = f.ToDiscoveryClient() if err != nil { return err } diff --git a/pkg/kubectl/cmd/apply.go b/pkg/kubectl/cmd/apply.go index a28a8ae44c5..1860150c1ae 100644 --- a/pkg/kubectl/cmd/apply.go +++ b/pkg/kubectl/cmd/apply.go @@ -219,7 +219,7 @@ func (o *ApplyOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) error { o.ClientSetFunc = f.ClientSet o.Validator, err = f.Validator(cmdutil.GetFlagBool(cmd, "validate")) o.Builder = f.NewBuilder() - o.Mapper, err = f.RESTMapper() + o.Mapper, err = f.ToRESTMapper() if err != nil { return err } diff --git a/pkg/kubectl/cmd/attach.go b/pkg/kubectl/cmd/attach.go index 1171c307203..5608bb7c9c1 100644 --- a/pkg/kubectl/cmd/attach.go +++ b/pkg/kubectl/cmd/attach.go @@ -177,7 +177,7 @@ func (p *AttachOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, argsIn [ p.SuggestedCmdUsage = fmt.Sprintf("Use '%s describe pod/%s -n %s' to see all of the containers in this pod.", fullCmdName, p.PodName, p.Namespace) } - config, err := f.ClientConfig() + config, err := f.ToRESTConfig() if err != nil { return err } diff --git a/pkg/kubectl/cmd/auth/cani.go b/pkg/kubectl/cmd/auth/cani.go index 88a93d8d229..3d771af8703 100644 --- a/pkg/kubectl/cmd/auth/cani.go +++ b/pkg/kubectl/cmd/auth/cani.go @@ -125,7 +125,7 @@ func (o *CanIOptions) Complete(f cmdutil.Factory, args []string) error { break } resourceTokens := strings.SplitN(args[1], "/", 2) - restMapper, err := f.RESTMapper() + restMapper, err := f.ToRESTMapper() if err != nil { return err } diff --git a/pkg/kubectl/cmd/clusterinfo.go b/pkg/kubectl/cmd/clusterinfo.go index da37d1143cc..655dda9d485 100644 --- a/pkg/kubectl/cmd/clusterinfo.go +++ b/pkg/kubectl/cmd/clusterinfo.go @@ -76,7 +76,7 @@ func NewCmdClusterInfo(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) func (o *ClusterInfoOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) error { var err error - o.Client, err = f.ClientConfig() + o.Client, err = f.ToRESTConfig() if err != nil { return err } diff --git a/pkg/kubectl/cmd/cp.go b/pkg/kubectl/cmd/cp.go index 45decc5d79d..ff486853baa 100644 --- a/pkg/kubectl/cmd/cp.go +++ b/pkg/kubectl/cmd/cp.go @@ -154,7 +154,7 @@ func (o *CopyOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) error { return err } - o.ClientConfig, err = f.ClientConfig() + o.ClientConfig, err = f.ToRESTConfig() if err != nil { return err } diff --git a/pkg/kubectl/cmd/create/create.go b/pkg/kubectl/cmd/create/create.go index 6105c9f4b1b..f60175301be 100644 --- a/pkg/kubectl/cmd/create/create.go +++ b/pkg/kubectl/cmd/create/create.go @@ -395,7 +395,7 @@ func (o *CreateSubcommandOptions) Complete(f cmdutil.Factory, cmd *cobra.Command return err } - o.Mapper, err = f.RESTMapper() + o.Mapper, err = f.ToRESTMapper() if err != nil { return err } diff --git a/pkg/kubectl/cmd/create/create_clusterrole_test.go b/pkg/kubectl/cmd/create/create_clusterrole_test.go index 8609e63c19e..031c9435e58 100644 --- a/pkg/kubectl/cmd/create/create_clusterrole_test.go +++ b/pkg/kubectl/cmd/create/create_clusterrole_test.go @@ -438,7 +438,7 @@ func TestClusterRoleValidate(t *testing.T) { for name, test := range tests { t.Run(name, func(t *testing.T) { var err error - test.clusterRoleOptions.Mapper, err = tf.RESTMapper() + test.clusterRoleOptions.Mapper, err = tf.ToRESTMapper() if err != nil { t.Fatal(err) } diff --git a/pkg/kubectl/cmd/create/create_role.go b/pkg/kubectl/cmd/create/create_role.go index a2d2e2dccaf..2f857200cdd 100644 --- a/pkg/kubectl/cmd/create/create_role.go +++ b/pkg/kubectl/cmd/create/create_role.go @@ -206,7 +206,7 @@ func (o *CreateRoleOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args o.ResourceNames = resourceNames // Complete other options for Run. - o.Mapper, err = f.RESTMapper() + o.Mapper, err = f.ToRESTMapper() if err != nil { return err } diff --git a/pkg/kubectl/cmd/create/create_role_test.go b/pkg/kubectl/cmd/create/create_role_test.go index 5741a7fdc03..c2284c3ec8a 100644 --- a/pkg/kubectl/cmd/create/create_role_test.go +++ b/pkg/kubectl/cmd/create/create_role_test.go @@ -340,7 +340,7 @@ func TestValidate(t *testing.T) { for name, test := range tests { var err error - test.roleOptions.Mapper, err = tf.RESTMapper() + test.roleOptions.Mapper, err = tf.ToRESTMapper() if err != nil { t.Fatal(err) } diff --git a/pkg/kubectl/cmd/delete.go b/pkg/kubectl/cmd/delete.go index 5d80ae4642e..8773d2e3b40 100644 --- a/pkg/kubectl/cmd/delete.go +++ b/pkg/kubectl/cmd/delete.go @@ -189,7 +189,7 @@ func (o *DeleteOptions) Complete(f cmdutil.Factory, args []string, cmd *cobra.Co } o.Result = r - o.Mapper, err = f.RESTMapper() + o.Mapper, err = f.ToRESTMapper() if err != nil { return err } diff --git a/pkg/kubectl/cmd/exec.go b/pkg/kubectl/cmd/exec.go index b5c04dd83ca..1866da37b42 100644 --- a/pkg/kubectl/cmd/exec.go +++ b/pkg/kubectl/cmd/exec.go @@ -180,7 +180,7 @@ func (p *ExecOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, argsIn []s p.SuggestedCmdUsage = fmt.Sprintf("Use '%s describe pod/%s -n %s' to see all of the containers in this pod.", p.FullCmdName, p.PodName, p.Namespace) } - config, err := f.ClientConfig() + config, err := f.ToRESTConfig() if err != nil { return err } diff --git a/pkg/kubectl/cmd/explain.go b/pkg/kubectl/cmd/explain.go index 1e39133962b..d85c240cf4d 100644 --- a/pkg/kubectl/cmd/explain.go +++ b/pkg/kubectl/cmd/explain.go @@ -92,7 +92,7 @@ func NewCmdExplain(parent string, f cmdutil.Factory, streams genericclioptions.I func (o *ExplainOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) error { var err error - o.Mapper, err = f.RESTMapper() + o.Mapper, err = f.ToRESTMapper() if err != nil { return err } diff --git a/pkg/kubectl/cmd/expose.go b/pkg/kubectl/cmd/expose.go index 86444896211..23fd7973641 100644 --- a/pkg/kubectl/cmd/expose.go +++ b/pkg/kubectl/cmd/expose.go @@ -195,7 +195,7 @@ func (o *ExposeServiceOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) e o.MapBasedSelectorForObject = f.MapBasedSelectorForObject o.PortsForObject = f.PortsForObject o.ProtocolsForObject = f.ProtocolsForObject - o.Mapper, err = f.RESTMapper() + o.Mapper, err = f.ToRESTMapper() if err != nil { return err } diff --git a/pkg/kubectl/cmd/portforward.go b/pkg/kubectl/cmd/portforward.go index 59f0af076f8..ec2e2c07d13 100644 --- a/pkg/kubectl/cmd/portforward.go +++ b/pkg/kubectl/cmd/portforward.go @@ -220,7 +220,7 @@ func (o *PortForwardOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, arg } o.PodClient = clientset.Core() - o.Config, err = f.ClientConfig() + o.Config, err = f.ToRESTConfig() if err != nil { return err } diff --git a/pkg/kubectl/cmd/proxy.go b/pkg/kubectl/cmd/proxy.go index 440c8c867f4..59291241697 100644 --- a/pkg/kubectl/cmd/proxy.go +++ b/pkg/kubectl/cmd/proxy.go @@ -105,7 +105,7 @@ func RunProxy(f cmdutil.Factory, out io.Writer, cmd *cobra.Command) error { return errors.New("Don't specify both --unix-socket and --port") } - clientConfig, err := f.ClientConfig() + clientConfig, err := f.ToRESTConfig() if err != nil { return err } diff --git a/pkg/kubectl/cmd/run.go b/pkg/kubectl/cmd/run.go index f550ac04567..1bd4352599f 100644 --- a/pkg/kubectl/cmd/run.go +++ b/pkg/kubectl/cmd/run.go @@ -374,7 +374,7 @@ func (o *RunOptions) Run(f cmdutil.Factory, cmd *cobra.Command, args []string) e Attach: &DefaultRemoteAttach{}, } - config, err := f.ClientConfig() + config, err := f.ToRESTConfig() if err != nil { return err } @@ -638,7 +638,7 @@ func (o *RunOptions) createGeneratedObject(f cmdutil.Factory, cmd *cobra.Command return nil, err } - mapper, err := f.RESTMapper() + mapper, err := f.ToRESTMapper() if err != nil { return nil, err } diff --git a/pkg/kubectl/cmd/testing/fake.go b/pkg/kubectl/cmd/testing/fake.go index e5851bda4b8..5204395961c 100644 --- a/pkg/kubectl/cmd/testing/fake.go +++ b/pkg/kubectl/cmd/testing/fake.go @@ -287,7 +287,7 @@ func (f *TestFactory) Cleanup() { os.Remove(f.tempConfigFile.Name()) } -func (f *TestFactory) ClientConfig() (*restclient.Config, error) { +func (f *TestFactory) ToRESTConfig() (*restclient.Config, error) { return f.ClientConfigVal, nil } @@ -330,7 +330,7 @@ func (f *TestFactory) Command(*cobra.Command, bool) string { } func (f *TestFactory) NewBuilder() *resource.Builder { - mapper, err := f.RESTMapper() + mapper, err := f.ToRESTMapper() return resource.NewFakeBuilder( func(version schema.GroupVersion) (resource.RESTClient, error) { diff --git a/pkg/kubectl/cmd/top_node.go b/pkg/kubectl/cmd/top_node.go index fb2bbb0f95f..5922e78fa40 100644 --- a/pkg/kubectl/cmd/top_node.go +++ b/pkg/kubectl/cmd/top_node.go @@ -136,7 +136,7 @@ func (o *TopNodeOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [] o.DiscoveryClient = clientset.DiscoveryClient - config, err := f.ClientConfig() + config, err := f.ToRESTConfig() if err != nil { return err } diff --git a/pkg/kubectl/cmd/top_pod.go b/pkg/kubectl/cmd/top_pod.go index e073099d413..e90ac689882 100644 --- a/pkg/kubectl/cmd/top_pod.go +++ b/pkg/kubectl/cmd/top_pod.go @@ -131,7 +131,7 @@ func (o *TopPodOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []s } o.DiscoveryClient = clientset.DiscoveryClient - config, err := f.ClientConfig() + config, err := f.ToRESTConfig() if err != nil { return err } diff --git a/pkg/kubectl/cmd/util/factory.go b/pkg/kubectl/cmd/util/factory.go index 4e23d5861e9..cd53bfc94a1 100644 --- a/pkg/kubectl/cmd/util/factory.go +++ b/pkg/kubectl/cmd/util/factory.go @@ -67,8 +67,14 @@ type Factory interface { // Generally provides discovery, negotiation, and no-dep calls. // TODO The polymorphic calls probably deserve their own interface. type ClientAccessFactory interface { + // Returns a client.Config for accessing the Kubernetes server. + ToRESTConfig() (*restclient.Config, error) + // Returns interfaces for dealing with arbitrary runtime.Objects. + ToRESTMapper() (meta.RESTMapper, error) // Returns a discovery client - DiscoveryClient() (discovery.CachedDiscoveryInterface, error) + ToDiscoveryClient() (discovery.CachedDiscoveryInterface, error) + // Returns kubeconfig loader + ToRawKubeConfigLoader() clientcmd.ClientConfig // ClientSet gives you back an internal, generated clientset ClientSet() (internalclientset.Interface, error) @@ -79,16 +85,8 @@ type ClientAccessFactory interface { // KubernetesClientSet gives you back an external clientset KubernetesClientSet() (*kubernetes.Clientset, error) - // Returns interfaces for dealing with arbitrary runtime.Objects. - RESTMapper() (meta.RESTMapper, error) - // Returns a RESTClient for accessing Kubernetes resources or an error. RESTClient() (*restclient.RESTClient, error) - // Returns a client.Config for accessing the Kubernetes server. - ClientConfig() (*restclient.Config, error) - // BareClientConfig returns a client.Config that has NOT been negotiated. It's - // just directions to the server. People use this to build RESTMappers on top of - BareClientConfig() (*restclient.Config, error) // NewBuilder returns an object that assists in loading objects from both disk and the server // and which implements the common patterns for CLI interactions with generic resources. diff --git a/pkg/kubectl/cmd/util/factory_builder.go b/pkg/kubectl/cmd/util/factory_builder.go index 81145a4cc94..1bbd0ce5373 100644 --- a/pkg/kubectl/cmd/util/factory_builder.go +++ b/pkg/kubectl/cmd/util/factory_builder.go @@ -40,7 +40,7 @@ func NewBuilderFactory(clientAccessFactory ClientAccessFactory, objectMappingFac } func (f *ring2Factory) ScaleClient() (scaleclient.ScalesGetter, error) { - discoClient, err := f.clientAccessFactory.DiscoveryClient() + discoClient, err := f.clientAccessFactory.ToDiscoveryClient() if err != nil { return nil, err } @@ -49,7 +49,7 @@ func (f *ring2Factory) ScaleClient() (scaleclient.ScalesGetter, error) { return nil, err } resolver := scaleclient.NewDiscoveryScaleKindResolver(discoClient) - mapper, err := f.clientAccessFactory.RESTMapper() + mapper, err := f.clientAccessFactory.ToRESTMapper() if err != nil { return nil, err } diff --git a/pkg/kubectl/cmd/util/factory_client_access.go b/pkg/kubectl/cmd/util/factory_client_access.go index f54d58d4d23..ef6506899ca 100644 --- a/pkg/kubectl/cmd/util/factory_client_access.go +++ b/pkg/kubectl/cmd/util/factory_client_access.go @@ -81,24 +81,24 @@ func NewClientAccessFactory(clientGetter RESTClientGetter) ClientAccessFactory { return f } -func (f *ring0Factory) ClientConfig() (*restclient.Config, error) { +func (f *ring0Factory) ToRESTConfig() (*restclient.Config, error) { return f.clientGetter.ToRESTConfig() } -func (f *ring0Factory) RESTMapper() (meta.RESTMapper, error) { +func (f *ring0Factory) ToRESTMapper() (meta.RESTMapper, error) { return f.clientGetter.ToRESTMapper() } -func (f *ring0Factory) BareClientConfig() (*restclient.Config, error) { - return f.clientGetter.ToRESTConfig() -} - -func (f *ring0Factory) DiscoveryClient() (discovery.CachedDiscoveryInterface, error) { +func (f *ring0Factory) ToDiscoveryClient() (discovery.CachedDiscoveryInterface, error) { return f.clientGetter.ToDiscoveryClient() } +func (f *ring0Factory) ToRawKubeConfigLoader() clientcmd.ClientConfig { + return f.clientGetter.ToRawKubeConfigLoader() +} + func (f *ring0Factory) KubernetesClientSet() (*kubernetes.Clientset, error) { - clientConfig, err := f.ClientConfig() + clientConfig, err := f.ToRESTConfig() if err != nil { return nil, err } @@ -106,7 +106,7 @@ func (f *ring0Factory) KubernetesClientSet() (*kubernetes.Clientset, error) { } func (f *ring0Factory) ClientSet() (internalclientset.Interface, error) { - clientConfig, err := f.ClientConfig() + clientConfig, err := f.ToRESTConfig() if err != nil { return nil, err } @@ -114,7 +114,7 @@ func (f *ring0Factory) ClientSet() (internalclientset.Interface, error) { } func (f *ring0Factory) DynamicClient() (dynamic.Interface, error) { - clientConfig, err := f.ClientConfig() + clientConfig, err := f.ToRESTConfig() if err != nil { return nil, err } @@ -127,7 +127,7 @@ func (f *ring0Factory) NewBuilder() *resource.Builder { } func (f *ring0Factory) RESTClient() (*restclient.RESTClient, error) { - clientConfig, err := f.ClientConfig() + clientConfig, err := f.ToRESTConfig() if err != nil { return nil, err } diff --git a/pkg/kubectl/cmd/util/factory_object_mapping.go b/pkg/kubectl/cmd/util/factory_object_mapping.go index 5e74534c9c1..177a80dc22a 100644 --- a/pkg/kubectl/cmd/util/factory_object_mapping.go +++ b/pkg/kubectl/cmd/util/factory_object_mapping.go @@ -75,7 +75,7 @@ func NewObjectMappingFactory(clientAccessFactory ClientAccessFactory) ObjectMapp } func (f *ring1Factory) ClientForMapping(mapping *meta.RESTMapping) (resource.RESTClient, error) { - cfg, err := f.clientAccessFactory.ClientConfig() + cfg, err := f.clientAccessFactory.ToRESTConfig() if err != nil { return nil, err } @@ -95,7 +95,7 @@ func (f *ring1Factory) ClientForMapping(mapping *meta.RESTMapping) (resource.RES } func (f *ring1Factory) UnstructuredClientForMapping(mapping *meta.RESTMapping) (resource.RESTClient, error) { - cfg, err := f.clientAccessFactory.BareClientConfig() + cfg, err := f.clientAccessFactory.ToRESTConfig() if err != nil { return nil, err } @@ -113,7 +113,7 @@ func (f *ring1Factory) UnstructuredClientForMapping(mapping *meta.RESTMapping) ( } func (f *ring1Factory) Describer(mapping *meta.RESTMapping) (printers.Describer, error) { - clientConfig, err := f.clientAccessFactory.ClientConfig() + clientConfig, err := f.clientAccessFactory.ToRESTConfig() if err != nil { return nil, err } @@ -131,7 +131,7 @@ func (f *ring1Factory) Describer(mapping *meta.RESTMapping) (printers.Describer, // helper function to make a generic describer, or return an error func genericDescriber(clientAccessFactory ClientAccessFactory, mapping *meta.RESTMapping) (printers.Describer, error) { - clientConfig, err := clientAccessFactory.ClientConfig() + clientConfig, err := clientAccessFactory.ToRESTConfig() if err != nil { return nil, err } @@ -421,7 +421,7 @@ func (f *ring1Factory) Validator(validate bool) (validation.Schema, error) { // OpenAPISchema returns metadata and structural information about Kubernetes object definitions. func (f *ring1Factory) OpenAPISchema() (openapi.Resources, error) { - discovery, err := f.clientAccessFactory.DiscoveryClient() + discovery, err := f.clientAccessFactory.ToDiscoveryClient() if err != nil { return nil, err } diff --git a/pkg/kubectl/cmd/version.go b/pkg/kubectl/cmd/version.go index 6f5161fbe34..d5f6030c227 100644 --- a/pkg/kubectl/cmd/version.go +++ b/pkg/kubectl/cmd/version.go @@ -83,7 +83,7 @@ func NewCmdVersion(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *co func (o *VersionOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) error { var err error - o.discoveryClient, err = f.DiscoveryClient() + o.discoveryClient, err = f.ToDiscoveryClient() if err != nil { return err } diff --git a/test/integration/apiserver/print_test.go b/test/integration/apiserver/print_test.go index 542a53f5d2c..8af6cd9b0e9 100644 --- a/test/integration/apiserver/print_test.go +++ b/test/integration/apiserver/print_test.go @@ -174,7 +174,7 @@ func TestServerSidePrint(t *testing.T) { configFlags.WithDiscoveryClient(cachedClient) factory := util.NewFactory(configFlags) - mapper, err := factory.RESTMapper() + mapper, err := factory.ToRESTMapper() if err != nil { t.Errorf("unexpected error getting mapper: %v", err) return