diff options
author | Jhon Honce <jhonce@redhat.com> | 2021-08-02 15:18:54 -0700 |
---|---|---|
committer | Jhon Honce <jhonce@redhat.com> | 2021-08-03 15:31:59 -0700 |
commit | 9cc974c9637554620248941642d58ff34df90ba0 (patch) | |
tree | c3d57474ed38e517de763d694f39913767a27e4b /pkg/api/handlers/libpod/containers_stats.go | |
parent | cbad5616961520831b1f169f03da2a9f81203f71 (diff) | |
download | podman-9cc974c9637554620248941642d58ff34df90ba0.tar.gz podman-9cc974c9637554620248941642d58ff34df90ba0.tar.bz2 podman-9cc974c9637554620248941642d58ff34df90ba0.zip |
Only support containers stats using cgroups v2
Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1988252
Signed-off-by: Jhon Honce <jhonce@redhat.com>
Diffstat (limited to 'pkg/api/handlers/libpod/containers_stats.go')
-rw-r--r-- | pkg/api/handlers/libpod/containers_stats.go | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/pkg/api/handlers/libpod/containers_stats.go b/pkg/api/handlers/libpod/containers_stats.go index 75c404d4f..22faab71f 100644 --- a/pkg/api/handlers/libpod/containers_stats.go +++ b/pkg/api/handlers/libpod/containers_stats.go @@ -7,8 +7,10 @@ import ( "github.com/containers/podman/v3/libpod" "github.com/containers/podman/v3/pkg/api/handlers/utils" + "github.com/containers/podman/v3/pkg/cgroups" "github.com/containers/podman/v3/pkg/domain/entities" "github.com/containers/podman/v3/pkg/domain/infra/abi" + "github.com/containers/podman/v3/pkg/rootless" "github.com/gorilla/schema" "github.com/pkg/errors" "github.com/sirupsen/logrus" @@ -20,6 +22,16 @@ func StatsContainer(w http.ResponseWriter, r *http.Request) { runtime := r.Context().Value("runtime").(*libpod.Runtime) decoder := r.Context().Value("decoder").(*schema.Decoder) + // Check if service is running rootless (cheap check) + if rootless.IsRootless() { + // if so, then verify cgroup v2 available (more expensive check) + if isV2, _ := cgroups.IsCgroup2UnifiedMode(); !isV2 { + msg := "Container stats resource only available for cgroup v2" + utils.Error(w, msg, http.StatusConflict, errors.New(msg)) + return + } + } + query := struct { Containers []string `schema:"containers"` Stream bool `schema:"stream"` |