@@ -158,6 +158,286 @@ func TestNewPowerVSClusterScope(t *testing.T) {
158
158
}
159
159
}
160
160
161
+ func TestGetNetwork (t * testing.T ) {
162
+ var (
163
+ mockPowerVS * mockP.MockPowerVS
164
+ mockCtrl * gomock.Controller
165
+ )
166
+
167
+ setup := func (t * testing.T ) {
168
+ t .Helper ()
169
+ mockCtrl = gomock .NewController (t )
170
+ mockPowerVS = mockP .NewMockPowerVS (mockCtrl )
171
+ }
172
+ teardown := func () {
173
+ mockCtrl .Finish ()
174
+ }
175
+ t .Run ("When network ID is not nil and GetNetworkByID is success" , func (t * testing.T ) {
176
+ g := NewWithT (t )
177
+ setup (t )
178
+ t .Cleanup (teardown )
179
+
180
+ network := & models.Network {NetworkID : ptr .To ("networkID" )}
181
+ clusterScopeParams := getPowerVSClusterScopeParams ()
182
+ clusterScopeParams .PowerVSClientFactory = func () (powervs.PowerVS , error ) {
183
+ mockPowerVS .EXPECT ().GetNetworkByID (gomock .Any ()).Return (network , nil )
184
+ return mockPowerVS , nil
185
+ }
186
+
187
+ clusterScopeParams .IBMPowerVSCluster .Spec .Network = infrav1beta2.IBMPowerVSResourceReference {ID : ptr .To ("networkID" )}
188
+ clusterScope , _ := NewPowerVSClusterScope (clusterScopeParams )
189
+
190
+ networkID , err := clusterScope .getNetwork ()
191
+ g .Expect (err ).To (BeNil ())
192
+ g .Expect (networkID ).To (Equal (network .NetworkID ))
193
+ })
194
+ t .Run ("When network ID is nil and DHCPServer is not empty" , func (t * testing.T ) {
195
+ g := NewWithT (t )
196
+ setup (t )
197
+ t .Cleanup (teardown )
198
+
199
+ clusterScopeParams := getPowerVSClusterScopeParams ()
200
+ clusterScopeParams .IBMPowerVSCluster .Spec .DHCPServer .Name = ptr .To ("server1" )
201
+ networkName := fmt .Sprintf ("DHCPSERVER%s_Private" , * clusterScopeParams .IBMPowerVSCluster .Spec .DHCPServer .Name )
202
+ network := & models.NetworkReference {NetworkID : ptr .To ("networkID" ), Name : & networkName }
203
+ clusterScopeParams .PowerVSClientFactory = func () (powervs.PowerVS , error ) {
204
+ mockPowerVS .EXPECT ().GetNetworkByName (* network .Name ).Return (network , nil )
205
+ return mockPowerVS , nil
206
+ }
207
+
208
+ clusterScope , _ := NewPowerVSClusterScope (clusterScopeParams )
209
+
210
+ networkID , err := clusterScope .getNetwork ()
211
+ g .Expect (err ).To (BeNil ())
212
+ g .Expect (networkID ).To (Equal (network .NetworkID ))
213
+ })
214
+
215
+ t .Run ("When network ID is nil and DHCPServer is also empty" , func (t * testing.T ) {
216
+ g := NewWithT (t )
217
+ setup (t )
218
+ t .Cleanup (teardown )
219
+
220
+ clusterScopeParams := getPowerVSClusterScopeParams ()
221
+ clusterScopeParams .IBMPowerVSCluster .Spec .Network = infrav1beta2.IBMPowerVSResourceReference {}
222
+ clusterScopeParams .IBMPowerVSCluster .Name = "ClusterName"
223
+ networkName := fmt .Sprintf ("DHCPSERVER%s_Private" , clusterScopeParams .IBMPowerVSCluster .Name )
224
+
225
+ network := & models.NetworkReference {NetworkID : ptr .To ("networkID" ), Name : & networkName }
226
+ clusterScopeParams .PowerVSClientFactory = func () (powervs.PowerVS , error ) {
227
+ mockPowerVS .EXPECT ().GetNetworkByName (* network .Name ).Return (network , nil )
228
+ return mockPowerVS , nil
229
+ }
230
+
231
+ clusterScope , _ := NewPowerVSClusterScope (clusterScopeParams )
232
+
233
+ networkID , err := clusterScope .getNetwork ()
234
+ g .Expect (err ).To (BeNil ())
235
+ g .Expect (networkID ).To (Equal (network .NetworkID ))
236
+ })
237
+
238
+ t .Run ("When network ID and DHCPServer is empty and GetNetworkByName returns error" , func (t * testing.T ) {
239
+ g := NewWithT (t )
240
+ setup (t )
241
+ t .Cleanup (teardown )
242
+
243
+ clusterScopeParams := getPowerVSClusterScopeParams ()
244
+ clusterScopeParams .IBMPowerVSCluster .Spec .Network = infrav1beta2.IBMPowerVSResourceReference {}
245
+ clusterScopeParams .IBMPowerVSCluster .Name = "ClusterName"
246
+ networkName := fmt .Sprintf ("DHCPSERVER%s_Private" , clusterScopeParams .IBMPowerVSCluster .Name )
247
+
248
+ clusterScopeParams .PowerVSClientFactory = func () (powervs.PowerVS , error ) {
249
+ mockPowerVS .EXPECT ().GetNetworkByName (networkName ).Return (nil , fmt .Errorf ("GetNetworkByName error" ))
250
+ return mockPowerVS , nil
251
+ }
252
+
253
+ clusterScope , _ := NewPowerVSClusterScope (clusterScopeParams )
254
+
255
+ networkID , err := clusterScope .getNetwork ()
256
+ g .Expect (err ).ToNot (BeNil ())
257
+ g .Expect (networkID ).To (BeNil ())
258
+ })
259
+
260
+ t .Run ("When network ID and DHCPServer is empty and GetNetworkByName returns empty network" , func (t * testing.T ) {
261
+ g := NewWithT (t )
262
+ setup (t )
263
+ t .Cleanup (teardown )
264
+
265
+ clusterScopeParams := getPowerVSClusterScopeParams ()
266
+ clusterScopeParams .IBMPowerVSCluster .Spec .Network = infrav1beta2.IBMPowerVSResourceReference {}
267
+ clusterScopeParams .IBMPowerVSCluster .Name = "ClusterName"
268
+ networkName := fmt .Sprintf ("DHCPSERVER%s_Private" , clusterScopeParams .IBMPowerVSCluster .Name )
269
+ clusterScopeParams .PowerVSClientFactory = func () (powervs.PowerVS , error ) {
270
+ mockPowerVS .EXPECT ().GetNetworkByName (networkName ).Return (nil , nil )
271
+ return mockPowerVS , nil
272
+ }
273
+
274
+ clusterScope , _ := NewPowerVSClusterScope (clusterScopeParams )
275
+
276
+ networkID , err := clusterScope .getNetwork ()
277
+ g .Expect (err ).To (BeNil ())
278
+ g .Expect (networkID ).To (BeNil ())
279
+ })
280
+ }
281
+
282
+ func TestIsDHCPServerActive (t * testing.T ) {
283
+ var (
284
+ mockPowerVS * mockP.MockPowerVS
285
+ mockCtrl * gomock.Controller
286
+ )
287
+
288
+ setup := func (t * testing.T ) {
289
+ t .Helper ()
290
+ mockCtrl = gomock .NewController (t )
291
+ mockPowerVS = mockP .NewMockPowerVS (mockCtrl )
292
+ }
293
+ teardown := func () {
294
+ mockCtrl .Finish ()
295
+ }
296
+
297
+ t .Run ("When DHCPID is empty" , func (t * testing.T ) {
298
+ g := NewWithT (t )
299
+ setup (t )
300
+ t .Cleanup (teardown )
301
+
302
+ clusterScopeParams := getPowerVSClusterScopeParams ()
303
+ clusterScopeParams .IBMPowerVSCluster .Spec .DHCPServer .ID = ptr .To ("" )
304
+ clusterScope , _ := NewPowerVSClusterScope (clusterScopeParams )
305
+
306
+ isActive , err := clusterScope .isDHCPServerActive ()
307
+ g .Expect (err ).To (Equal (fmt .Errorf ("DHCP ID is empty" )))
308
+ g .Expect (isActive ).To (BeFalse ())
309
+ })
310
+ t .Run ("When GetDHCPServer returns error" , func (t * testing.T ) {
311
+ g := NewWithT (t )
312
+ setup (t )
313
+ t .Cleanup (teardown )
314
+
315
+ clusterScopeParams := getPowerVSClusterScopeParams ()
316
+ clusterScopeParams .PowerVSClientFactory = func () (powervs.PowerVS , error ) {
317
+ dhcpServer := & models.DHCPServerDetail {ID : ptr .To ("dhcpID" ), Status : ptr .To (string (infrav1beta2 .DHCPServerStateError ))}
318
+ mockPowerVS .EXPECT ().GetDHCPServer (gomock .Any ()).Return (dhcpServer , nil )
319
+ return mockPowerVS , nil
320
+ }
321
+ clusterScope , _ := NewPowerVSClusterScope (clusterScopeParams )
322
+
323
+ isActive , err := clusterScope .isDHCPServerActive ()
324
+ g .Expect (err ).ToNot (BeNil ())
325
+ g .Expect (isActive ).To (BeFalse ())
326
+ })
327
+ }
328
+
329
+ func TestCheckDHCPServerStatus (t * testing.T ) {
330
+ testCases := []struct {
331
+ name string
332
+ dhcpServer models.DHCPServerDetail
333
+ expectedStatus bool
334
+ }{
335
+ {
336
+ name : "test DHCP server state build" ,
337
+ dhcpServer : models.DHCPServerDetail {ID : ptr .To ("dhcpIDBuild" ), Status : ptr .To (string (infrav1beta2 .DHCPServerStateBuild ))},
338
+ expectedStatus : true ,
339
+ },
340
+ {
341
+ name : "test DHCP server state active" ,
342
+ dhcpServer : models.DHCPServerDetail {ID : ptr .To ("dhcpIDActive" ), Status : ptr .To (string (infrav1beta2 .DHCPServerStateActive ))},
343
+ expectedStatus : false ,
344
+ },
345
+ {
346
+ name : "test DHCP server state error" ,
347
+ dhcpServer : models.DHCPServerDetail {ID : ptr .To ("dhcpIDError" ), Status : ptr .To (string (infrav1beta2 .DHCPServerStateError ))},
348
+ expectedStatus : false ,
349
+ },
350
+ {
351
+ name : "test DHCP server state invalid value" ,
352
+ dhcpServer : models.DHCPServerDetail {ID : ptr .To ("dhcpIDError" ), Status : ptr .To ("InvalidState" )},
353
+ expectedStatus : false ,
354
+ },
355
+ }
356
+ for _ , tc := range testCases {
357
+ g := NewWithT (t )
358
+ clusterScope := PowerVSClusterScope {}
359
+ t .Run (tc .name , func (_ * testing.T ) {
360
+ status , _ := clusterScope .checkDHCPServerStatus (tc .dhcpServer )
361
+ g .Expect (status ).To (Equal (tc .expectedStatus ))
362
+ })
363
+ }
364
+
365
+ }
366
+
367
+ func TestCreateDHCPServer (t * testing.T ) {
368
+ var (
369
+ mockPowerVS * mockP.MockPowerVS
370
+ mockCtrl * gomock.Controller
371
+ )
372
+
373
+ setup := func (t * testing.T ) {
374
+ t .Helper ()
375
+ mockCtrl = gomock .NewController (t )
376
+ mockPowerVS = mockP .NewMockPowerVS (mockCtrl )
377
+ }
378
+ teardown := func () {
379
+ mockCtrl .Finish ()
380
+ }
381
+ t .Run ("When dhcpServerDetails is empty" , func (t * testing.T ) {
382
+ g := NewWithT (t )
383
+ setup (t )
384
+ t .Cleanup (teardown )
385
+
386
+ dhcpNetwork := & models.DHCPServerNetwork {ID : ptr .To ("dhcpNetworkID" )}
387
+ dhcpServer := & models.DHCPServer {ID : ptr .To ("dhcpID" ), Network : dhcpNetwork }
388
+ clusterScopeParams := getPowerVSClusterScopeParams ()
389
+ clusterScopeParams .IBMPowerVSCluster .Spec .DHCPServer = nil
390
+ clusterScopeParams .IBMPowerVSCluster .Name = "clusterName"
391
+ clusterScopeParams .PowerVSClientFactory = func () (powervs.PowerVS , error ) {
392
+ mockPowerVS .EXPECT ().CreateDHCPServer (gomock .Any ()).Return (dhcpServer , nil )
393
+ return mockPowerVS , nil
394
+ }
395
+ clusterScope , _ := NewPowerVSClusterScope (clusterScopeParams )
396
+ dhcpID , err := clusterScope .createDHCPServer ()
397
+ g .Expect (dhcpID ).To (Equal (dhcpServer .ID ))
398
+ g .Expect (err ).To (BeNil ())
399
+ g .Expect (clusterScope .IBMPowerVSCluster .Status .Network .ID ).To (Equal (dhcpNetwork .ID ))
400
+ })
401
+
402
+ t .Run ("When dhcpServerDetails are all set properly" , func (t * testing.T ) {
403
+ g := NewWithT (t )
404
+ setup (t )
405
+ t .Cleanup (teardown )
406
+
407
+ //dhcpNetwork := &models.DHCPServerNetwork{ID: ptr.To("dhcpNetworkID")}
408
+ dhcpServer := & models.DHCPServer {ID : ptr .To ("dhcpID" )}
409
+ clusterScopeParams := getPowerVSClusterScopeParams ()
410
+ clusterScopeParams .IBMPowerVSCluster .Spec .DHCPServer .DNSServer = ptr .To ("DNSServer" )
411
+ clusterScopeParams .IBMPowerVSCluster .Spec .DHCPServer .Cidr = ptr .To ("10.10.1.10/24" )
412
+ clusterScopeParams .IBMPowerVSCluster .Spec .DHCPServer .Snat = ptr .To (true )
413
+ clusterScopeParams .IBMPowerVSCluster .Name = "clusterName"
414
+ clusterScopeParams .PowerVSClientFactory = func () (powervs.PowerVS , error ) {
415
+ mockPowerVS .EXPECT ().CreateDHCPServer (gomock .Any ()).Return (dhcpServer , nil )
416
+ return mockPowerVS , nil
417
+ }
418
+ clusterScope , _ := NewPowerVSClusterScope (clusterScopeParams )
419
+ dhcpID , err := clusterScope .createDHCPServer ()
420
+ g .Expect (dhcpID ).To (BeNil ())
421
+ g .Expect (err ).ToNot (BeNil ())
422
+ })
423
+
424
+ t .Run ("When dhcpServerDetails are all set properly" , func (t * testing.T ) {
425
+ g := NewWithT (t )
426
+ setup (t )
427
+ t .Cleanup (teardown )
428
+
429
+ clusterScopeParams := getPowerVSClusterScopeParams ()
430
+ clusterScopeParams .IBMPowerVSCluster .Name = "clusterName"
431
+ clusterScopeParams .PowerVSClientFactory = func () (powervs.PowerVS , error ) {
432
+ mockPowerVS .EXPECT ().CreateDHCPServer (gomock .Any ()).Return (nil , nil )
433
+ return mockPowerVS , nil
434
+ }
435
+ clusterScope , _ := NewPowerVSClusterScope (clusterScopeParams )
436
+ dhcpID , err := clusterScope .createDHCPServer ()
437
+ g .Expect (dhcpID ).To (BeNil ())
438
+ g .Expect (err ).ToNot (BeNil ())
439
+ })
440
+ }
161
441
func TestReconcileNetwork (t * testing.T ) {
162
442
var (
163
443
mockPowerVS * mockP.MockPowerVS
@@ -243,40 +523,16 @@ func TestReconcileNetwork(t *testing.T) {
243
523
g .Expect (err ).To (BeNil ())
244
524
g .Expect (requeue ).To (BeFalse ())
245
525
})
246
- t .Run ("When DHCPID is empty and GetNetworkByName returns empty network" , func (t * testing.T ) {
526
+ t .Run ("When DHCPID is empty and checkNetwork returns empty network ID " , func (t * testing.T ) {
247
527
g := NewWithT (t )
248
528
setup (t )
249
529
t .Cleanup (teardown )
250
530
251
- network := & models.NetworkReference {}
531
+ network := & models.Network {}
252
532
dhcpNetwork := & models.DHCPServerNetwork {ID : ptr .To ("dhcpNetworkID" )}
253
533
dhcpServer := & models.DHCPServer {ID : ptr .To ("dhcpID" ), Network : dhcpNetwork }
254
534
clusterScopeParams := getPowerVSClusterScopeParams ()
255
535
clusterScopeParams .PowerVSClientFactory = func () (powervs.PowerVS , error ) {
256
- mockPowerVS .EXPECT ().GetNetworkByName (gomock .Any ()).Return (network , nil )
257
- mockPowerVS .EXPECT ().CreateDHCPServer (gomock .Any ()).Return (dhcpServer , nil )
258
- return mockPowerVS , nil
259
- }
260
- clusterScopeParams .IBMPowerVSCluster .Spec .DHCPServer .ID = nil
261
- clusterScope , _ := NewPowerVSClusterScope (clusterScopeParams )
262
-
263
- requeue , err := clusterScope .ReconcileNetwork ()
264
- g .Expect (clusterScope .IBMPowerVSCluster .Status .DHCPServer .ID ).To (Equal (dhcpServer .ID ))
265
- g .Expect (clusterScope .IBMPowerVSCluster .Status .Network .ID ).To (Equal (dhcpNetwork .ID ))
266
- g .Expect (err ).To (BeNil ())
267
- g .Expect (requeue ).To (BeTrue ())
268
-
269
- })
270
- t .Run ("When DHCPID is empty and checkNetwork returns empty network ID" , func (t * testing.T ) {
271
- g := NewWithT (t )
272
- setup (t )
273
- t .Cleanup (teardown )
274
-
275
- clusterScopeParams := getPowerVSClusterScopeParams ()
276
- clusterScopeParams .PowerVSClientFactory = func () (powervs.PowerVS , error ) {
277
- network := & models.Network {}
278
- dhcpNetwork := & models.DHCPServerNetwork {ID : ptr .To ("dhcpNetworkID" )}
279
- dhcpServer := & models.DHCPServer {ID : ptr .To ("dhcpID" ), Network : dhcpNetwork }
280
536
mockPowerVS .EXPECT ().GetNetworkByID (gomock .Any ()).Return (network , nil )
281
537
mockPowerVS .EXPECT ().CreateDHCPServer (gomock .Any ()).Return (dhcpServer , nil )
282
538
return mockPowerVS , nil
@@ -286,6 +542,8 @@ func TestReconcileNetwork(t *testing.T) {
286
542
clusterScope , _ := NewPowerVSClusterScope (clusterScopeParams )
287
543
288
544
requeue , err := clusterScope .ReconcileNetwork ()
545
+ g .Expect (clusterScope .IBMPowerVSCluster .Status .DHCPServer .ID ).To (Equal (dhcpServer .ID ))
546
+ g .Expect (clusterScope .IBMPowerVSCluster .Status .Network .ID ).To (Equal (dhcpNetwork .ID ))
289
547
g .Expect (err ).To (BeNil ())
290
548
g .Expect (requeue ).To (BeTrue ())
291
549
0 commit comments