Skip to content

Commit

Permalink
Added option --all to stop all clusters
Browse files Browse the repository at this point in the history
Fixes #8237

Signed-off-by: kadern0 <kaderno@gmail.com>
  • Loading branch information
kadern0 committed May 27, 2020
1 parent ba9d1ba commit 05d70c1
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 15 deletions.
61 changes: 46 additions & 15 deletions cmd/minikube/cmd/stop.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,20 @@ import (
"github.com/golang/glog"
"github.com/pkg/errors"
"github.com/spf13/cobra"
"github.com/spf13/viper"
"k8s.io/minikube/pkg/minikube/config"
"k8s.io/minikube/pkg/minikube/driver"
"k8s.io/minikube/pkg/minikube/exit"
"k8s.io/minikube/pkg/minikube/kubeconfig"
"k8s.io/minikube/pkg/minikube/localpath"
"k8s.io/minikube/pkg/minikube/machine"
"k8s.io/minikube/pkg/minikube/mustload"
"k8s.io/minikube/pkg/minikube/out"
"k8s.io/minikube/pkg/util/retry"
)

var stopAll bool

// stopCmd represents the stop command
var stopCmd = &cobra.Command{
Use: "stop",
Expand All @@ -42,28 +47,54 @@ itself, leaving all files intact. The cluster can be started again with the "sta
Run: runStop,
}

// runStop handles the executes the flow of "minikube stop"
func runStop(cmd *cobra.Command, args []string) {
cname := ClusterFlagValue()
func init() {

api, cc := mustload.Partial(cname)
defer api.Close()
stopCmd.Flags().BoolVar(&stopAll, "all", false, "Set flag to stop all profiles")

for _, n := range cc.Nodes {
machineName := driver.MachineName(*cc, n)
nonexistent := stop(api, machineName)
if err := viper.GetViper().BindPFlags(stopCmd.Flags()); err != nil {
exit.WithError("unable to bind flags", err)
}

if !nonexistent {
out.T(out.Stopped, `Node "{{.node_name}}" stopped.`, out.V{"node_name": machineName})
RootCmd.AddCommand(stopCmd)
}

// runStop handles the executes the flow of "minikube stop"
func runStop(cmd *cobra.Command, args []string) {
// new code
var profilesToStop []string
if stopAll {
validProfiles, _, err := config.ListProfiles()
if err != nil {
glog.Warningf("'error loading profiles in minikube home %q: %v", localpath.MiniPath(), err)
}
for _, profile := range validProfiles {
profilesToStop = append(profilesToStop, profile.Name)
}
} else {
cname := ClusterFlagValue()
profilesToStop = append(profilesToStop, cname)
}
for _, profile := range profilesToStop {
// end new code
api, cc := mustload.Partial(profile)
defer api.Close()

for _, n := range cc.Nodes {
machineName := driver.MachineName(*cc, n)
nonexistent := stop(api, machineName)

if !nonexistent {
out.T(out.Stopped, `Node "{{.node_name}}" stopped.`, out.V{"node_name": machineName})
}
}

if err := killMountProcess(); err != nil {
out.WarningT("Unable to kill mount process: {{.error}}", out.V{"error": err})
}
if err := killMountProcess(); err != nil {
out.WarningT("Unable to kill mount process: {{.error}}", out.V{"error": err})
}

if err := kubeconfig.UnsetCurrentContext(cname, kubeconfig.PathFromEnv()); err != nil {
exit.WithError("update config", err)
if err := kubeconfig.UnsetCurrentContext(profile, kubeconfig.PathFromEnv()); err != nil {
exit.WithError("update config", err)
}
}
}

Expand Down
1 change: 1 addition & 0 deletions site/content/en/docs/commands/stop.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ minikube stop [flags]
### Options

```
--all Set flag to stop all profiles
-h, --help help for stop
```

Expand Down

0 comments on commit 05d70c1

Please sign in to comment.