package main import ( "os" "github.com/containers/libpod/cmd/podman/cliconfig" "github.com/containers/libpod/pkg/adapter" "github.com/containers/libpod/pkg/rootless" "github.com/pkg/errors" "github.com/spf13/cobra" ) var ( podDescription = `Pods are a group of one or more containers sharing the same network, pid and ipc namespaces.` ) var podCommand = cliconfig.PodmanCommand{ Command: &cobra.Command{ Use: "pod", Short: "Manage pods", Long: podDescription, RunE: commandRunE(), }, } //podSubCommands are implemented both in local and remote clients var podSubCommands = []*cobra.Command{ _podCreateCommand, _podExistsCommand, _podInspectCommand, _podKillCommand, _podPauseCommand, _podPsCommand, _podRestartCommand, _podRmCommand, _podStartCommand, _podStatsCommand, _podStopCommand, _podTopCommand, _podUnpauseCommand, } func joinPodNS(runtime *adapter.LocalRuntime, all, latest bool, inputArgs []string) ([]string, bool, bool, error) { if rootless.IsRootless() { if os.Geteuid() == 0 { return []string{rootless.Argument()}, false, false, nil } else { var err error var pods []*adapter.Pod if all { pods, err = runtime.GetAllPods() if err != nil { return nil, false, false, errors.Wrapf(err, "unable to get pods") } } else if latest { pod, err := runtime.GetLatestPod() if err != nil { return nil, false, false, errors.Wrapf(err, "unable to get latest pod") } pods = append(pods, pod) } else { for _, i := range inputArgs { pod, err := runtime.LookupPod(i) if err != nil { return nil, false, false, errors.Wrapf(err, "unable to lookup pod %s", i) } pods = append(pods, pod) } } for _, p := range pods { _, ret, err := runtime.JoinOrCreateRootlessPod(p) if err != nil { return nil, false, false, err } if ret != 0 { os.Exit(ret) } } os.Exit(0) } } return inputArgs, all, latest, nil } func init() { podCommand.AddCommand(podSubCommands...) podCommand.SetHelpTemplate(HelpTemplate()) podCommand.SetUsageTemplate(UsageTemplate()) }