Merge pull request #26720 from TusharMohapatra07/main

`feat:` add support for label filter with key only
This commit is contained in:
openshift-merge-bot[bot]
2025-08-04 15:51:20 +00:00
committed by GitHub
3 changed files with 19 additions and 9 deletions

View File

@@ -99,7 +99,7 @@ filters are supported:
| container | [Name or ID] Container's name or ID | | container | [Name or ID] Container's name or ID |
| event | event_status (described above) | | event | event_status (described above) |
| image | [Name or ID] Image name or ID | | image | [Name or ID] Image name or ID |
| label | [key=value] label | | label | [key] or [key=value] label |
| pod | [Name or ID] Pod name or ID | | pod | [Name or ID] Pod name or ID |
| volume | [Name or ID] Volume name or ID | | volume | [Name or ID] Volume name or ID |
| type | Event_type (described above) | | type | Event_type (described above) |

View File

@@ -67,15 +67,21 @@ func generateEventFilter(filter, filterValue string) (func(e *Event) bool, error
var found bool var found bool
// iterate labels and see if we match a key and value // iterate labels and see if we match a key and value
for eventKey, eventValue := range e.Attributes { for eventKey, eventValue := range e.Attributes {
filterValueSplit := strings.SplitN(filterValue, "=", 2) filterKey, filterVal, hasValue := strings.Cut(filterValue, "=")
// if the filter isn't right, just return false // match "key=value" or "key"
if len(filterValueSplit) < 2 { if !hasValue {
return false // match by key only
} if eventKey == filterKey {
if eventKey == filterValueSplit[0] && eventValue == filterValueSplit[1] {
found = true found = true
break break
} }
} else {
// match by key and value
if eventKey == filterKey && eventValue == filterVal {
found = true
break
}
}
} }
return found return found
}, nil }, nil

View File

@@ -28,6 +28,10 @@ load helpers.network
run_podman events --since "$before" --filter type=container --filter container=$cname --filter event=start --stream=false run_podman events --since "$before" --filter type=container --filter container=$cname --filter event=start --stream=false
is "$output" "$expect" "filtering just by container" is "$output" "$expect" "filtering just by container"
# Filter just by label key (without value)
run_podman events --since "$before" --filter type=container --filter label=${labelname} --filter event=start --stream=false
is "$output" "$expect" "filtering by label key only"
# check --no-trunc=false # check --no-trunc=false
truncID=${id:0:12} truncID=${id:0:12}
run_podman events --since "$before" --filter container=$cname --filter event=start --stream=false --no-trunc=false run_podman events --since "$before" --filter container=$cname --filter event=start --stream=false --no-trunc=false