From ccc2b6c9ae50c994aef1f1433bf2cc9f11128d30 Mon Sep 17 00:00:00 2001
From: Liz Rice <liz@lizrice.com>
Date: Thu, 26 Jul 2018 12:03:09 +0100
Subject: [PATCH] Shouldn't need kubelet or kubectl if version specified

---
 cmd/common.go |  6 +++++-
 cmd/util.go   | 10 ++++++----
 2 files changed, 11 insertions(+), 5 deletions(-)

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 {
-- 
GitLab