From 5dd48444767537ff28ca1e2d061e607362dd33c5 Mon Sep 17 00:00:00 2001 From: Ravindra Ratnawat Date: Fri, 2 Nov 2018 22:41:51 +0530 Subject: [PATCH] make sure the minikube is not running --- cmd/minikube/cmd/start.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index 3351de89b71f..6760d1e5a26f 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -29,7 +29,10 @@ import ( "time" "github.com/blang/semver" + "github.com/docker/machine/libmachine" + "github.com/docker/machine/libmachine/drivers" "github.com/docker/machine/libmachine/host" + "github.com/docker/machine/libmachine/state" "github.com/golang/glog" "github.com/spf13/cobra" "github.com/spf13/viper" @@ -112,6 +115,7 @@ func runStart(cmd *cobra.Command, args []string) { } api, err := machine.NewAPIClient() + ensureNotRunning(api, constants.DefaultMachineName) if err != nil { fmt.Fprintf(os.Stderr, "Error getting client: %v\n", err) os.Exit(1) @@ -500,3 +504,16 @@ func saveConfigToFile(data []byte, file string) error { } return nil } + +func ensureNotRunning(client libmachine.API, machineName string) { + + hostVm, err := client.Load(machineName) + + if err != nil { + fmt.Fprintln(os.Stderr, fmt.Sprintf(err.Error())) + } + if drivers.MachineInState(hostVm.Driver, state.Running)() && hostVm.DriverName != "generic" { + fmt.Fprintln(os.Stdout, fmt.Sprintf("The '%s' VM is already running.", machineName)) + os.Exit(0) + } +}