Skip to content

Commit 3916d42

Browse files
committed
Add e2e test for custom LB port
Signed-off-by: Damien DASSIEU <[email protected]>
1 parent bbca74d commit 3916d42

File tree

2 files changed

+75
-1
lines changed

2 files changed

+75
-1
lines changed

docs/scalewaycluster.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ spec:
207207
```
208208

209209
- The `apiServerPort` field specifies the port of the Load Balancer frontend that exposes the kube-apiserver(s).
210-
This field is immutable.
210+
This field should not be changed after the creation of the cluster.
211211

212212
#### Extra Load Balancers
213213

internal/service/scaleway/lb/lb_test.go

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/scaleway/scaleway-sdk-go/scw"
1818
"go.uber.org/mock/gomock"
1919
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
20+
"k8s.io/utils/ptr"
2021
"sigs.k8s.io/cluster-api/api/v1beta1"
2122
)
2223

@@ -128,6 +129,79 @@ func TestService_Reconcile(t *testing.T) {
128129
g.Expect(c.ScalewayCluster.Status.Network.LoadBalancerIP).To(Equal(scw.StringPtr("42.42.42.42")))
129130
},
130131
},
132+
{
133+
name: "custom public LB, no extra LB, no Private Network, no ACL: create",
134+
fields: fields{
135+
Cluster: &scope.Cluster{
136+
ScalewayCluster: &v1alpha1.ScalewayCluster{
137+
ObjectMeta: v1.ObjectMeta{
138+
Name: "cluster",
139+
Namespace: "default",
140+
},
141+
},
142+
Cluster: &v1beta1.Cluster{
143+
ObjectMeta: v1.ObjectMeta{
144+
Name: "cluster",
145+
Namespace: "default",
146+
},
147+
Spec: v1beta1.ClusterSpec{
148+
ClusterNetwork: &v1beta1.ClusterNetwork{
149+
APIServerPort: ptr.To(int32(4242)),
150+
},
151+
},
152+
},
153+
},
154+
},
155+
args: args{
156+
ctx: context.TODO(),
157+
},
158+
expect: func(i *mock_client.MockInterfaceMockRecorder) {
159+
tags := []string{"caps-namespace=default", "caps-scalewaycluster=cluster"}
160+
161+
// Main LB
162+
i.GetZoneOrDefault(nil).Return(scw.ZoneFrPar1, nil)
163+
i.FindLB(gomock.Any(), scw.ZoneFrPar1, append(tags, CAPSMainLBTag)).Return(nil, client.ErrNoItemFound)
164+
i.CreateLB(gomock.Any(), scw.ZoneFrPar1, "cluster", "LB-S", nil, false, append(tags, CAPSMainLBTag)).Return(&lb.LB{
165+
ID: lbID,
166+
Name: "cluster",
167+
Status: lb.LBStatusReady,
168+
Zone: scw.ZoneFrPar1,
169+
IP: []*lb.IP{{IPAddress: "42.42.42.42"}},
170+
}, nil)
171+
172+
// Extra LBs
173+
i.FindLBs(gomock.Any(), append(tags, CAPSExtraLBTag)).Return([]*lb.LB{}, nil)
174+
175+
// Backend
176+
i.FindBackend(gomock.Any(), scw.ZoneFrPar1, lbID, BackendName).Return(nil, client.ErrNoItemFound)
177+
i.CreateBackend(gomock.Any(), scw.ZoneFrPar1, lbID, BackendName, nil, backendControlPlanePort).Return(&lb.Backend{
178+
ID: backendID,
179+
LB: &lb.LB{
180+
ID: lbID,
181+
Zone: scw.ZoneFrPar1,
182+
},
183+
}, nil)
184+
185+
// Frontend
186+
i.FindFrontend(gomock.Any(), scw.ZoneFrPar1, lbID, FrontendName).Return(nil, client.ErrNoItemFound)
187+
i.CreateFrontend(gomock.Any(), scw.ZoneFrPar1, lbID, FrontendName, backendID, int32(4242)).Return(&lb.Frontend{
188+
ID: frontendID,
189+
LB: &lb.LB{
190+
ID: lbID,
191+
Zone: scw.ZoneFrPar1,
192+
},
193+
}, nil)
194+
195+
// ACL
196+
i.FindLBACLByName(gomock.Any(), scw.ZoneFrPar1, frontendID, allowedRangesACLName).Return(nil, client.ErrNoItemFound)
197+
i.FindLBACLByName(gomock.Any(), scw.ZoneFrPar1, frontendID, publicGatewayACLName).Return(nil, client.ErrNoItemFound)
198+
i.FindLBACLByName(gomock.Any(), scw.ZoneFrPar1, frontendID, denyAllACLName).Return(nil, client.ErrNoItemFound)
199+
},
200+
asserts: func(g *WithT, c *scope.Cluster) {
201+
g.Expect(c.ScalewayCluster.Status.Network).ToNot(BeNil())
202+
g.Expect(c.ScalewayCluster.Status.Network.LoadBalancerIP).To(Equal(scw.StringPtr("42.42.42.42")))
203+
},
204+
},
131205
{
132206
name: "public LB, extra LBs, Private Network, ACL: up-to-date",
133207
fields: fields{

0 commit comments

Comments
 (0)