Skip to content

Commit dc407dd

Browse files
authored
remove duplicate ip's to avoid patching error (#243)
1 parent 3dd71d0 commit dc407dd

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

cloud/linode/instances.go

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -279,19 +279,29 @@ func (i *instances) InstanceMetadata(ctx context.Context, node *v1.Node) (*cloud
279279
return nil, err
280280
}
281281

282-
addresses := []v1.NodeAddress{{Type: v1.NodeHostName, Address: linode.Label}}
283-
282+
uniqueAddrs := make(map[string]v1.NodeAddressType, len(node.Status.Addresses)+len(ips))
284283
for _, ip := range ips {
285-
addresses = append(addresses, v1.NodeAddress{Type: ip.ipType, Address: ip.ip})
284+
if _, ok := uniqueAddrs[ip.ip]; ok {
285+
continue
286+
}
287+
uniqueAddrs[ip.ip] = ip.ipType
286288
}
287289

288290
// include IPs set by kubelet for internal node IP
289291
for _, addr := range node.Status.Addresses {
292+
if _, ok := uniqueAddrs[addr.Address]; ok {
293+
continue
294+
}
290295
if addr.Type == v1.NodeInternalIP {
291-
addresses = append(addresses, v1.NodeAddress{Type: v1.NodeInternalIP, Address: addr.Address})
296+
uniqueAddrs[addr.Address] = v1.NodeInternalIP
292297
}
293298
}
294299

300+
addresses := []v1.NodeAddress{{Type: v1.NodeHostName, Address: linode.Label}}
301+
for k, v := range uniqueAddrs {
302+
addresses = append(addresses, v1.NodeAddress{Type: v, Address: k})
303+
}
304+
295305
klog.Infof("Instance %s, assembled IP addresses: %v", node.Name, addresses)
296306
// note that Zone is omitted as it's not a thing in Linode
297307
meta := &cloudprovider.InstanceMetadata{

cloud/linode/instances_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ import (
44
"context"
55
"fmt"
66
"net"
7+
"slices"
78
"strconv"
9+
"strings"
810
"testing"
911

1012
"github.com/golang/mock/gomock"
@@ -273,6 +275,12 @@ func TestMetadataRetrieval(t *testing.T) {
273275
addresses := append([]v1.NodeAddress{
274276
{Type: v1.NodeHostName, Address: name},
275277
}, test.outputAddresses...)
278+
slices.SortFunc(meta.NodeAddresses, func(a v1.NodeAddress, b v1.NodeAddress) int {
279+
return strings.Compare(a.Address, b.Address)
280+
})
281+
slices.SortFunc(addresses, func(a, b v1.NodeAddress) int {
282+
return strings.Compare(a.Address, b.Address)
283+
})
276284
assert.Equal(t, meta.NodeAddresses, addresses)
277285
}
278286
})

0 commit comments

Comments
 (0)