diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2019-03-11 10:01:25 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-11 10:01:25 -0700 |
commit | 6421208e0f6ff1fba58eafdab12e897b5ed12e3b (patch) | |
tree | d2a44ec8b92d343d675027f524738875191027d8 /cmd/podman/pod.go | |
parent | f5afe88098d8825ea63ccb63875d48edab0eb111 (diff) | |
parent | 231129e4dc083d9f63cf1876cc1695f7f8c03f25 (diff) | |
download | podman-6421208e0f6ff1fba58eafdab12e897b5ed12e3b.tar.gz podman-6421208e0f6ff1fba58eafdab12e897b5ed12e3b.tar.bz2 podman-6421208e0f6ff1fba58eafdab12e897b5ed12e3b.zip |
Merge pull request #2583 from giuseppe/rootless-fix-pod-rm
rootless: fix stop and rm when the container is running with uid != 0
Diffstat (limited to 'cmd/podman/pod.go')
-rw-r--r-- | cmd/podman/pod.go | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/cmd/podman/pod.go b/cmd/podman/pod.go index 2d9bca21d..9a9c7a702 100644 --- a/cmd/podman/pod.go +++ b/cmd/podman/pod.go @@ -1,7 +1,12 @@ 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" ) @@ -34,6 +39,48 @@ var podSubCommands = []*cobra.Command{ _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()) |