Skip to content

Commit deca7dc

Browse files
store test rbac update
Signed-off-by: Shubham Chauhan <shubham@tetrate.io>
1 parent d17fc43 commit deca7dc

4 files changed

Lines changed: 86 additions & 5 deletions

File tree

charts/gateway-helm/templates/generated/rbac/roles.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ rules:
88
- apiGroups:
99
- ""
1010
resources:
11-
- nodes
1211
- namespaces
12+
- nodes
1313
- secrets
1414
- services
1515
verbs:

internal/provider/kubernetes/rbac.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ package kubernetes
1414
// +kubebuilder:rbac:groups="gateway.envoyproxy.io",resources=authenticationfilters;ratelimitfilters,verbs=get;list;watch;update
1515

1616
// RBAC for watched resources of Gateway API controllers.
17-
// +kubebuilder:rbac:groups="",resources=secrets;services;namespaces,verbs=get;list;watch
17+
// +kubebuilder:rbac:groups="",resources=secrets;services;namespaces;nodes,verbs=get;list;watch
1818
// +kubebuilder:rbac:groups=apps,resources=deployments,verbs=get;list;watch

internal/provider/kubernetes/store.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ func (p *kubernetesProviderStore) addNode(n *corev1.Node) {
4646
// to the internalIP of the Node.
4747
if externalIP != "" {
4848
details.address = externalIP
49-
return
49+
} else if internalIP != "" {
50+
details.address = internalIP
5051
}
51-
details.address = internalIP
5252
p.nodes[n.Name] = details
5353
}
5454

@@ -59,7 +59,9 @@ func (p *kubernetesProviderStore) removeNode(n *corev1.Node) {
5959
func (p *kubernetesProviderStore) listNodeAddresses() []string {
6060
addrs := []string{}
6161
for _, n := range p.nodes {
62-
addrs = append(addrs, n.address)
62+
if n.address != "" {
63+
addrs = append(addrs, n.address)
64+
}
6365
}
6466
return addrs
6567
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
// Copyright Envoy Gateway Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
// The full text of the Apache license is available in the LICENSE file at
4+
// the root of the repo.
5+
6+
package kubernetes
7+
8+
import (
9+
"testing"
10+
11+
"github.com/stretchr/testify/assert"
12+
corev1 "k8s.io/api/core/v1"
13+
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
14+
)
15+
16+
func TestNodeDetailsAddressStore(t *testing.T) {
17+
store := newProviderStore()
18+
testCases := []struct {
19+
name string
20+
nodeObject *corev1.Node
21+
expectedAddresses []string
22+
}{
23+
{
24+
name: "No node addresses",
25+
nodeObject: &corev1.Node{
26+
ObjectMeta: v1.ObjectMeta{Name: "node1"},
27+
Status: corev1.NodeStatus{Addresses: []corev1.NodeAddress{{}}},
28+
},
29+
expectedAddresses: []string{},
30+
},
31+
{
32+
name: "only external address",
33+
nodeObject: &corev1.Node{
34+
ObjectMeta: v1.ObjectMeta{Name: "node1"},
35+
Status: corev1.NodeStatus{Addresses: []corev1.NodeAddress{{
36+
Address: "1.1.1.1",
37+
Type: corev1.NodeExternalIP,
38+
}}},
39+
},
40+
expectedAddresses: []string{"1.1.1.1"},
41+
},
42+
{
43+
name: "only internal address",
44+
nodeObject: &corev1.Node{
45+
ObjectMeta: v1.ObjectMeta{Name: "node1"},
46+
Status: corev1.NodeStatus{Addresses: []corev1.NodeAddress{{
47+
Address: "1.1.1.1",
48+
Type: corev1.NodeInternalIP,
49+
}}},
50+
},
51+
expectedAddresses: []string{"1.1.1.1"},
52+
},
53+
{
54+
name: "prefer external address",
55+
nodeObject: &corev1.Node{
56+
ObjectMeta: v1.ObjectMeta{Name: "node1"},
57+
Status: corev1.NodeStatus{Addresses: []corev1.NodeAddress{
58+
{
59+
Address: "1.1.1.1",
60+
Type: corev1.NodeExternalIP,
61+
},
62+
{
63+
Address: "2.2.2.2",
64+
Type: corev1.NodeInternalIP,
65+
},
66+
}},
67+
},
68+
expectedAddresses: []string{"1.1.1.1"},
69+
},
70+
}
71+
72+
for _, tc := range testCases {
73+
t.Run(tc.name, func(t *testing.T) {
74+
store.addNode(tc.nodeObject)
75+
assert.Equal(t, tc.expectedAddresses, store.listNodeAddresses())
76+
store.removeNode(tc.nodeObject)
77+
})
78+
}
79+
}

0 commit comments

Comments
 (0)