From 45b180c1f84173267a8f30098e0ed55a17bc6d63 Mon Sep 17 00:00:00 2001 From: Valentin Rothberg Date: Wed, 21 Dec 2022 14:03:56 +0100 Subject: [PATCH] events: support "die" filter Map "die" to the "died" status for Docker compat. Fixes: #16857 Signed-off-by: Valentin Rothberg --- docs/source/markdown/podman-events.1.md | 3 ++- libpod/events/filters.go | 3 +++ test/system/090-events.bats | 12 ++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/docs/source/markdown/podman-events.1.md b/docs/source/markdown/podman-events.1.md index 97fc61f126..dd40a48dbb 100644 --- a/docs/source/markdown/podman-events.1.md +++ b/docs/source/markdown/podman-events.1.md @@ -26,6 +26,7 @@ The *container* event type will report the follow statuses: * commit * connect * create + * died * disconnect * exec * exec_died @@ -91,7 +92,7 @@ filters are supported: * volume=name_or_id * type=event_type (described above) -In the case where an ID is used, the ID may be in its full or shortened form. +In the case where an ID is used, the ID may be in its full or shortened form. The "die" event is mapped to "died" for Docker compatibility. #### **--format** diff --git a/libpod/events/filters.go b/libpod/events/filters.go index d5b96e7ece..9057c9b79c 100644 --- a/libpod/events/filters.go +++ b/libpod/events/filters.go @@ -21,6 +21,9 @@ func generateEventFilter(filter, filterValue string) (func(e *Event) bool, error return strings.HasPrefix(e.ID, filterValue) }, nil case "EVENT", "STATUS": + if filterValue == "die" { // Docker compat + filterValue = "died" + } return func(e *Event) bool { return string(e.Status) == filterValue }, nil diff --git a/test/system/090-events.bats b/test/system/090-events.bats index 39da50e5f0..b5b93395f8 100644 --- a/test/system/090-events.bats +++ b/test/system/090-events.bats @@ -291,3 +291,15 @@ EOF _events_container_create_inspect_data journald _events_container_create_inspect_data file } + +@test "events - docker compat" { + local cname=c$(random_string 15) + t0=$(date --iso-8601=seconds) + run_podman run --name=$cname --rm $IMAGE true + run_podman events \ + --since="$t0" \ + --filter=status=$cname \ + --filter=status=die \ + --stream=false + is "${lines[0]}" ".* container died .* (image=$IMAGE, name=$cname, .*)" +}