mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	kubeadm: move getClientSet to cmd utils
				
					
				
			`getClientSet` is used by both cmd `token` and `reset`, move this method to cmd utils to decouple it from one specific cmd. Signed-off-by: Dave Chen <dave.chen@arm.com>
This commit is contained in:
		@@ -95,7 +95,7 @@ func newResetOptions() *resetOptions {
 | 
			
		||||
func newResetData(cmd *cobra.Command, options *resetOptions, in io.Reader, out io.Writer) (*resetData, error) {
 | 
			
		||||
	var cfg *kubeadmapi.InitConfiguration
 | 
			
		||||
 | 
			
		||||
	client, err := getClientset(options.kubeconfigPath, false)
 | 
			
		||||
	client, err := cmdutil.GetClientset(options.kubeconfigPath, false)
 | 
			
		||||
	if err == nil {
 | 
			
		||||
		klog.V(1).Infof("[reset] Loaded client set from kubeconfig file: %s", options.kubeconfigPath)
 | 
			
		||||
		cfg, err = configutil.FetchInitConfigurationFromCluster(client, nil, "reset", false, false)
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,6 @@ import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
	"os"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"text/tabwriter"
 | 
			
		||||
	"time"
 | 
			
		||||
@@ -49,9 +48,7 @@ import (
 | 
			
		||||
	cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util"
 | 
			
		||||
	kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
 | 
			
		||||
	tokenphase "k8s.io/kubernetes/cmd/kubeadm/app/phases/bootstraptoken/node"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/util/apiclient"
 | 
			
		||||
	configutil "k8s.io/kubernetes/cmd/kubeadm/app/util/config"
 | 
			
		||||
	kubeconfigutil "k8s.io/kubernetes/cmd/kubeadm/app/util/kubeconfig"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/util/output"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -130,7 +127,7 @@ func newCmdToken(out io.Writer, errW io.Writer) *cobra.Command {
 | 
			
		||||
 | 
			
		||||
			klog.V(1).Infoln("[token] getting Clientsets from kubeconfig file")
 | 
			
		||||
			kubeConfigFile = cmdutil.GetKubeConfigPath(kubeConfigFile)
 | 
			
		||||
			client, err := getClientset(kubeConfigFile, dryRun)
 | 
			
		||||
			client, err := cmdutil.GetClientset(kubeConfigFile, dryRun)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
@@ -162,7 +159,7 @@ func newCmdToken(out io.Writer, errW io.Writer) *cobra.Command {
 | 
			
		||||
		`),
 | 
			
		||||
		RunE: func(tokenCmd *cobra.Command, args []string) error {
 | 
			
		||||
			kubeConfigFile = cmdutil.GetKubeConfigPath(kubeConfigFile)
 | 
			
		||||
			client, err := getClientset(kubeConfigFile, dryRun)
 | 
			
		||||
			client, err := cmdutil.GetClientset(kubeConfigFile, dryRun)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
@@ -196,7 +193,7 @@ func newCmdToken(out io.Writer, errW io.Writer) *cobra.Command {
 | 
			
		||||
				return errors.Errorf("missing subcommand; 'token delete' is missing token of form %q", bootstrapapi.BootstrapTokenIDPattern)
 | 
			
		||||
			}
 | 
			
		||||
			kubeConfigFile = cmdutil.GetKubeConfigPath(kubeConfigFile)
 | 
			
		||||
			client, err := getClientset(kubeConfigFile, dryRun)
 | 
			
		||||
			client, err := cmdutil.GetClientset(kubeConfigFile, dryRun)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
@@ -433,14 +430,3 @@ func RunDeleteTokens(out io.Writer, client clientset.Interface, tokenIDsOrTokens
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func getClientset(file string, dryRun bool) (clientset.Interface, error) {
 | 
			
		||||
	if dryRun {
 | 
			
		||||
		dryRunGetter, err := apiclient.NewClientBackedDryRunGetterFromKubeconfig(file)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		return apiclient.NewDryRunClient(dryRunGetter, os.Stdout), nil
 | 
			
		||||
	}
 | 
			
		||||
	return kubeconfigutil.ClientSetFromFile(file)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -35,6 +35,7 @@ import (
 | 
			
		||||
	kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3"
 | 
			
		||||
	outputapischeme "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/scheme"
 | 
			
		||||
	outputapiv1alpha2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/v1alpha2"
 | 
			
		||||
	cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/util/output"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -275,12 +276,12 @@ func TestGetClientset(t *testing.T) {
 | 
			
		||||
	fullPath := filepath.Join(tmpDir, testConfigTokenFile)
 | 
			
		||||
 | 
			
		||||
	// test dryRun = false on a non-exisiting file
 | 
			
		||||
	if _, err = getClientset(fullPath, false); err == nil {
 | 
			
		||||
	if _, err = cmdutil.GetClientset(fullPath, false); err == nil {
 | 
			
		||||
		t.Errorf("getClientset(); dry-run: false; did no fail for test file %q: %v", fullPath, err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// test dryRun = true on a non-exisiting file
 | 
			
		||||
	if _, err = getClientset(fullPath, true); err == nil {
 | 
			
		||||
	if _, err = cmdutil.GetClientset(fullPath, true); err == nil {
 | 
			
		||||
		t.Errorf("getClientset(); dry-run: true; did no fail for test file %q: %v", fullPath, err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -295,7 +296,7 @@ func TestGetClientset(t *testing.T) {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// test dryRun = true on an exisiting file
 | 
			
		||||
	if _, err = getClientset(fullPath, true); err != nil {
 | 
			
		||||
	if _, err = cmdutil.GetClientset(fullPath, true); err != nil {
 | 
			
		||||
		t.Errorf("getClientset(); dry-run: true; failed for test file %q: %v", fullPath, err)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -320,7 +321,7 @@ func TestRunDeleteTokens(t *testing.T) {
 | 
			
		||||
		t.Errorf("Unable to write test file %q: %v", fullPath, err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	client, err := getClientset(fullPath, true)
 | 
			
		||||
	client, err := cmdutil.GetClientset(fullPath, true)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Errorf("Unable to run getClientset() for test file %q: %v", fullPath, err)
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -20,18 +20,22 @@ import (
 | 
			
		||||
	"bufio"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
	"os"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"github.com/spf13/pflag"
 | 
			
		||||
 | 
			
		||||
	clientset "k8s.io/client-go/kubernetes"
 | 
			
		||||
	"k8s.io/client-go/tools/clientcmd"
 | 
			
		||||
	"k8s.io/klog/v2"
 | 
			
		||||
 | 
			
		||||
	kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options"
 | 
			
		||||
	kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
 | 
			
		||||
	"k8s.io/kubernetes/cmd/kubeadm/app/util/apiclient"
 | 
			
		||||
	kubeconfigutil "k8s.io/kubernetes/cmd/kubeadm/app/util/kubeconfig"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// SubCmdRunE returns a function that handles a case where a subcommand must be specified
 | 
			
		||||
@@ -121,3 +125,15 @@ func InteractivelyConfirmAction(action, question string, r io.Reader) error {
 | 
			
		||||
 | 
			
		||||
	return errors.New("won't proceed; the user didn't answer (Y|y) in order to continue")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetClientSet gets a real or fake client depending on whether the user is dry-running or not
 | 
			
		||||
func GetClientset(file string, dryRun bool) (clientset.Interface, error) {
 | 
			
		||||
	if dryRun {
 | 
			
		||||
		dryRunGetter, err := apiclient.NewClientBackedDryRunGetterFromKubeconfig(file)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		return apiclient.NewDryRunClient(dryRunGetter, os.Stdout), nil
 | 
			
		||||
	}
 | 
			
		||||
	return kubeconfigutil.ClientSetFromFile(file)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user