@@ -25,6 +25,7 @@ import (
25
25
scwbaremetal "github.com/scaleway/scaleway-sdk-go/api/baremetal/v1alpha1"
26
26
"github.com/scaleway/scaleway-sdk-go/scw"
27
27
v1 "k8s.io/api/core/v1"
28
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
28
29
cloudprovider "k8s.io/cloud-provider"
29
30
)
30
31
@@ -300,3 +301,166 @@ func TestBaremetal_GetZoneByProviderID(t *testing.T) {
300
301
AssertNoError (t , err )
301
302
Equals (t , expected , result )
302
303
}
304
+
305
+ func TestBaremetal_InstanceExists (t * testing.T ) {
306
+ baremetal := newFakeBaremetal ()
307
+
308
+ t .Run ("Running by ID" , func (t * testing.T ) {
309
+ result , err := baremetal .InstanceExists (context .TODO (), & v1.Node {
310
+ Spec : v1.NodeSpec {
311
+ ProviderID : "scaleway://baremetal/fr-par-2/53a6ca14-0d8d-4f2e-9887-2f1bcfba58ed" ,
312
+ },
313
+ })
314
+ AssertNoError (t , err )
315
+ AssertTrue (t , result )
316
+ })
317
+
318
+ t .Run ("Stopped by ID" , func (t * testing.T ) {
319
+ result , err := baremetal .InstanceExists (context .TODO (), & v1.Node {
320
+ Spec : v1.NodeSpec {
321
+ ProviderID : "scaleway://baremetal/fr-par-2/42d74979-992e-4650-9d05-31b834547d69" ,
322
+ },
323
+ })
324
+ AssertNoError (t , err )
325
+ AssertTrue (t , result )
326
+ })
327
+
328
+ t .Run ("NotFound by ID" , func (t * testing.T ) {
329
+ result , err := baremetal .InstanceExists (context .TODO (), & v1.Node {
330
+ Spec : v1.NodeSpec {
331
+ ProviderID : "scaleway://baremetal/fr-par-2/4d17aad4-c77e-4d95-a6e8-d7bf3f02d345" ,
332
+ },
333
+ })
334
+ AssertNoError (t , err )
335
+ AssertFalse (t , result )
336
+ })
337
+ t .Run ("Running by name" , func (t * testing.T ) {
338
+ result , err := baremetal .InstanceExists (context .TODO (), & v1.Node {
339
+ ObjectMeta : metav1.ObjectMeta {
340
+ Name : "bm-keen-feistel" ,
341
+ },
342
+ })
343
+ AssertNoError (t , err )
344
+ AssertTrue (t , result )
345
+ })
346
+
347
+ t .Run ("Stopped by name" , func (t * testing.T ) {
348
+ result , err := baremetal .InstanceExists (context .TODO (), & v1.Node {
349
+ ObjectMeta : metav1.ObjectMeta {
350
+ Name : "bm-optimistic-cohen" ,
351
+ },
352
+ })
353
+ AssertNoError (t , err )
354
+ AssertTrue (t , result )
355
+ })
356
+
357
+ t .Run ("NotFound by name" , func (t * testing.T ) {
358
+ result , err := baremetal .InstanceExists (context .TODO (), & v1.Node {
359
+ ObjectMeta : metav1.ObjectMeta {
360
+ Name : "dummy-name" ,
361
+ },
362
+ })
363
+ AssertNoError (t , err )
364
+ AssertFalse (t , result )
365
+ })
366
+
367
+ }
368
+
369
+ func TestBaremetal_InstanceShutdown (t * testing.T ) {
370
+ baremetal := newFakeBaremetal ()
371
+
372
+ t .Run ("Running by ID" , func (t * testing.T ) {
373
+ result , err := baremetal .InstanceShutdown (context .TODO (), & v1.Node {
374
+ Spec : v1.NodeSpec {
375
+ ProviderID : "scaleway://baremetal/fr-par-2/53a6ca14-0d8d-4f2e-9887-2f1bcfba58ed" ,
376
+ },
377
+ })
378
+ AssertNoError (t , err )
379
+ AssertFalse (t , result )
380
+ })
381
+
382
+ t .Run ("Stopped by ID" , func (t * testing.T ) {
383
+ result , err := baremetal .InstanceShutdown (context .TODO (), & v1.Node {
384
+ Spec : v1.NodeSpec {
385
+ ProviderID : "scaleway://baremetal/fr-par-2/42d74979-992e-4650-9d05-31b834547d69" ,
386
+ },
387
+ })
388
+ AssertNoError (t , err )
389
+ AssertTrue (t , result )
390
+ })
391
+
392
+ t .Run ("NotFound by ID" , func (t * testing.T ) {
393
+ _ , err := baremetal .InstanceShutdown (context .TODO (), & v1.Node {
394
+ Spec : v1.NodeSpec {
395
+ ProviderID : "scaleway://baremetal/fr-par-2/4d17aad4-c77e-4d95-a6e8-d7bf3f02d345" ,
396
+ },
397
+ })
398
+ AssertTrue (t , err == cloudprovider .InstanceNotFound )
399
+ })
400
+
401
+ t .Run ("Running by name" , func (t * testing.T ) {
402
+ result , err := baremetal .InstanceShutdown (context .TODO (), & v1.Node {
403
+ ObjectMeta : metav1.ObjectMeta {
404
+ Name : "bm-keen-feistel" ,
405
+ },
406
+ })
407
+ AssertNoError (t , err )
408
+ AssertFalse (t , result )
409
+ })
410
+
411
+ t .Run ("Stopped by name" , func (t * testing.T ) {
412
+ result , err := baremetal .InstanceShutdown (context .TODO (), & v1.Node {
413
+ ObjectMeta : metav1.ObjectMeta {
414
+ Name : "bm-optimistic-cohen" ,
415
+ },
416
+ })
417
+ AssertNoError (t , err )
418
+ AssertTrue (t , result )
419
+ })
420
+
421
+ t .Run ("NotFound by name" , func (t * testing.T ) {
422
+ _ , err := baremetal .InstanceShutdown (context .TODO (), & v1.Node {
423
+ ObjectMeta : metav1.ObjectMeta {
424
+ Name : "dummy-name" ,
425
+ },
426
+ })
427
+ AssertTrue (t , err == cloudprovider .InstanceNotFound )
428
+ })
429
+ }
430
+
431
+ func TestBaremetal_InstanceMetadata (t * testing.T ) {
432
+ baremetal := newFakeBaremetal ()
433
+
434
+ expectedAddresses := []v1.NodeAddress {
435
+ {Type : v1 .NodeHostName , Address : "bm-keen-feistel" },
436
+ {Type : v1 .NodeExternalIP , Address : "62.210.16.2" },
437
+ {Type : v1 .NodeExternalDNS , Address : "53a6ca14-0d8d-4f2e-9887-2f1bcfba58ed.fr-par-2.baremetal.scw.cloud" },
438
+ }
439
+
440
+ providerID := "scaleway://baremetal/fr-par-2/53a6ca14-0d8d-4f2e-9887-2f1bcfba58ed"
441
+ offerName := "TEST1-L"
442
+
443
+ t .Run ("By ID" , func (t * testing.T ) {
444
+ metadata , err := baremetal .InstanceMetadata (context .TODO (), & v1.Node {
445
+ Spec : v1.NodeSpec {
446
+ ProviderID : providerID ,
447
+ },
448
+ })
449
+ AssertNoError (t , err )
450
+ Equals (t , expectedAddresses , metadata .NodeAddresses )
451
+ Equals (t , offerName , metadata .InstanceType )
452
+ Equals (t , providerID , metadata .ProviderID )
453
+ })
454
+
455
+ t .Run ("By Name" , func (t * testing.T ) {
456
+ metadata , err := baremetal .InstanceMetadata (context .TODO (), & v1.Node {
457
+ ObjectMeta : metav1.ObjectMeta {
458
+ Name : "bm-keen-feistel" ,
459
+ },
460
+ })
461
+ AssertNoError (t , err )
462
+ Equals (t , expectedAddresses , metadata .NodeAddresses )
463
+ Equals (t , offerName , metadata .InstanceType )
464
+ Equals (t , providerID , metadata .ProviderID )
465
+ })
466
+ }
0 commit comments