diff --git a/cmd/common.go b/cmd/common.go index 69233c9..54b8b33 100644 --- a/cmd/common.go +++ b/cmd/common.go @@ -44,7 +44,11 @@ func runChecks(nodetype check.NodeType) { file = federatedFile } - path, err := getConfigFilePath(kubeVersion, getKubeVersion(), file) + runningVersion, err := getKubeVersion() + if err != nil && kubeVersion == "" { + exitWithError(fmt.Errorf("Version check failed: %s\nAlternatively, you can specify the version with --version", err)) + } + path, err := getConfigFilePath(kubeVersion, runningVersion, file) if err != nil { exitWithError(fmt.Errorf("can't find %s controls file in %s: %v", nodetype, cfgDir, err)) } diff --git a/cmd/util.go b/cmd/util.go index 5c36fa6..4c62841 100644 --- a/cmd/util.go +++ b/cmd/util.go @@ -129,6 +129,8 @@ func getConfigFilePath(specifiedVersion string, runningVersion string, filename fileVersion = runningVersion } + glog.V(2).Info(fmt.Sprintf("Looking for config for version %s", fileVersion)) + for { path = filepath.Join(cfgDir, fileVersion) file := filepath.Join(path, string(filename)) @@ -265,19 +267,19 @@ func multiWordReplace(s string, subname string, sub string) string { return strings.Replace(s, subname, sub, -1) } -func getKubeVersion() string { +func getKubeVersion() (string, error) { // These executables might not be on the user's path. _, err := exec.LookPath("kubectl") if err != nil { _, err = exec.LookPath("kubelet") if err != nil { - exitWithError(fmt.Errorf("Version check failed: need kubectl or kubelet binaries to get kubernetes version.\nAlternately, you can specify the version with --version")) + return "", fmt.Errorf("need kubectl or kubelet binaries to get kubernetes version") } - return getKubeVersionFromKubelet() + return getKubeVersionFromKubelet(), nil } - return getKubeVersionFromKubectl() + return getKubeVersionFromKubectl(), nil } func getKubeVersionFromKubectl() string {