aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Holzinger <pholzing@redhat.com>2021-12-13 22:20:53 +0100
committerPaul Holzinger <pholzing@redhat.com>2021-12-14 13:52:38 +0100
commit5f1f62f0bb7465cf935ea4353cf5afaa03f633af (patch)
tree0c4964479c27158c225a6ccb93c3a9beee586ec6
parent4543fd463e3d02aea42f1a5b6ed0d2ed190de655 (diff)
downloadpodman-5f1f62f0bb7465cf935ea4353cf5afaa03f633af.tar.gz
podman-5f1f62f0bb7465cf935ea4353cf5afaa03f633af.tar.bz2
podman-5f1f62f0bb7465cf935ea4353cf5afaa03f633af.zip
network ls: show networks in deterministic order
The new network backend stores the networks in a map so the returned order is not deterministic. Lets sort the network names alphabetically to ensure a deterministic order. Signed-off-by: Paul Holzinger <pholzing@redhat.com>
-rw-r--r--cmd/podman/networks/list.go6
-rw-r--r--test/system/500-networking.bats15
2 files changed, 21 insertions, 0 deletions
diff --git a/cmd/podman/networks/list.go b/cmd/podman/networks/list.go
index 6f1a7742a..7ce566225 100644
--- a/cmd/podman/networks/list.go
+++ b/cmd/podman/networks/list.go
@@ -3,6 +3,7 @@ package network
import (
"fmt"
"os"
+ "sort"
"strings"
"github.com/containers/common/pkg/completion"
@@ -73,6 +74,11 @@ func networkList(cmd *cobra.Command, args []string) error {
return err
}
+ // sort the networks to make sure the order is deterministic
+ sort.Slice(responses, func(i, j int) bool {
+ return responses[i].Name < responses[j].Name
+ })
+
switch {
// quiet means we only print the network names
case networkListOptions.Quiet:
diff --git a/test/system/500-networking.bats b/test/system/500-networking.bats
index deadfa90a..4d36163d7 100644
--- a/test/system/500-networking.bats
+++ b/test/system/500-networking.bats
@@ -16,6 +16,21 @@ load helpers
if [[ ${output} = ${heading} ]]; then
die "network ls --noheading did not remove heading: $output"
fi
+
+ # check deterministic list order
+ local net1=a-$(random_string 10)
+ local net2=b-$(random_string 10)
+ local net3=c-$(random_string 10)
+ run_podman network create $net1
+ run_podman network create $net2
+ run_podman network create $net3
+
+ run_podman network ls --quiet
+ # just check the the order of the created networks is correct
+ # we cannot do an exact match since developer and CI systems could contain more networks
+ is "$output" ".*$net1.*$net2.*$net3.*podman.*" "networks sorted alphabetically"
+
+ run_podman network rm $net1 $net2 $net3
}
# Copied from tsweeney's https://github.com/containers/podman/issues/4827