Skip to content

Commit f1f1a27

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 f1f1a27

File tree

1 file changed

+25
-2
lines changed

1 file changed

+25
-2
lines changed

manager/allocator/cnmallocator/portallocator.go

Lines changed: 25 additions & 2 deletions
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,38 @@ func newPortAllocator() (*portAllocator, error) {
117118
return &portAllocator{portSpaces: portSpaces}, nil
118119
}
119120

121+
type (
122+
legacyConstructor func(ds datastore.DataStore, id string, start, end uint64) (*idm.Idm, error)
123+
idmConstructor func(id string, start, end uint64) (*idm.Idm, error)
124+
)
125+
126+
func adaptConstructor(newFn any) (idmConstructor, error) {
127+
if fn, ok := newFn.(idmConstructor); ok {
128+
return fn, nil
129+
}
130+
if fn, ok := newFn.(legacyConstructor); ok {
131+
return func(id string, start, end uint64) (*idm.Idm, error) {
132+
return fn(nil, id, start, end)
133+
}, nil
134+
}
135+
return nil, fmt.Errorf("invalid constructor: %+v (%T)", newFn, newFn)
136+
}
137+
120138
func newPortSpace(protocol api.PortConfig_Protocol) (*portSpace, error) {
139+
fn, err := adaptConstructor(idm.New)
140+
if err != nil {
141+
return nil, err
142+
}
143+
121144
masterName := fmt.Sprintf("%s-master-ports", protocol)
122145
dynamicName := fmt.Sprintf("%s-dynamic-ports", protocol)
123146

124-
master, err := idm.New(nil, masterName, masterPortStart, masterPortEnd)
147+
master, err := fn(masterName, masterPortStart, masterPortEnd)
125148
if err != nil {
126149
return nil, err
127150
}
128151

129-
dynamic, err := idm.New(nil, dynamicName, dynamicPortStart, dynamicPortEnd)
152+
dynamic, err := fn(dynamicName, dynamicPortStart, dynamicPortEnd)
130153
if err != nil {
131154
return nil, err
132155
}

0 commit comments

Comments
 (0)