64 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
| package pods
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"fmt"
 | |
| 
 | |
| 	"github.com/containers/podman/v2/cmd/podman/registry"
 | |
| 	"github.com/containers/podman/v2/cmd/podman/utils"
 | |
| 	"github.com/containers/podman/v2/cmd/podman/validate"
 | |
| 	"github.com/containers/podman/v2/pkg/domain/entities"
 | |
| 	"github.com/spf13/cobra"
 | |
| )
 | |
| 
 | |
| var (
 | |
| 	podPauseDescription = `The pod name or ID can be used.
 | |
| 
 | |
|   All running containers within each specified pod will then be paused.`
 | |
| 	pauseCommand = &cobra.Command{
 | |
| 		Use:   "pause [flags] POD [POD...]",
 | |
| 		Short: "Pause one or more pods",
 | |
| 		Long:  podPauseDescription,
 | |
| 		RunE:  pause,
 | |
| 		Args: func(cmd *cobra.Command, args []string) error {
 | |
| 			return validate.CheckAllLatestAndCIDFile(cmd, args, false, false)
 | |
| 		},
 | |
| 		Example: `podman pod pause podID1 podID2
 | |
|   podman pod pause --latest
 | |
|   podman pod pause --all`,
 | |
| 	}
 | |
| )
 | |
| 
 | |
| var (
 | |
| 	pauseOptions entities.PodPauseOptions
 | |
| )
 | |
| 
 | |
| func init() {
 | |
| 	registry.Commands = append(registry.Commands, registry.CliCommand{
 | |
| 		Mode:    []entities.EngineMode{entities.ABIMode, entities.TunnelMode},
 | |
| 		Command: pauseCommand,
 | |
| 		Parent:  podCmd,
 | |
| 	})
 | |
| 	flags := pauseCommand.Flags()
 | |
| 	flags.BoolVarP(&pauseOptions.All, "all", "a", false, "Pause all running pods")
 | |
| 	validate.AddLatestFlag(pauseCommand, &pauseOptions.Latest)
 | |
| }
 | |
| func pause(_ *cobra.Command, args []string) error {
 | |
| 	var (
 | |
| 		errs utils.OutputErrors
 | |
| 	)
 | |
| 	responses, err := registry.ContainerEngine().PodPause(context.Background(), args, pauseOptions)
 | |
| 	if err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 	// in the cli, first we print out all the successful attempts
 | |
| 	for _, r := range responses {
 | |
| 		if len(r.Errs) == 0 {
 | |
| 			fmt.Println(r.Id)
 | |
| 		} else {
 | |
| 			errs = append(errs, r.Errs...)
 | |
| 		}
 | |
| 	}
 | |
| 	return errs.PrintErrors()
 | |
| }
 |