github.com/itscaro/cli@v0.0.0-20190705081621-c9db0fe93829/cli/command/swarm/leave.go (about)

     1  package swarm
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  
     7  	"github.com/docker/cli/cli"
     8  	"github.com/docker/cli/cli/command"
     9  	"github.com/spf13/cobra"
    10  )
    11  
    12  type leaveOptions struct {
    13  	force bool
    14  }
    15  
    16  func newLeaveCommand(dockerCli command.Cli) *cobra.Command {
    17  	opts := leaveOptions{}
    18  
    19  	cmd := &cobra.Command{
    20  		Use:   "leave [OPTIONS]",
    21  		Short: "Leave the swarm",
    22  		Args:  cli.NoArgs,
    23  		RunE: func(cmd *cobra.Command, args []string) error {
    24  			return runLeave(dockerCli, opts)
    25  		},
    26  	}
    27  
    28  	flags := cmd.Flags()
    29  	flags.BoolVarP(&opts.force, "force", "f", false, "Force this node to leave the swarm, ignoring warnings")
    30  	return cmd
    31  }
    32  
    33  func runLeave(dockerCli command.Cli, opts leaveOptions) error {
    34  	client := dockerCli.Client()
    35  	ctx := context.Background()
    36  
    37  	if err := client.SwarmLeave(ctx, opts.force); err != nil {
    38  		return err
    39  	}
    40  
    41  	fmt.Fprintln(dockerCli.Out(), "Node left the swarm.")
    42  	return nil
    43  }