github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/cmd/podman/pod_start.go (about) 1 package main 2 3 import ( 4 "fmt" 5 6 "github.com/containers/libpod/cmd/podman/cliconfig" 7 "github.com/containers/libpod/pkg/adapter" 8 "github.com/pkg/errors" 9 "github.com/sirupsen/logrus" 10 "github.com/spf13/cobra" 11 ) 12 13 var ( 14 podStartCommand cliconfig.PodStartValues 15 podStartDescription = `The pod name or ID can be used. 16 17 All containers defined in the pod will be started.` 18 _podStartCommand = &cobra.Command{ 19 Use: "start [flags] POD [POD...]", 20 Short: "Start one or more pods", 21 Long: podStartDescription, 22 RunE: func(cmd *cobra.Command, args []string) error { 23 podStartCommand.InputArgs = args 24 podStartCommand.GlobalFlags = MainGlobalOpts 25 podStartCommand.Remote = remoteclient 26 return podStartCmd(&podStartCommand) 27 }, 28 Args: func(cmd *cobra.Command, args []string) error { 29 return checkAllLatestAndCIDFile(cmd, args, false, false) 30 }, 31 Example: `podman pod start podID 32 podman pod start --latest 33 podman pod start --all`, 34 } 35 ) 36 37 func init() { 38 podStartCommand.Command = _podStartCommand 39 podStartCommand.SetHelpTemplate(HelpTemplate()) 40 podStartCommand.SetUsageTemplate(UsageTemplate()) 41 flags := podStartCommand.Flags() 42 flags.BoolVarP(&podStartCommand.All, "all", "a", false, "Start all pods") 43 flags.BoolVarP(&podStartCommand.Latest, "latest", "l", false, "Start the latest pod podman is aware of") 44 markFlagHiddenForRemoteClient("latest", flags) 45 } 46 47 func podStartCmd(c *cliconfig.PodStartValues) error { 48 runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand) 49 if err != nil { 50 return errors.Wrapf(err, "could not get runtime") 51 } 52 defer runtime.DeferredShutdown(false) 53 54 podStartIDs, podStartErrors := runtime.StartPods(getContext(), c) 55 for _, p := range podStartIDs { 56 fmt.Println(p) 57 } 58 if len(podStartErrors) == 0 { 59 return nil 60 } 61 // Grab the last error 62 lastError := podStartErrors[len(podStartErrors)-1] 63 // Remove the last error from the error slice 64 podStartErrors = podStartErrors[:len(podStartErrors)-1] 65 66 for _, err := range podStartErrors { 67 logrus.Errorf("%q", err) 68 } 69 return lastError 70 }