Skip to content

Commit 5160f7f

Browse files
committed
replace direct uses of github.com/docker/go-connections/nat types
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
1 parent 6a63718 commit 5160f7f

File tree

7 files changed

+29
-26
lines changed

7 files changed

+29
-26
lines changed

cli/command/container/opts.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -414,8 +414,8 @@ func parse(flags *pflag.FlagSet, copts *containerOptions, serverOS string) (*con
414414

415415
publishOpts := copts.publish.GetSlice()
416416
var (
417-
ports map[nat.Port]struct{}
418-
portBindings map[nat.Port][]nat.PortBinding
417+
ports map[container.PortRangeProto]struct{}
418+
portBindings map[container.PortRangeProto][]container.PortBinding
419419
convertedOpts []string
420420
)
421421

cli/command/container/opts_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"testing"
1111
"time"
1212

13-
"github.com/docker/go-connections/nat"
1413
"github.com/moby/moby/api/types/container"
1514
networktypes "github.com/moby/moby/api/types/network"
1615
"github.com/spf13/pflag"
@@ -439,7 +438,7 @@ func TestParseWithExpose(t *testing.T) {
439438
"8080-NaN/tcp": `invalid range format for --expose: 8080-NaN/tcp, error: strconv.ParseUint: parsing "NaN": invalid syntax`,
440439
"1234567890-8080/tcp": `invalid range format for --expose: 1234567890-8080/tcp, error: strconv.ParseUint: parsing "1234567890": value out of range`,
441440
}
442-
valids := map[string][]nat.Port{
441+
valids := map[string][]container.PortRangeProto{
443442
"8080/tcp": {"8080/tcp"},
444443
"8080/udp": {"8080/udp"},
445444
"8080/ncp": {"8080/ncp"},
@@ -473,7 +472,7 @@ func TestParseWithExpose(t *testing.T) {
473472
if len(config.ExposedPorts) != 2 {
474473
t.Fatalf("Expected 2 exposed ports, got %v", config.ExposedPorts)
475474
}
476-
ports := []nat.Port{"80/tcp", "81/tcp"}
475+
ports := []container.PortRangeProto{"80/tcp", "81/tcp"}
477476
for _, port := range ports {
478477
if _, ok := config.ExposedPorts[port]; !ok {
479478
t.Fatalf("Expected %v, got %v", ports, config.ExposedPorts)

cli/command/container/port.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import (
1111
"github.com/docker/cli/cli"
1212
"github.com/docker/cli/cli/command"
1313
"github.com/docker/cli/cli/command/completion"
14-
"github.com/docker/go-connections/nat"
1514
"github.com/fvbommel/sortorder"
15+
"github.com/moby/moby/api/types/container"
1616
"github.com/pkg/errors"
1717
"github.com/spf13/cobra"
1818
)
@@ -67,7 +67,7 @@ func runPort(ctx context.Context, dockerCli command.Cli, opts *portOptions) erro
6767
if _, err = strconv.ParseUint(port, 10, 16); err != nil {
6868
return errors.Wrapf(err, "Error: invalid port (%s)", port)
6969
}
70-
frontends, exists := c.NetworkSettings.Ports[nat.Port(port+"/"+proto)]
70+
frontends, exists := c.NetworkSettings.Ports[container.PortRangeProto(port+"/"+proto)]
7171
if !exists || len(frontends) == 0 {
7272
return errors.Errorf("Error: No public port '%s' published for %s", opts.port, opts.container)
7373
}

cli/command/container/port_test.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"testing"
66

77
"github.com/docker/cli/internal/test"
8-
"github.com/docker/go-connections/nat"
98
"github.com/moby/moby/api/types/container"
109
"gotest.tools/v3/assert"
1110
"gotest.tools/v3/golden"
@@ -47,19 +46,19 @@ func TestNewPortCommandOutput(t *testing.T) {
4746
cli := test.NewFakeCli(&fakeClient{
4847
inspectFunc: func(string) (container.InspectResponse, error) {
4948
ci := container.InspectResponse{NetworkSettings: &container.NetworkSettings{}}
50-
ci.NetworkSettings.Ports = nat.PortMap{
51-
"80/tcp": make([]nat.PortBinding, len(tc.ips)),
52-
"443/tcp": make([]nat.PortBinding, len(tc.ips)),
53-
"443/udp": make([]nat.PortBinding, len(tc.ips)),
49+
ci.NetworkSettings.Ports = container.PortMap{
50+
"80/tcp": make([]container.PortBinding, len(tc.ips)),
51+
"443/tcp": make([]container.PortBinding, len(tc.ips)),
52+
"443/udp": make([]container.PortBinding, len(tc.ips)),
5453
}
5554
for i, ip := range tc.ips {
56-
ci.NetworkSettings.Ports["80/tcp"][i] = nat.PortBinding{
55+
ci.NetworkSettings.Ports["80/tcp"][i] = container.PortBinding{
5756
HostIP: ip, HostPort: "3456",
5857
}
59-
ci.NetworkSettings.Ports["443/tcp"][i] = nat.PortBinding{
58+
ci.NetworkSettings.Ports["443/tcp"][i] = container.PortBinding{
6059
HostIP: ip, HostPort: "4567",
6160
}
62-
ci.NetworkSettings.Ports["443/udp"][i] = nat.PortBinding{
61+
ci.NetworkSettings.Ports["443/udp"][i] = container.PortBinding{
6362
HostIP: ip, HostPort: "5678",
6463
}
6564
}

cli/compose/loader/loader.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"github.com/docker/go-units"
2525
"github.com/go-viper/mapstructure/v2"
2626
"github.com/google/shlex"
27+
"github.com/moby/moby/api/types/container"
2728
"github.com/moby/moby/api/types/versions"
2829
"github.com/pkg/errors"
2930
"github.com/sirupsen/logrus"
@@ -934,7 +935,7 @@ func toServicePortConfigs(value string) ([]any, error) {
934935

935936
for _, key := range keys {
936937
// Reuse ConvertPortToPortConfig so that it is consistent
937-
portConfig, err := swarmopts.ConvertPortToPortConfig(nat.Port(key), portBindings)
938+
portConfig, err := swarmopts.ConvertPortToPortConfig(container.PortRangeProto(key), portBindings)
938939
if err != nil {
939940
return nil, err
940941
}

opts/swarmopts/port.go

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"strings"
1111

1212
"github.com/docker/go-connections/nat"
13+
"github.com/moby/moby/api/types/container"
1314
"github.com/moby/moby/api/types/swarm"
1415
"github.com/sirupsen/logrus"
1516
)
@@ -150,28 +151,31 @@ func (p *PortOpt) Value() []swarm.PortConfig {
150151

151152
// ConvertPortToPortConfig converts ports to the swarm type
152153
func ConvertPortToPortConfig(
153-
port nat.Port,
154-
portBindings map[nat.Port][]nat.PortBinding,
154+
portRangeProto container.PortRangeProto,
155+
portBindings map[container.PortRangeProto][]container.PortBinding,
155156
) ([]swarm.PortConfig, error) {
156-
ports := []swarm.PortConfig{}
157+
port, proto := nat.SplitProtoPort(string(portRangeProto))
158+
portInt, _ := strconv.ParseUint(port, 10, 16)
159+
proto = strings.ToLower(proto)
157160

158-
for _, binding := range portBindings[port] {
161+
var ports []swarm.PortConfig
162+
for _, binding := range portBindings[portRangeProto] {
159163
if p := net.ParseIP(binding.HostIP); p != nil && !p.IsUnspecified() {
160164
// TODO(thaJeztah): use context-logger, so that this output can be suppressed (in tests).
161-
logrus.Warnf("ignoring IP-address (%s:%s) service will listen on '0.0.0.0'", net.JoinHostPort(binding.HostIP, binding.HostPort), port)
165+
logrus.Warnf("ignoring IP-address (%s:%s) service will listen on '0.0.0.0'", net.JoinHostPort(binding.HostIP, binding.HostPort), portRangeProto)
162166
}
163167

164168
startHostPort, endHostPort, err := nat.ParsePortRange(binding.HostPort)
165169

166170
if err != nil && binding.HostPort != "" {
167-
return nil, fmt.Errorf("invalid hostport binding (%s) for port (%s)", binding.HostPort, port.Port())
171+
return nil, fmt.Errorf("invalid hostport binding (%s) for port (%s)", binding.HostPort, port)
168172
}
169173

170174
for i := startHostPort; i <= endHostPort; i++ {
171175
ports = append(ports, swarm.PortConfig{
172176
// TODO Name: ?
173-
Protocol: swarm.PortConfigProtocol(strings.ToLower(port.Proto())),
174-
TargetPort: uint32(port.Int()),
177+
Protocol: swarm.PortConfigProtocol(proto),
178+
TargetPort: uint32(portInt),
175179
PublishedPort: uint32(i),
176180
PublishMode: swarm.PortConfigPublishModeIngress,
177181
})

opts/swarmopts/port_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"os"
66
"testing"
77

8-
"github.com/docker/go-connections/nat"
8+
"github.com/moby/moby/api/types/container"
99
"github.com/moby/moby/api/types/swarm"
1010
"github.com/sirupsen/logrus"
1111
"gotest.tools/v3/assert"
@@ -347,7 +347,7 @@ func TestConvertPortToPortConfigWithIP(t *testing.T) {
347347
logrus.SetOutput(&b)
348348
for _, tc := range testCases {
349349
t.Run(tc.value, func(t *testing.T) {
350-
_, err := ConvertPortToPortConfig("80/tcp", map[nat.Port][]nat.PortBinding{
350+
_, err := ConvertPortToPortConfig("80/tcp", map[container.PortRangeProto][]container.PortBinding{
351351
"80/tcp": {{HostIP: tc.value, HostPort: "2345"}},
352352
})
353353
assert.NilError(t, err)

0 commit comments

Comments
 (0)