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()