added new tests to handle edge case

This commit is contained in:
hjoshi123 2025-03-25 20:45:25 -06:00
parent df517cfc9b
commit af3a7dfef6
No known key found for this signature in database
2 changed files with 22 additions and 6 deletions

View File

@ -181,17 +181,18 @@ func (ns *nodeSource) nodeAddresses(node *v1.Node) ([]string, error) {
for _, addr := range node.Status.Addresses {
// IPv6 addresses are labeled as NodeInternalIP despite being usable externally as well.
if addr.Type == v1.NodeInternalIP && suitableType(addr.Address) == endpoint.RecordTypeAAAA {
if ns.exposeInternalIPV6 {
addresses[v1.NodeInternalIP] = append(addresses[v1.NodeInternalIP], addr.Address)
ipv6Addresses = append(ipv6Addresses, addr.Address)
}
addresses[v1.NodeInternalIP] = append(addresses[v1.NodeInternalIP], addr.Address)
ipv6Addresses = append(ipv6Addresses, addr.Address)
} else {
addresses[addr.Type] = append(addresses[addr.Type], addr.Address)
}
}
if len(addresses[v1.NodeExternalIP]) > 0 {
return append(addresses[v1.NodeExternalIP], ipv6Addresses...), nil
if ns.exposeInternalIPV6 {
return append(addresses[v1.NodeExternalIP], ipv6Addresses...), nil
}
return addresses[v1.NodeExternalIP], nil
}
if len(addresses[v1.NodeInternalIP]) > 0 {

View File

@ -223,6 +223,7 @@ func testNodeSourceEndpoints(t *testing.T) {
nodeAddresses: []v1.NodeAddress{{Type: v1.NodeInternalIP, Address: "2.3.4.5"}, {Type: v1.NodeInternalIP, Address: "2001:DB8::9"}},
expected: []*endpoint.Endpoint{
{RecordType: "A", DNSName: "node1", Targets: endpoint.Targets{"2.3.4.5"}},
{RecordType: "AAAA", DNSName: "node1", Targets: endpoint.Targets{"2001:DB8::9"}},
},
},
{
@ -437,12 +438,13 @@ func testNodeEndpointsWithIPv6(t *testing.T) {
expectError bool
}{
{
title: "node with only internal IPs with expose internal IP as false shouldn't return AAAA endpoints with internal IPs",
title: "node with only internal IPs should return internal IPvs irrespective of exposeInternalIPv6",
nodeName: "node1",
exposeInternalIPv6: false,
nodeAddresses: []v1.NodeAddress{{Type: v1.NodeInternalIP, Address: "2.3.4.5"}, {Type: v1.NodeInternalIP, Address: "2001:DB8::9"}},
expected: []*endpoint.Endpoint{
{RecordType: "A", DNSName: "node1", Targets: endpoint.Targets{"2.3.4.5"}},
{RecordType: "AAAA", DNSName: "node1", Targets: endpoint.Targets{"2001:DB8::9"}},
},
},
{
@ -458,6 +460,19 @@ func testNodeEndpointsWithIPv6(t *testing.T) {
{RecordType: "AAAA", DNSName: "node1", Targets: endpoint.Targets{"2001:DB8::8"}},
},
},
{
title: "node with both external and internal IPs should return internal IPv6 if exposeInternalIPv6 is true",
nodeName: "node1",
exposeInternalIPv6: true,
nodeAddresses: []v1.NodeAddress{
{Type: v1.NodeExternalIP, Address: "1.2.3.5"},
{Type: v1.NodeInternalIP, Address: "2001:DB8::9"},
},
expected: []*endpoint.Endpoint{
{RecordType: "A", DNSName: "node1", Targets: endpoint.Targets{"1.2.3.5"}},
{RecordType: "AAAA", DNSName: "node1", Targets: endpoint.Targets{"2001:DB8::9"}},
},
},
} {
labelSelector := labels.Everything()
if tc.labelSelector != "" {