From c7910e75e35a5d9d44ebd3204d4f58769ae077b4 Mon Sep 17 00:00:00 2001 From: Daniel J Walsh Date: Mon, 29 Jan 2024 09:49:28 -0500 Subject: [PATCH] Show network name network events with podman -remote events Fixes: https://github.com/containers/podman/issues/21311 Signed-off-by: Daniel J Walsh --- pkg/domain/entities/events.go | 9 ++++++++- test/e2e/events_test.go | 30 ++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/pkg/domain/entities/events.go b/pkg/domain/entities/events.go index f1b4e0c90e..bb84597095 100644 --- a/pkg/domain/entities/events.go +++ b/pkg/domain/entities/events.go @@ -31,16 +31,20 @@ func ConvertToLibpodEvent(e Event) *libpodEvents.Event { } image := e.Actor.Attributes["image"] name := e.Actor.Attributes["name"] - details := e.Actor.Attributes + network := e.Actor.Attributes["network"] podID := e.Actor.Attributes["podId"] + details := e.Actor.Attributes delete(details, "image") delete(details, "name") + delete(details, "network") + delete(details, "podId") delete(details, "containerExitCode") return &libpodEvents.Event{ ContainerExitCode: &exitCode, ID: e.Actor.ID, Image: image, Name: name, + Network: network, Status: status, Time: time.Unix(0, e.TimeNano), Type: t, @@ -64,6 +68,9 @@ func ConvertToEntitiesEvent(e libpodEvents.Event) *types.Event { attributes["containerExitCode"] = strconv.Itoa(*e.ContainerExitCode) } attributes["podId"] = e.PodID + if e.Network != "" { + attributes["network"] = e.Network + } message := dockerEvents.Message{ // Compatibility with clients that still look for deprecated API elements Status: e.Status.String(), diff --git a/test/e2e/events_test.go b/test/e2e/events_test.go index cf62c8a8de..a0ee8b4c18 100644 --- a/test/e2e/events_test.go +++ b/test/e2e/events_test.go @@ -222,6 +222,36 @@ var _ = Describe("Podman events", func() { Expect(result2.OutputToString()).To(ContainSubstring(fmt.Sprintf("pod_id=%s", id))) }) + It("podman events network connection", func() { + network := stringid.GenerateRandomID() + result := podmanTest.Podman([]string{"create", "--network", "bridge", ALPINE, "top"}) + result.WaitWithDefaultTimeout() + Expect(result).Should(ExitCleanly()) + ctrID := result.OutputToString() + + result = podmanTest.Podman([]string{"network", "create", network}) + result.WaitWithDefaultTimeout() + Expect(result).Should(ExitCleanly()) + + result = podmanTest.Podman([]string{"network", "connect", network, ctrID}) + result.WaitWithDefaultTimeout() + Expect(result).Should(ExitCleanly()) + + result = podmanTest.Podman([]string{"network", "disconnect", network, ctrID}) + result.WaitWithDefaultTimeout() + Expect(result).Should(ExitCleanly()) + + result = podmanTest.Podman([]string{"events", "--stream=false", "--since", "30s"}) + result.WaitWithDefaultTimeout() + Expect(result).Should(ExitCleanly()) + lines := result.OutputToStringArray() + Expect(lines).To(HaveLen(5)) + Expect(lines[3]).To(ContainSubstring("network connect")) + Expect(lines[3]).To(ContainSubstring(fmt.Sprintf("(container=%s, name=%s)", ctrID, network))) + Expect(lines[4]).To(ContainSubstring("network disconnect")) + Expect(lines[4]).To(ContainSubstring(fmt.Sprintf("(container=%s, name=%s)", ctrID, network))) + }) + It("podman events health_status generated", func() { session := podmanTest.Podman([]string{"run", "--name", "test-hc", "-dt", "--health-cmd", "echo working", "busybox"}) session.WaitWithDefaultTimeout()