From bf4f77a780863d9edb003fa082830dd76347958b Mon Sep 17 00:00:00 2001 From: Pranav Jituri Date: Mon, 5 Aug 2019 01:22:18 +0530 Subject: [PATCH] Fix crash when the cluster doesn't exist --- cmd/minikube/cmd/delete.go | 6 +++--- pkg/minikube/cluster/cluster.go | 10 ++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/cmd/minikube/cmd/delete.go b/cmd/minikube/cmd/delete.go index d94a6c3a3b..328b6f47e7 100644 --- a/cmd/minikube/cmd/delete.go +++ b/cmd/minikube/cmd/delete.go @@ -17,11 +17,11 @@ limitations under the License. package cmd import ( + "github.com/docker/machine/libmachine/mcnerror" + "github.com/pkg/errors" "os" "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/mcnerror" - "github.com/pkg/errors" "github.com/spf13/cobra" "github.com/spf13/viper" cmdcfg "k8s.io/minikube/cmd/minikube/cmd/config" @@ -69,7 +69,7 @@ func runDelete(cmd *cobra.Command, args []string) { if err = cluster.DeleteHost(api); err != nil { switch err := errors.Cause(err).(type) { case mcnerror.ErrHostDoesNotExist: - out.T(out.Meh, `"{{.name}}" cluster does not exist`, out.V{"name": profile}) + out.T(out.Meh, `"{{.name}}" cluster does not exist. Proceeding ahead with cleanup.`, out.V{"name": err.Name}) default: exit.WithError("Failed to delete cluster", err) } diff --git a/pkg/minikube/cluster/cluster.go b/pkg/minikube/cluster/cluster.go index cbf82a9947..24b2283ffa 100644 --- a/pkg/minikube/cluster/cluster.go +++ b/pkg/minikube/cluster/cluster.go @@ -275,6 +275,16 @@ func DeleteHost(api libmachine.API) error { if err != nil { return errors.Wrap(err, "load") } + + // Get the status of the host. Ensure that it exists before proceeding ahead. + status, err := GetHostStatus(api) + if err != nil { + exit.WithCodeT(exit.Failure,"Unable to get the status of the cluster.") + } + if status == state.None.String() { + return mcnerror.ErrHostDoesNotExist{Name:host.Name} + } + // This is slow if SSH is not responding, but HyperV hangs otherwise, See issue #2914 if host.Driver.DriverName() == constants.DriverHyperv { if err := trySSHPowerOff(host); err != nil {