diff options
author | openshift-ci[bot] <75433959+openshift-ci[bot]@users.noreply.github.com> | 2021-07-30 15:48:14 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-30 15:48:14 +0000 |
commit | aaf02cfbd41e7d7fbd009a4f01a0fa45b3e49f61 (patch) | |
tree | 997bf585beb9bbfa97878a425b693a40cbc64568 /pkg/domain | |
parent | 4429c7c713677a304a5ea62eec3cd1524bd2ce3f (diff) | |
parent | 2a484e782a23ad67c98e22121fde2b83b4072d1a (diff) | |
download | podman-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.go | 30 |
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 { |