diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index 88fac543ca..fbeb406e89 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -292,9 +292,15 @@ func runStart(cmd *cobra.Command, args []string) { validateFlags(driver) validateUser(driver) - if err := drivers.InstallOrUpdate(driver, viper.GetBool(interactive)); err != nil { - glog.Errorf("error: %v", err) - out.WarningT("Unable to update {{.driver}} driver: {{.error}}", out.V{"driver": driver, "error": err}) + + v, err := version.GetSemverVersion() + if err != nil { + out.WarningT("Error parsing minikube version: {{.error}}", out.V{"error": err}) + } else { + if err := drivers.InstallOrUpdate(driver, constants.MakeMiniPath("bin"), v, viper.GetBool(interactive)); err != nil { + glog.Errorf("error: %v", err) + out.WarningT("Unable to update {{.driver}} driver: {{.error}}", out.V{"driver": driver, "error": err}) + } } k8sVersion, isUpgrade := getKubernetesVersion(oldConfig) diff --git a/pkg/drivers/drivers.go b/pkg/drivers/drivers.go index 9a227ede10..710c3eea89 100644 --- a/pkg/drivers/drivers.go +++ b/pkg/drivers/drivers.go @@ -149,22 +149,16 @@ func fixMachinePermissions(path string) error { } // InstallOrUpdate downloads driver if it is not present, or updates it if there's a newer version -func InstallOrUpdate(driver string, interactive bool) error { +func InstallOrUpdate(driver string, directory string, v semver.Version, interactive bool) error { if driver != constants.DriverKvm2 && driver != constants.DriverHyperkit { return nil } - v, err := version.GetSemverVersion() - if err != nil { - out.WarningT("Error parsing minikube version: {{.error}}", out.V{"error": err}) - return err - } - executable := fmt.Sprintf("docker-machine-driver-%s", driver) path, err := validateDriver(executable, v) if err != nil { glog.Warningf("%s: %v", driver, executable) - path = filepath.Join(constants.MakeMiniPath("bin"), executable) + path = filepath.Join(directory, executable) derr := download(executable, path, v) if derr != nil { return derr diff --git a/test/integration/driver_install_or_update_test.go b/test/integration/driver_install_or_update_test.go index 682b872d0c..933f250d4e 100644 --- a/test/integration/driver_install_or_update_test.go +++ b/test/integration/driver_install_or_update_test.go @@ -84,7 +84,7 @@ func TestKVMDriverInstallOrUpdate(t *testing.T) { t.Fatalf("Expected new semver. test: %v, got: %v", tc.name, err) } - err = drivers.InstallOrUpdate("docker-machine-driver-kvm2", dir, newerVersion) + err = drivers.InstallOrUpdate("docker-machine-driver-kvm2", dir, newerVersion, true) if err != nil { t.Fatalf("Failed to update driver to %v. test: %s, got: %v", newerVersion, tc.name, err) } @@ -147,7 +147,7 @@ func TestHyperKitDriverInstallOrUpdate(t *testing.T) { t.Fatalf("Expected new semver. test: %v, got: %v", tc.name, err) } - err = drivers.InstallOrUpdate("docker-machine-driver-hyperkit", dir, newerVersion) + err = drivers.InstallOrUpdate("docker-machine-driver-hyperkit", dir, newerVersion, true) if err != nil { t.Fatalf("Failed to update driver to %v. test: %s, got: %v", newerVersion, tc.name, err) }