Merge pull request #43066 from akerouanton/fix-43054
Revert "Added API to set ephemeral port allocator range."
This commit is contained in:
commit
82e58a0011
4 changed files with 2 additions and 114 deletions
|
@ -1,7 +1,6 @@
|
|||
package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
|
@ -10,7 +9,6 @@ import (
|
|||
"github.com/docker/docker/libnetwork/ipamutils"
|
||||
"github.com/docker/docker/libnetwork/netlabel"
|
||||
"github.com/docker/docker/libnetwork/osl"
|
||||
"github.com/docker/docker/libnetwork/portallocator"
|
||||
"github.com/docker/docker/pkg/plugingetter"
|
||||
"github.com/docker/libkv/store"
|
||||
"github.com/pelletier/go-toml"
|
||||
|
@ -163,23 +161,6 @@ func OptionExperimental(exp bool) Option {
|
|||
}
|
||||
}
|
||||
|
||||
// OptionDynamicPortRange function returns an option setter for service port allocation range
|
||||
func OptionDynamicPortRange(in string) Option {
|
||||
return func(c *Config) {
|
||||
start, end := 0, 0
|
||||
if len(in) > 0 {
|
||||
n, err := fmt.Sscanf(in, "%d-%d", &start, &end)
|
||||
if n != 2 || err != nil {
|
||||
logrus.Errorf("Failed to parse range string with err %v", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
if err := portallocator.Get().SetPortRange(start, end); err != nil {
|
||||
logrus.Errorf("Failed to set port range with err %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// OptionNetworkControlPlaneMTU function returns an option setter for control plane MTU
|
||||
func OptionNetworkControlPlaneMTU(exp int) Option {
|
||||
return func(c *Config) {
|
||||
|
|
|
@ -9,22 +9,6 @@ import (
|
|||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func sanitizePortRange(start int, end int) (newStart, newEnd int, err error) {
|
||||
if start > defaultPortRangeEnd || end < defaultPortRangeStart || start > end {
|
||||
return 0, 0, fmt.Errorf("Request out allowed range [%v, %v]",
|
||||
defaultPortRangeStart, defaultPortRangeEnd)
|
||||
}
|
||||
err = nil
|
||||
newStart, newEnd = start, end
|
||||
if start < defaultPortRangeStart {
|
||||
newStart = defaultPortRangeStart
|
||||
}
|
||||
if end > defaultPortRangeEnd {
|
||||
newEnd = defaultPortRangeEnd
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
type ipMapping map[string]protoMap
|
||||
|
||||
var (
|
||||
|
@ -104,20 +88,12 @@ func Get() *PortAllocator {
|
|||
return instance
|
||||
}
|
||||
|
||||
func getDefaultPortRange() (int, int) {
|
||||
func newInstance() *PortAllocator {
|
||||
start, end, err := getDynamicPortRange()
|
||||
if err == nil {
|
||||
start, end, err = sanitizePortRange(start, end)
|
||||
}
|
||||
if err != nil {
|
||||
logrus.WithError(err).Infof("falling back to default port range %d-%d", defaultPortRangeStart, defaultPortRangeEnd)
|
||||
start, end = defaultPortRangeStart, defaultPortRangeEnd
|
||||
}
|
||||
return start, end
|
||||
}
|
||||
|
||||
func newInstance() *PortAllocator {
|
||||
start, end := getDefaultPortRange()
|
||||
return &PortAllocator{
|
||||
ipMap: ipMapping{},
|
||||
Begin: start,
|
||||
|
@ -191,30 +167,6 @@ func (p *PortAllocator) ReleasePort(ip net.IP, proto string, port int) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// SetPortRange sets dynamic port allocation range.
|
||||
// if both portBegin and portEnd are 0, the port range reverts to default
|
||||
// value. Otherwise they are sanitized against the default values to
|
||||
// ensure their validity.
|
||||
func (p *PortAllocator) SetPortRange(portBegin, portEnd int) error {
|
||||
// if begin and end is zero, revert to default values
|
||||
var begin, end int
|
||||
var err error
|
||||
if portBegin == 0 && portEnd == 0 {
|
||||
begin, end = getDefaultPortRange()
|
||||
} else if begin, end, err = sanitizePortRange(portBegin, portEnd); err != nil {
|
||||
return err
|
||||
}
|
||||
logrus.Debugf("Setting up port allocator to range %v-%v, current %v-%v", begin, end, p.Begin, p.End)
|
||||
p.mutex.Lock()
|
||||
defer p.mutex.Unlock()
|
||||
if p.Begin == begin && p.End == end {
|
||||
return nil
|
||||
}
|
||||
p.ipMap = ipMapping{}
|
||||
p.Begin, p.End = begin, end
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *PortAllocator) newPortMap() *portMap {
|
||||
defaultKey := getRangeKey(p.Begin, p.End)
|
||||
pm := &portMap{
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package portallocator
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"testing"
|
||||
)
|
||||
|
@ -322,47 +321,3 @@ func TestNoDuplicateBPR(t *testing.T) {
|
|||
t.Fatalf("Acquire(0) allocated the same port twice: %d", port)
|
||||
}
|
||||
}
|
||||
|
||||
func TestChangePortRange(t *testing.T) {
|
||||
var tests = []struct {
|
||||
begin int
|
||||
end int
|
||||
setErr error
|
||||
reqRlt int
|
||||
}{
|
||||
{defaultPortRangeEnd + 1, defaultPortRangeEnd + 10, fmt.Errorf("begin out of range"), 0},
|
||||
{defaultPortRangeStart - 10, defaultPortRangeStart - 1, fmt.Errorf("end out of range"), 0},
|
||||
{defaultPortRangeEnd, defaultPortRangeStart, fmt.Errorf("out of order"), 0},
|
||||
{defaultPortRangeStart + 100, defaultPortRangeEnd + 10, nil, defaultPortRangeStart + 100},
|
||||
{0, 0, nil, defaultPortRangeStart}, // revert to default if no value given
|
||||
{defaultPortRangeStart - 100, defaultPortRangeEnd, nil, defaultPortRangeStart + 1},
|
||||
}
|
||||
p := Get()
|
||||
port := 0
|
||||
for _, c := range tests {
|
||||
t.Logf("test: port allocate range %v-%v, setErr=%v, reqPort=%v",
|
||||
c.begin, c.end, c.setErr, c.reqRlt)
|
||||
err := p.SetPortRange(c.begin, c.end)
|
||||
if (c.setErr == nil && c.setErr != err) ||
|
||||
(c.setErr != nil && err == nil) {
|
||||
t.Fatalf("Unexpected set range result, expected=%v, actual=%v", c.setErr, err)
|
||||
}
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
if port > 0 {
|
||||
err := p.ReleasePort(defaultIP, "tcp", port)
|
||||
if err != nil {
|
||||
t.Fatalf("Releasing port %v failed, err=%v", port, err)
|
||||
}
|
||||
}
|
||||
|
||||
port, err = p.RequestPort(defaultIP, "tcp", 0)
|
||||
if err != nil {
|
||||
t.Fatalf("Request failed, err %v", err)
|
||||
}
|
||||
if port != c.reqRlt {
|
||||
t.Fatalf("Incorrect port returned, expected=%v, actual=%v", c.reqRlt, port)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,5 +9,5 @@ const (
|
|||
// defaultPortRangeEnd indicates the last port in port range
|
||||
// consistent with default /proc/sys/net/ipv4/ip_local_port_range
|
||||
// upper bound on linux
|
||||
defaultPortRangeEnd = 60999
|
||||
defaultPortRangeEnd = 65535
|
||||
)
|
||||
|
|
Loading…
Reference in a new issue