From 2ed79f6315a35a76b405f62aa85088a5b9bd9af4 Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Wed, 29 Aug 2018 10:02:15 +0200 Subject: rootless: fix top join the user namespace used to create the container so that psgo can work in the same way as with root containers. Signed-off-by: Giuseppe Scrivano Closes: #1371 Approved by: rhatdan --- cmd/podman/main.go | 1 + cmd/podman/top.go | 13 +++++++++++++ 2 files changed, 14 insertions(+) (limited to 'cmd') diff --git a/cmd/podman/main.go b/cmd/podman/main.go index bd1cc8b95..06d9308e0 100644 --- a/cmd/podman/main.go +++ b/cmd/podman/main.go @@ -34,6 +34,7 @@ var cmdsNotRequiringRootless = map[string]bool{ "kill": true, "search": true, "stop": true, + "top": true, } func main() { diff --git a/cmd/podman/top.go b/cmd/podman/top.go index 43728893c..5517fe230 100644 --- a/cmd/podman/top.go +++ b/cmd/podman/top.go @@ -8,6 +8,7 @@ import ( "github.com/containers/libpod/cmd/podman/libpodruntime" "github.com/containers/libpod/libpod" + "github.com/containers/libpod/pkg/rootless" "github.com/pkg/errors" "github.com/urfave/cli" ) @@ -69,6 +70,7 @@ func topCmd(c *cli.Context) error { return err } + rootless.SetSkipStorageSetup(true) runtime, err := libpodruntime.GetRuntime(c) if err != nil { return errors.Wrapf(err, "error creating libpod runtime") @@ -96,6 +98,17 @@ func topCmd(c *cli.Context) error { return errors.Errorf("top can only be used on running containers") } + pid, err := container.PID() + if err != nil { + return err + } + became, ret, err := rootless.JoinNS(uint(pid)) + if err != nil { + return err + } + if became { + os.Exit(ret) + } psOutput, err := container.GetContainerPidInformation(descriptors) if err != nil { return err -- cgit v1.2.3-54-g00ecf