Adds asc sorting to container ports flattening to fix blinking test.

This commit is contained in:
Manuel Vogel 2018-10-26 07:24:22 +02:00
parent d4032c8939
commit 388e16630d
No known key found for this signature in database
GPG key ID: 533006C7B61DB1CE
2 changed files with 31 additions and 3 deletions

View file

@ -8,11 +8,13 @@ import (
"fmt"
"log"
"math/rand"
"sort"
"strconv"
"strings"
"time"
"context"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/network"
@ -428,12 +430,37 @@ func resourceDockerContainerDelete(d *schema.ResourceData, meta interface{}) err
}
// TODO extract to structures_container.go
type byPortAndProtocol []string
func (s byPortAndProtocol) Len() int {
return len(s)
}
func (s byPortAndProtocol) Swap(i, j int) {
s[i], s[j] = s[j], s[i]
}
func (s byPortAndProtocol) Less(i, j int) bool {
iSplit := strings.Split(string(s[i]), "/")
iPort, _ := strconv.Atoi(iSplit[0])
jSplit := strings.Split(string(s[j]), "/")
jPort, _ := strconv.Atoi(jSplit[0])
return iPort < jPort
}
func flattenContainerPorts(in nat.PortMap) []interface{} {
var out = make([]interface{}, 0)
for port, portBindings := range in {
var internalPortKeys []string
for portAndProtocolKeys := range in {
internalPortKeys = append(internalPortKeys, string(portAndProtocolKeys))
}
sort.Sort(byPortAndProtocol(internalPortKeys))
for _, portKey := range internalPortKeys {
m := make(map[string]interface{})
portBindings := in[nat.Port(portKey)]
for _, portBinding := range portBindings {
portProtocolSplit := strings.Split(string(port), "/")
portProtocolSplit := strings.Split(string(portKey), "/")
convertedInternal, _ := strconv.Atoi(portProtocolSplit[0])
convertedExternal, _ := strconv.Atoi(portBinding.HostPort)
m["internal"] = convertedInternal

View file

@ -4,12 +4,13 @@ import (
"archive/tar"
"bytes"
"fmt"
"github.com/docker/docker/api/types/container"
"strconv"
"strings"
"testing"
"time"
"github.com/docker/docker/api/types/container"
"context"
"github.com/docker/docker/api/types"