From a1ebde118a96930d56cb630824157ccbfff619cc Mon Sep 17 00:00:00 2001 From: Leah Neukirchen Date: Fri, 17 Dec 2021 15:21:56 +0100 Subject: legacy events: also set Action="die" Since #10168, on the event "died", the Status is set to "die" for compatibility with the Docker API. Docker also sets the field Action to "died", so do the same here. Signed-off-by: Leah Neukirchen --- pkg/api/handlers/compat/events.go | 1 + 1 file changed, 1 insertion(+) (limited to 'pkg/api/handlers/compat') diff --git a/pkg/api/handlers/compat/events.go b/pkg/api/handlers/compat/events.go index 901acdac4..4f23e681f 100644 --- a/pkg/api/handlers/compat/events.go +++ b/pkg/api/handlers/compat/events.go @@ -91,6 +91,7 @@ func GetEvents(w http.ResponseWriter, r *http.Request) { e := entities.ConvertToEntitiesEvent(*evt) if !utils.IsLibpodRequest(r) && e.Status == "died" { e.Status = "die" + e.Action = "die" } if err := coder.Encode(e); err != nil { -- cgit v1.2.3-54-g00ecf From 116a276e8ca28beca9e60a21680ab3cb94fd5aa1 Mon Sep 17 00:00:00 2001 From: Leah Neukirchen Date: Fri, 17 Dec 2021 15:23:34 +0100 Subject: legacy events: also set exitCode For Status = "die", Docker sets the exit code of the container to a field "exitCode". Podman uses "containerExitCode". Copy the value into "exitCode" as well, for compatibility. Signed-off-by: Leah Neukirchen --- pkg/api/handlers/compat/events.go | 1 + test/apiv2/27-containersEvents.at | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 test/apiv2/27-containersEvents.at (limited to 'pkg/api/handlers/compat') diff --git a/pkg/api/handlers/compat/events.go b/pkg/api/handlers/compat/events.go index 4f23e681f..bc31a36c4 100644 --- a/pkg/api/handlers/compat/events.go +++ b/pkg/api/handlers/compat/events.go @@ -92,6 +92,7 @@ func GetEvents(w http.ResponseWriter, r *http.Request) { if !utils.IsLibpodRequest(r) && e.Status == "died" { e.Status = "die" e.Action = "die" + e.Actor.Attributes["exitCode"] = e.Actor.Attributes["containerExitCode"] } if err := coder.Encode(e); err != nil { diff --git a/test/apiv2/27-containersEvents.at b/test/apiv2/27-containersEvents.at new file mode 100644 index 000000000..a86f2e353 --- /dev/null +++ b/test/apiv2/27-containersEvents.at @@ -0,0 +1,27 @@ +# -*- sh -*- +# +# test container-related events +# + +podman pull $IMAGE &>/dev/null + +# Ensure clean slate +podman rm -a -f &>/dev/null + +START=$(date +%s) + +podman run $IMAGE false || true + +# libpod api +t GET "libpod/events?stream=false&since=$START" 200 \ + 'select(.status | contains("start")).Action=start' \ + 'select(.status | contains("died")).Action=died' \ + 'select(.status | contains("died")).Actor.Attributes.containerExitCode=1' + +# compat api, uses status=die (#12643) +t GET "events?stream=false&since=$START" 200 \ + 'select(.status | contains("start")).Action=start' \ + 'select(.status | contains("die")).Action=die' \ + 'select(.status | contains("die")).Actor.Attributes.exitCode=1' + +# vim: filetype=sh -- cgit v1.2.3-54-g00ecf