diff --git a/libpod/events.go b/libpod/events.go index 157c5c497d..6cb6095e0b 100644 --- a/libpod/events.go +++ b/libpod/events.go @@ -126,12 +126,10 @@ func (c *Container) newExecDiedEvent(sessionID string, exitCode int) { e.Type = events.Container intExitCode := exitCode e.ContainerExitCode = &intExitCode - e.Attributes = make(map[string]string) - e.Attributes["execID"] = sessionID - e.Details = events.Details{ - Attributes: c.Labels(), - } + attrs := c.Labels() + attrs["execID"] = sessionID + e.Attributes = attrs if err := c.runtime.eventer.Write(e); err != nil { logrus.Errorf("Unable to write exec died event: %q", err) @@ -169,6 +167,7 @@ func (p *Pod) newPodEvent(status events.Status) { e.ID = p.ID() e.Name = p.Name() e.Type = events.Pod + e.Attributes = p.Labels() if err := p.runtime.eventer.Write(e); err != nil { logrus.Errorf("Unable to write pod event: %q", err) } @@ -189,6 +188,7 @@ func (v *Volume) newVolumeEvent(status events.Status) { e := events.NewEvent(status) e.Name = v.Name() e.Type = events.Volume + e.Attributes = v.Labels() if err := v.runtime.eventer.Write(e); err != nil { logrus.Errorf("Unable to write volume event: %q", err) } diff --git a/libpod/events/journal_linux.go b/libpod/events/journal_linux.go index f596c870bf..fa3936c9da 100644 --- a/libpod/events/journal_linux.go +++ b/libpod/events/journal_linux.go @@ -77,6 +77,9 @@ func (e EventJournalD) Write(ee Event) error { } case Volume: m["PODMAN_NAME"] = ee.Name + if err := addLabelsToJournal(m, ee.Details.Attributes); err != nil { + return err + } } // starting with commit 7e6e267329 we set LogLevel=notice for the systemd healthcheck unit @@ -275,6 +278,10 @@ func newEventFromJournalEntry(entry *sdjournal.JournalEntry) (*Event, error) { } } newEvent.Details.ContainerInspectData = entry.Fields["PODMAN_CONTAINER_INSPECT_DATA"] + case Volume: + if err := getLabelsFromJournal(entry, &newEvent); err != nil { + return nil, err + } case Network: newEvent.ID = entry.Fields["PODMAN_ID"] newEvent.Network = entry.Fields["PODMAN_NETWORK_NAME"] diff --git a/test/system/090-events.bats b/test/system/090-events.bats index adc12ce92d..e081671033 100644 --- a/test/system/090-events.bats +++ b/test/system/090-events.bats @@ -443,7 +443,9 @@ EOF # bats test_tags=ci:parallel @test "events - volume events" { local vname=v-$(safename) - run_podman volume create $vname + local lname=label$(safename | tr -d -) + local lvalue="labelvalue-$(safename) $(random_string 5)" + run_podman volume create --label="$lname=$lvalue" $vname run_podman volume rm $vname run_podman events --since=1m --stream=false --filter volume=$vname @@ -454,6 +456,10 @@ EOF # Prefix test run_podman events --since=1m --stream=false --filter volume=${vname:0:9} assert "$output" = "$notrunc_results" + + # Labels test + run_podman events --since=1m --stream=false --filter volume=$vname --filter event=create --format "{{.Attributes}}" + assert "$output" =~ "${lname}:${lvalue}" "podman-events output includes volume label" } # bats test_tags=ci:parallel @@ -461,3 +467,17 @@ EOF run_podman 125 events --since="the dawn of time...ish" assert "$output" =~ "failed to parse event filters" } + +# bats test_tags=ci:parallel +@test "events - pod labels in event attributes" { + local pname=p-$(safename) + local lname=label$(safename | tr -d -) + local lvalue="labelvalue-$(safename) $(random_string 5)" + + run_podman pod create --name $pname --label "$lname=$lvalue" + + run_podman events --since=1m --stream=false --filter type=pod --filter event=create --format "{{.Name}} {{.Attributes}}" + assert "$output" =~ "$pname .*${lname}:${lvalue}" "podman-events output includes pod label" + + run_podman pod rm -f $pname +}