Skip to content

Commit f5aadc3

Browse files
committed
manager/allocator/cnmallocator: add temporary adaptor for constructor
Add an adaptor to help with a signature change in the Idm constructor. Signed-off-by: Sebastiaan van Stijn <[email protected]>
1 parent 93fe90a commit f5aadc3

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

manager/allocator/cnmallocator/portallocator.go

+20-5
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package cnmallocator
33
import (
44
"fmt"
55

6+
"github.com/docker/docker/libnetwork/datastore"
67
"github.com/docker/docker/libnetwork/idm"
78
"github.com/moby/swarmkit/v2/api"
89
)
@@ -117,16 +118,30 @@ func newPortAllocator() (*portAllocator, error) {
117118
return &portAllocator{portSpaces: portSpaces}, nil
118119
}
119120

120-
func newPortSpace(protocol api.PortConfig_Protocol) (*portSpace, error) {
121-
masterName := fmt.Sprintf("%s-master-ports", protocol)
122-
dynamicName := fmt.Sprintf("%s-dynamic-ports", protocol)
121+
type (
122+
// these are deliberately aliases, otherwise we'd only match the same type, not signature.
123+
legacyIdmConstructor = func(ds datastore.DataStore, id string, start, end uint64) (*idm.Idm, error)
124+
idmConstructor = func(id string, start, end uint64) (*idm.Idm, error)
125+
)
126+
127+
func newIdm(newFn any, id string, start, end uint64) (*idm.Idm, error) {
128+
switch fn := newFn.(type) {
129+
case idmConstructor:
130+
return fn(id, start, end)
131+
case legacyIdmConstructor:
132+
return fn(nil, id, start, end)
133+
default:
134+
return nil, fmt.Errorf("invalid constructor signature: %T", newFn)
135+
}
136+
}
123137

124-
master, err := idm.New(nil, masterName, masterPortStart, masterPortEnd)
138+
func newPortSpace(protocol api.PortConfig_Protocol) (*portSpace, error) {
139+
master, err := newIdm(idm.New, protocol.String()+"-master-ports", masterPortStart, masterPortEnd)
125140
if err != nil {
126141
return nil, err
127142
}
128143

129-
dynamic, err := idm.New(nil, dynamicName, dynamicPortStart, dynamicPortEnd)
144+
dynamic, err := newIdm(idm.New, protocol.String()+"-dynamic-ports", dynamicPortStart, dynamicPortEnd)
130145
if err != nil {
131146
return nil, err
132147
}

0 commit comments

Comments
 (0)