summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeah Neukirchen <leah@vuxu.org>2021-12-17 15:23:34 +0100
committerLeah Neukirchen <leah@vuxu.org>2022-01-03 14:00:13 +0100
commit116a276e8ca28beca9e60a21680ab3cb94fd5aa1 (patch)
tree1945c073d58da49b4a28ea8ccfba3d9ea44c8b5b
parenta1ebde118a96930d56cb630824157ccbfff619cc (diff)
downloadpodman-116a276e8ca28beca9e60a21680ab3cb94fd5aa1.tar.gz
podman-116a276e8ca28beca9e60a21680ab3cb94fd5aa1.tar.bz2
podman-116a276e8ca28beca9e60a21680ab3cb94fd5aa1.zip
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 <leah@vuxu.org>
-rw-r--r--pkg/api/handlers/compat/events.go1
-rw-r--r--test/apiv2/27-containersEvents.at27
2 files changed, 28 insertions, 0 deletions
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