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) {
|
func newResetData(cmd *cobra.Command, options *resetOptions, in io.Reader, out io.Writer) (*resetData, error) {
|
||||||
var cfg *kubeadmapi.InitConfiguration
|
var cfg *kubeadmapi.InitConfiguration
|
||||||
|
|
||||||
client, err := getClientset(options.kubeconfigPath, false)
|
client, err := cmdutil.GetClientset(options.kubeconfigPath, false)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
klog.V(1).Infof("[reset] Loaded client set from kubeconfig file: %s", options.kubeconfigPath)
|
klog.V(1).Infof("[reset] Loaded client set from kubeconfig file: %s", options.kubeconfigPath)
|
||||||
cfg, err = configutil.FetchInitConfigurationFromCluster(client, nil, "reset", false, false)
|
cfg, err = configutil.FetchInitConfigurationFromCluster(client, nil, "reset", false, false)
|
||||||
|
@ -20,7 +20,6 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
|
||||||
"strings"
|
"strings"
|
||||||
"text/tabwriter"
|
"text/tabwriter"
|
||||||
"time"
|
"time"
|
||||||
@ -49,9 +48,7 @@ import (
|
|||||||
cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util"
|
cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util"
|
||||||
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
||||||
tokenphase "k8s.io/kubernetes/cmd/kubeadm/app/phases/bootstraptoken/node"
|
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"
|
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"
|
"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")
|
klog.V(1).Infoln("[token] getting Clientsets from kubeconfig file")
|
||||||
kubeConfigFile = cmdutil.GetKubeConfigPath(kubeConfigFile)
|
kubeConfigFile = cmdutil.GetKubeConfigPath(kubeConfigFile)
|
||||||
client, err := getClientset(kubeConfigFile, dryRun)
|
client, err := cmdutil.GetClientset(kubeConfigFile, dryRun)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -162,7 +159,7 @@ func newCmdToken(out io.Writer, errW io.Writer) *cobra.Command {
|
|||||||
`),
|
`),
|
||||||
RunE: func(tokenCmd *cobra.Command, args []string) error {
|
RunE: func(tokenCmd *cobra.Command, args []string) error {
|
||||||
kubeConfigFile = cmdutil.GetKubeConfigPath(kubeConfigFile)
|
kubeConfigFile = cmdutil.GetKubeConfigPath(kubeConfigFile)
|
||||||
client, err := getClientset(kubeConfigFile, dryRun)
|
client, err := cmdutil.GetClientset(kubeConfigFile, dryRun)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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)
|
return errors.Errorf("missing subcommand; 'token delete' is missing token of form %q", bootstrapapi.BootstrapTokenIDPattern)
|
||||||
}
|
}
|
||||||
kubeConfigFile = cmdutil.GetKubeConfigPath(kubeConfigFile)
|
kubeConfigFile = cmdutil.GetKubeConfigPath(kubeConfigFile)
|
||||||
client, err := getClientset(kubeConfigFile, dryRun)
|
client, err := cmdutil.GetClientset(kubeConfigFile, dryRun)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -433,14 +430,3 @@ func RunDeleteTokens(out io.Writer, client clientset.Interface, tokenIDsOrTokens
|
|||||||
}
|
}
|
||||||
return nil
|
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"
|
kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3"
|
||||||
outputapischeme "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/scheme"
|
outputapischeme "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/scheme"
|
||||||
outputapiv1alpha2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/v1alpha2"
|
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"
|
"k8s.io/kubernetes/cmd/kubeadm/app/util/output"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -275,12 +276,12 @@ func TestGetClientset(t *testing.T) {
|
|||||||
fullPath := filepath.Join(tmpDir, testConfigTokenFile)
|
fullPath := filepath.Join(tmpDir, testConfigTokenFile)
|
||||||
|
|
||||||
// test dryRun = false on a non-exisiting file
|
// 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)
|
t.Errorf("getClientset(); dry-run: false; did no fail for test file %q: %v", fullPath, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// test dryRun = true on a non-exisiting file
|
// 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)
|
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
|
// 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)
|
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)
|
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 {
|
if err != nil {
|
||||||
t.Errorf("Unable to run getClientset() for test file %q: %v", fullPath, err)
|
t.Errorf("Unable to run getClientset() for test file %q: %v", fullPath, err)
|
||||||
}
|
}
|
||||||
|
@ -20,18 +20,22 @@ import (
|
|||||||
"bufio"
|
"bufio"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
"github.com/spf13/pflag"
|
"github.com/spf13/pflag"
|
||||||
|
|
||||||
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/client-go/tools/clientcmd"
|
"k8s.io/client-go/tools/clientcmd"
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
|
|
||||||
kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3"
|
kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3"
|
||||||
"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options"
|
"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options"
|
||||||
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
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
|
// 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")
|
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