mirror of https://github.com/k3s-io/k3s
Merge pull request #70877 from yagonobre/reset
Handler error when kubeconfig file not exist on kubeadm resetpull/58/head
commit
bcef72bf06
|
@ -18,7 +18,6 @@ package cmd
|
|||
|
||||
import (
|
||||
"bufio"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
|
@ -26,6 +25,7 @@ import (
|
|||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"github.com/spf13/cobra"
|
||||
"k8s.io/klog"
|
||||
|
||||
|
@ -51,6 +51,7 @@ func NewCmdReset(in io.Reader, out io.Writer) *cobra.Command {
|
|||
var criSocketPath string
|
||||
var ignorePreflightErrors []string
|
||||
var forceReset bool
|
||||
var client clientset.Interface
|
||||
kubeConfigFile := kubeadmconstants.GetAdminKubeConfigPath()
|
||||
|
||||
cmd := &cobra.Command{
|
||||
|
@ -61,8 +62,10 @@ func NewCmdReset(in io.Reader, out io.Writer) *cobra.Command {
|
|||
kubeadmutil.CheckErr(err)
|
||||
|
||||
kubeConfigFile = cmdutil.FindExistingKubeConfig(kubeConfigFile)
|
||||
client, err := getClientset(kubeConfigFile, false)
|
||||
kubeadmutil.CheckErr(err)
|
||||
if _, err := os.Stat(kubeConfigFile); !os.IsNotExist(err) {
|
||||
client, err = getClientset(kubeConfigFile, false)
|
||||
kubeadmutil.CheckErr(err)
|
||||
}
|
||||
|
||||
r, err := NewReset(in, ignorePreflightErrorsSet, forceReset, certsDir, criSocketPath)
|
||||
kubeadmutil.CheckErr(err)
|
||||
|
@ -189,11 +192,13 @@ func getEtcdDataDir(manifestPath string, client clientset.Interface) (string, er
|
|||
const etcdVolumeName = "etcd-data"
|
||||
var dataDir string
|
||||
|
||||
cfg, err := configutil.FetchConfigFromFileOrCluster(client, os.Stdout, "reset", "", false)
|
||||
if err == nil {
|
||||
return cfg.Etcd.Local.DataDir, nil
|
||||
if client != nil {
|
||||
cfg, err := configutil.FetchConfigFromFileOrCluster(client, os.Stdout, "reset", "", false)
|
||||
if err == nil {
|
||||
return cfg.Etcd.Local.DataDir, nil
|
||||
}
|
||||
klog.Warningf("[reset] Unable to fetch the kubeadm-config ConfigMap, using etcd pod spec as fallback: %v", err)
|
||||
}
|
||||
klog.Warningf("[reset] Unable to fetch the kubeadm-config ConfigMap, using etcd pod spec as fallback: %v", err)
|
||||
|
||||
etcdPod, err := utilstaticpod.ReadStaticPodFromDisk(manifestPath)
|
||||
if err != nil {
|
||||
|
|
|
@ -273,30 +273,38 @@ func TestGetEtcdDataDir(t *testing.T) {
|
|||
podYaml string
|
||||
expectErr bool
|
||||
writeManifest bool
|
||||
validClient bool
|
||||
}{
|
||||
"non-existent file returns error": {
|
||||
dataDir: "",
|
||||
podYaml: "",
|
||||
expectErr: true,
|
||||
writeManifest: false,
|
||||
validClient: true,
|
||||
},
|
||||
"return etcd data dir": {
|
||||
dataDir: "/path/to/etcd",
|
||||
podYaml: etcdPod,
|
||||
expectErr: false,
|
||||
writeManifest: true,
|
||||
validClient: true,
|
||||
},
|
||||
"invalid etcd pod": {
|
||||
dataDir: "",
|
||||
podYaml: etcdPodInvalid,
|
||||
expectErr: true,
|
||||
writeManifest: true,
|
||||
validClient: true,
|
||||
},
|
||||
"etcd pod spec without data volume": {
|
||||
dataDir: "",
|
||||
podYaml: etcdPodWithoutDataVolume,
|
||||
expectErr: true,
|
||||
writeManifest: true,
|
||||
validClient: true,
|
||||
},
|
||||
"kubeconfig file doesn't exist": {
|
||||
dataDir: "/path/to/etcd",
|
||||
podYaml: etcdPod,
|
||||
expectErr: false,
|
||||
writeManifest: true,
|
||||
validClient: false,
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -312,8 +320,15 @@ func TestGetEtcdDataDir(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
client := clientsetfake.NewSimpleClientset()
|
||||
dataDir, err := getEtcdDataDir(manifestPath, client)
|
||||
var dataDir string
|
||||
var err error
|
||||
if test.validClient {
|
||||
client := clientsetfake.NewSimpleClientset()
|
||||
dataDir, err = getEtcdDataDir(manifestPath, client)
|
||||
} else {
|
||||
dataDir, err = getEtcdDataDir(manifestPath, nil)
|
||||
}
|
||||
|
||||
if (err != nil) != test.expectErr {
|
||||
t.Fatalf(dedent.Dedent(
|
||||
"getEtcdDataDir failed\n%s\nexpected error: %t\n\tgot: %t\nerror: %v"),
|
||||
|
|
Loading…
Reference in New Issue