github.1git.de/docker/cli@v26.1.3+incompatible/cli/command/node/promote.go (about) 1 package node 2 3 import ( 4 "context" 5 "fmt" 6 7 "github.com/docker/cli/cli" 8 "github.com/docker/cli/cli/command" 9 "github.com/docker/docker/api/types/swarm" 10 "github.com/spf13/cobra" 11 ) 12 13 func newPromoteCommand(dockerCli command.Cli) *cobra.Command { 14 return &cobra.Command{ 15 Use: "promote NODE [NODE...]", 16 Short: "Promote one or more nodes to manager in the swarm", 17 Args: cli.RequiresMinArgs(1), 18 RunE: func(cmd *cobra.Command, args []string) error { 19 return runPromote(cmd.Context(), dockerCli, args) 20 }, 21 } 22 } 23 24 func runPromote(ctx context.Context, dockerCli command.Cli, nodes []string) error { 25 promote := func(node *swarm.Node) error { 26 if node.Spec.Role == swarm.NodeRoleManager { 27 fmt.Fprintf(dockerCli.Out(), "Node %s is already a manager.\n", node.ID) 28 return errNoRoleChange 29 } 30 node.Spec.Role = swarm.NodeRoleManager 31 return nil 32 } 33 success := func(nodeID string) { 34 fmt.Fprintf(dockerCli.Out(), "Node %s promoted to a manager in the swarm.\n", nodeID) 35 } 36 return updateNodes(ctx, dockerCli, nodes, promote, success) 37 }