mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2026-05-04 14:21:33 +02:00
added new tests to handle edge case
This commit is contained in:
parent
df517cfc9b
commit
af3a7dfef6
@ -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 {
|
||||
|
||||
@ -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 != "" {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user