@@ -17,6 +17,8 @@ import (
17
17
"github.com/scaleway/scaleway-sdk-go/scw"
18
18
"go.uber.org/mock/gomock"
19
19
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
20
+ "k8s.io/utils/ptr"
21
+ "sigs.k8s.io/cluster-api/api/v1beta1"
20
22
)
21
23
22
24
const (
@@ -69,6 +71,12 @@ func TestService_Reconcile(t *testing.T) {
69
71
Namespace : "default" ,
70
72
},
71
73
},
74
+ Cluster : & v1beta1.Cluster {
75
+ ObjectMeta : v1.ObjectMeta {
76
+ Name : "cluster" ,
77
+ Namespace : "default" ,
78
+ },
79
+ },
72
80
},
73
81
},
74
82
args : args {
@@ -121,6 +129,79 @@ func TestService_Reconcile(t *testing.T) {
121
129
g .Expect (c .ScalewayCluster .Status .Network .LoadBalancerIP ).To (Equal (scw .StringPtr ("42.42.42.42" )))
122
130
},
123
131
},
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
+ },
124
205
{
125
206
name : "public LB, extra LBs, Private Network, ACL: up-to-date" ,
126
207
fields : fields {
@@ -151,6 +232,12 @@ func TestService_Reconcile(t *testing.T) {
151
232
},
152
233
},
153
234
},
235
+ Cluster : & v1beta1.Cluster {
236
+ ObjectMeta : v1.ObjectMeta {
237
+ Name : "cluster" ,
238
+ Namespace : "default" ,
239
+ },
240
+ },
154
241
},
155
242
},
156
243
args : args {
0 commit comments