mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-20 10:20:51 +00:00
Merge pull request #111455 from chendave/clientset
kubeadm: move `getClientSet` to cmd utils
This commit is contained in:
commit
2c8af1e4b1
@ -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)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user