summaryrefslogtreecommitdiff
path: root/pkg/domain
diff options
context:
space:
mode:
authoropenshift-ci[bot] <75433959+openshift-ci[bot]@users.noreply.github.com>2021-07-30 15:48:14 +0000
committerGitHub <noreply@github.com>2021-07-30 15:48:14 +0000
commitaaf02cfbd41e7d7fbd009a4f01a0fa45b3e49f61 (patch)
tree997bf585beb9bbfa97878a425b693a40cbc64568 /pkg/domain
parent4429c7c713677a304a5ea62eec3cd1524bd2ce3f (diff)
parent2a484e782a23ad67c98e22121fde2b83b4072d1a (diff)
downloadpodman-aaf02cfbd41e7d7fbd009a4f01a0fa45b3e49f61.tar.gz
podman-aaf02cfbd41e7d7fbd009a4f01a0fa45b3e49f61.tar.bz2
podman-aaf02cfbd41e7d7fbd009a4f01a0fa45b3e49f61.zip
Merge pull request #11075 from flouthoc/ps-filter-network-by-container
ps: support the `container...` notation for `ps --filter network=...`
Diffstat (limited to 'pkg/domain')
-rw-r--r--pkg/domain/filters/containers.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/pkg/domain/filters/containers.go b/pkg/domain/filters/containers.go
index 965a12468..dc9fed2a4 100644
--- a/pkg/domain/filters/containers.go
+++ b/pkg/domain/filters/containers.go
@@ -211,6 +211,36 @@ func GenerateContainerFilterFuncs(filter string, filterValues []string, r *libpo
}, nil
case "network":
return func(c *libpod.Container) bool {
+ networkMode := c.NetworkMode()
+ // support docker like `--filter network=container:<IDorName>`
+ // check if networkMode is configured as `container:<ctr>`
+ // peform a match against filter `container:<IDorName>`
+ // networks is already going to be empty if `container:<ctr>` is configured as Mode
+ if strings.HasPrefix(networkMode, "container:") {
+ networkModeContainerPart := strings.SplitN(networkMode, ":", 2)
+ if len(networkModeContainerPart) < 2 {
+ return false
+ }
+ networkModeContainerID := networkModeContainerPart[1]
+ for _, val := range filterValues {
+ if strings.HasPrefix(val, "container:") {
+ filterNetworkModePart := strings.SplitN(val, ":", 2)
+ if len(filterNetworkModePart) < 2 {
+ return false
+ }
+ filterNetworkModeIDorName := filterNetworkModePart[1]
+ filterID, err := r.LookupContainerID(filterNetworkModeIDorName)
+ if err != nil {
+ return false
+ }
+ if filterID == networkModeContainerID {
+ return true
+ }
+ }
+ }
+ return false
+ }
+
networks, _, err := c.Networks()
// if err or no networks, quick out
if err != nil || len(networks) == 0 {