From ab80af497e4c0ed89e505bbdda2c6316b3df9d5b Mon Sep 17 00:00:00 2001 From: Andriy Dzikh Date: Thu, 20 May 2021 14:03:08 -0700 Subject: [PATCH 1/3] Create error code for found, but unhealthy drivers. --- pkg/minikube/reason/reason.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/minikube/reason/reason.go b/pkg/minikube/reason/reason.go index 6b02eb92f6..566cd5669c 100644 --- a/pkg/minikube/reason/reason.go +++ b/pkg/minikube/reason/reason.go @@ -223,6 +223,7 @@ var ( DrvUnsupportedProfile = Kind{ID: "DRV_UNSUPPORTED_PROFILE", ExitCode: ExDriverUnsupported} DrvNotFound = Kind{ID: "DRV_NOT_FOUND", ExitCode: ExDriverNotFound} DrvNotDetected = Kind{ID: "DRV_NOT_DETECTED", ExitCode: ExDriverNotFound} + DrvNotHealthy = Kind{ID: "DRV_NOT_HEALTHY", ExitCode: ExDriverNotFound} DrvAsRoot = Kind{ID: "DRV_AS_ROOT", ExitCode: ExDriverPermission} DrvNeedsRoot = Kind{ID: "DRV_NEEDS_ROOT", ExitCode: ExDriverPermission} DrvNeedsAdministrator = Kind{ID: "DRV_NEEDS_ADMINISTRATOR", ExitCode: ExDriverPermission} From b2d771cd891894a929da225d9ba34616f2ea8bfd Mon Sep 17 00:00:00 2001 From: Andriy Dzikh Date: Thu, 20 May 2021 14:03:25 -0700 Subject: [PATCH 2/3] Use unhealthy error code if no driver is picked and any driver is installed but unhealthy. --- cmd/minikube/cmd/start.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index 000e13029f..2439866300 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -605,7 +605,18 @@ func selectDriver(existing *config.ClusterConfig) (registry.DriverState, []regis out.Infof("{{ .name }}: Suggestion: {{ .suggestion}}", out.V{"name": r.Name, "suggestion": r.Suggestion}) } } - exit.Message(reason.DrvNotDetected, "No possible driver was detected. Try specifying --driver, or see https://minikube.sigs.k8s.io/docs/start/") + foundUnhealthy := false + for _, reject := range rejects { + if reject.State.Installed && !reject.State.Healthy { + foundUnhealthy = true + break + } + } + if foundUnhealthy { + exit.Message(reason.DrvNotHealthy, "Found driver(s) but none were healthy. See above for suggestions how to fix installed drivers.") + } else { + exit.Message(reason.DrvNotDetected, "No possible driver was detected. Try specifying --driver, or see https://minikube.sigs.k8s.io/docs/start/") + } } if len(alts) > 1 { From d59570c1f0d3b1553560578e49cc862acdc430c9 Mon Sep 17 00:00:00 2001 From: Andriy Dzikh Date: Fri, 21 May 2021 09:43:04 -0700 Subject: [PATCH 3/3] Add DRV_DOCKER_NOT_RUNNING error for cases where specifically docker fails. --- cmd/minikube/cmd/start.go | 10 ++++++++-- pkg/minikube/reason/reason.go | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index 2439866300..d49cdcbb7e 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -605,14 +605,20 @@ func selectDriver(existing *config.ClusterConfig) (registry.DriverState, []regis out.Infof("{{ .name }}: Suggestion: {{ .suggestion}}", out.V{"name": r.Name, "suggestion": r.Suggestion}) } } + foundStoppedDocker := false foundUnhealthy := false for _, reject := range rejects { - if reject.State.Installed && !reject.State.Healthy { + if reject.Name == driver.Docker && reject.State.Installed && !reject.State.Running { + foundStoppedDocker = true + break + } else if reject.State.Installed && !reject.State.Healthy { foundUnhealthy = true break } } - if foundUnhealthy { + if foundStoppedDocker { + exit.Message(reason.DrvDockerNotRunning, "Found docker, but the docker service isn't running. Try restarting the docker service.") + } else if foundUnhealthy { exit.Message(reason.DrvNotHealthy, "Found driver(s) but none were healthy. See above for suggestions how to fix installed drivers.") } else { exit.Message(reason.DrvNotDetected, "No possible driver was detected. Try specifying --driver, or see https://minikube.sigs.k8s.io/docs/start/") diff --git a/pkg/minikube/reason/reason.go b/pkg/minikube/reason/reason.go index 566cd5669c..8667bd5f5c 100644 --- a/pkg/minikube/reason/reason.go +++ b/pkg/minikube/reason/reason.go @@ -224,6 +224,7 @@ var ( DrvNotFound = Kind{ID: "DRV_NOT_FOUND", ExitCode: ExDriverNotFound} DrvNotDetected = Kind{ID: "DRV_NOT_DETECTED", ExitCode: ExDriverNotFound} DrvNotHealthy = Kind{ID: "DRV_NOT_HEALTHY", ExitCode: ExDriverNotFound} + DrvDockerNotRunning = Kind{ID: "DRV_DOCKER_NOT_RUNNING", ExitCode: ExDriverNotFound} DrvAsRoot = Kind{ID: "DRV_AS_ROOT", ExitCode: ExDriverPermission} DrvNeedsRoot = Kind{ID: "DRV_NEEDS_ROOT", ExitCode: ExDriverPermission} DrvNeedsAdministrator = Kind{ID: "DRV_NEEDS_ADMINISTRATOR", ExitCode: ExDriverPermission}