@@ -68,6 +68,7 @@ func TestManageConfigMap(t *testing.T) {
68
68
want * corev1.ConfigMap
69
69
descheduler * deschedulerv1.KubeDescheduler
70
70
routes []runtime.Object
71
+ nodes []runtime.Object
71
72
err error
72
73
forceDeployment bool
73
74
}{
@@ -226,6 +227,20 @@ func TestManageConfigMap(t *testing.T) {
226
227
TypeMeta : metav1.TypeMeta {APIVersion : "v1" , Kind : "ConfigMap" },
227
228
Data : map [string ]string {"policy.yaml" : string (bindata .MustAsset ("assets/relieveAndMigrateLowConfig.yaml" ))},
228
229
},
230
+ nodes : []runtime.Object {
231
+ & corev1.Node {
232
+ ObjectMeta : metav1.ObjectMeta {
233
+ Name : "node1" ,
234
+ Labels : map [string ]string {"kubevirt.io/schedulable" : "true" },
235
+ },
236
+ },
237
+ & corev1.Node {
238
+ ObjectMeta : metav1.ObjectMeta {
239
+ Name : "node2" ,
240
+ Labels : map [string ]string {"kubevirt.io/schedulable" : "true" },
241
+ },
242
+ },
243
+ },
229
244
},
230
245
{
231
246
name : "RelieveAndMigrateMedium" ,
@@ -239,6 +254,20 @@ func TestManageConfigMap(t *testing.T) {
239
254
TypeMeta : metav1.TypeMeta {APIVersion : "v1" , Kind : "ConfigMap" },
240
255
Data : map [string ]string {"policy.yaml" : string (bindata .MustAsset ("assets/relieveAndMigrateMediumConfig.yaml" ))},
241
256
},
257
+ nodes : []runtime.Object {
258
+ & corev1.Node {
259
+ ObjectMeta : metav1.ObjectMeta {
260
+ Name : "node1" ,
261
+ Labels : map [string ]string {"kubevirt.io/schedulable" : "true" },
262
+ },
263
+ },
264
+ & corev1.Node {
265
+ ObjectMeta : metav1.ObjectMeta {
266
+ Name : "node2" ,
267
+ Labels : map [string ]string {"kubevirt.io/schedulable" : "true" },
268
+ },
269
+ },
270
+ },
242
271
},
243
272
{
244
273
name : "RelieveAndMigrateDeviationLowWithCombinedMetrics" ,
@@ -269,6 +298,20 @@ func TestManageConfigMap(t *testing.T) {
269
298
},
270
299
},
271
300
},
301
+ nodes : []runtime.Object {
302
+ & corev1.Node {
303
+ ObjectMeta : metav1.ObjectMeta {
304
+ Name : "node1" ,
305
+ Labels : map [string ]string {"kubevirt.io/schedulable" : "true" },
306
+ },
307
+ },
308
+ & corev1.Node {
309
+ ObjectMeta : metav1.ObjectMeta {
310
+ Name : "node2" ,
311
+ Labels : map [string ]string {"kubevirt.io/schedulable" : "true" },
312
+ },
313
+ },
314
+ },
272
315
},
273
316
{
274
317
name : "RelieveAndMigrateHigh" ,
@@ -282,6 +325,20 @@ func TestManageConfigMap(t *testing.T) {
282
325
TypeMeta : metav1.TypeMeta {APIVersion : "v1" , Kind : "ConfigMap" },
283
326
Data : map [string ]string {"policy.yaml" : string (bindata .MustAsset ("assets/relieveAndMigrateHighConfig.yaml" ))},
284
327
},
328
+ nodes : []runtime.Object {
329
+ & corev1.Node {
330
+ ObjectMeta : metav1.ObjectMeta {
331
+ Name : "node1" ,
332
+ Labels : map [string ]string {"kubevirt.io/schedulable" : "true" },
333
+ },
334
+ },
335
+ & corev1.Node {
336
+ ObjectMeta : metav1.ObjectMeta {
337
+ Name : "node2" ,
338
+ Labels : map [string ]string {"kubevirt.io/schedulable" : "true" },
339
+ },
340
+ },
341
+ },
285
342
},
286
343
{
287
344
name : "RelieveAndMigrateIncludedNamespace" ,
@@ -299,6 +356,20 @@ func TestManageConfigMap(t *testing.T) {
299
356
TypeMeta : metav1.TypeMeta {APIVersion : "v1" , Kind : "ConfigMap" },
300
357
Data : map [string ]string {"policy.yaml" : string (bindata .MustAsset ("assets/relieveAndMigrateIncludedNamespace.yaml" ))},
301
358
},
359
+ nodes : []runtime.Object {
360
+ & corev1.Node {
361
+ ObjectMeta : metav1.ObjectMeta {
362
+ Name : "node1" ,
363
+ Labels : map [string ]string {"kubevirt.io/schedulable" : "true" },
364
+ },
365
+ },
366
+ & corev1.Node {
367
+ ObjectMeta : metav1.ObjectMeta {
368
+ Name : "node2" ,
369
+ Labels : map [string ]string {"kubevirt.io/schedulable" : "true" },
370
+ },
371
+ },
372
+ },
302
373
},
303
374
{
304
375
name : "RelieveAndMigrateDynamicThresholdsLow" ,
@@ -314,6 +385,20 @@ func TestManageConfigMap(t *testing.T) {
314
385
TypeMeta : metav1.TypeMeta {APIVersion : "v1" , Kind : "ConfigMap" },
315
386
Data : map [string ]string {"policy.yaml" : string (bindata .MustAsset ("assets/relieveAndMigrateDynamicThresholdsLow.yaml" ))},
316
387
},
388
+ nodes : []runtime.Object {
389
+ & corev1.Node {
390
+ ObjectMeta : metav1.ObjectMeta {
391
+ Name : "node1" ,
392
+ Labels : map [string ]string {"kubevirt.io/schedulable" : "true" },
393
+ },
394
+ },
395
+ & corev1.Node {
396
+ ObjectMeta : metav1.ObjectMeta {
397
+ Name : "node2" ,
398
+ Labels : map [string ]string {"kubevirt.io/schedulable" : "true" },
399
+ },
400
+ },
401
+ },
317
402
},
318
403
{
319
404
name : "RelieveAndMigrateDynamicThresholdsMedium" ,
@@ -329,6 +414,20 @@ func TestManageConfigMap(t *testing.T) {
329
414
TypeMeta : metav1.TypeMeta {APIVersion : "v1" , Kind : "ConfigMap" },
330
415
Data : map [string ]string {"policy.yaml" : string (bindata .MustAsset ("assets/relieveAndMigrateDynamicThresholdsMedium.yaml" ))},
331
416
},
417
+ nodes : []runtime.Object {
418
+ & corev1.Node {
419
+ ObjectMeta : metav1.ObjectMeta {
420
+ Name : "node1" ,
421
+ Labels : map [string ]string {"kubevirt.io/schedulable" : "true" },
422
+ },
423
+ },
424
+ & corev1.Node {
425
+ ObjectMeta : metav1.ObjectMeta {
426
+ Name : "node2" ,
427
+ Labels : map [string ]string {"kubevirt.io/schedulable" : "true" },
428
+ },
429
+ },
430
+ },
332
431
},
333
432
{
334
433
name : "RelieveAndMigrateDynamicThresholdsHigh" ,
@@ -344,6 +443,20 @@ func TestManageConfigMap(t *testing.T) {
344
443
TypeMeta : metav1.TypeMeta {APIVersion : "v1" , Kind : "ConfigMap" },
345
444
Data : map [string ]string {"policy.yaml" : string (bindata .MustAsset ("assets/relieveAndMigrateDynamicThresholdsHigh.yaml" ))},
346
445
},
446
+ nodes : []runtime.Object {
447
+ & corev1.Node {
448
+ ObjectMeta : metav1.ObjectMeta {
449
+ Name : "node1" ,
450
+ Labels : map [string ]string {"kubevirt.io/schedulable" : "true" },
451
+ },
452
+ },
453
+ & corev1.Node {
454
+ ObjectMeta : metav1.ObjectMeta {
455
+ Name : "node2" ,
456
+ Labels : map [string ]string {"kubevirt.io/schedulable" : "true" },
457
+ },
458
+ },
459
+ },
347
460
},
348
461
{
349
462
name : "RelieveAndMigrateDynamicAndStaticThresholds" ,
@@ -356,8 +469,48 @@ func TestManageConfigMap(t *testing.T) {
356
469
},
357
470
},
358
471
},
472
+ nodes : []runtime.Object {
473
+ & corev1.Node {
474
+ ObjectMeta : metav1.ObjectMeta {
475
+ Name : "node1" ,
476
+ Labels : map [string ]string {"kubevirt.io/schedulable" : "true" },
477
+ },
478
+ },
479
+ & corev1.Node {
480
+ ObjectMeta : metav1.ObjectMeta {
481
+ Name : "node2" ,
482
+ Labels : map [string ]string {"kubevirt.io/schedulable" : "true" },
483
+ },
484
+ },
485
+ },
359
486
err : fmt .Errorf ("only one of DevLowNodeUtilizationThresholds and DevDeviationThresholds customizations can be configured simultaneously" ),
360
487
},
488
+ {
489
+ name : "RelieveAndMigrateWithoutKubeVirt" ,
490
+ descheduler : & deschedulerv1.KubeDescheduler {
491
+ Spec : deschedulerv1.KubeDeschedulerSpec {
492
+ Profiles : []deschedulerv1.DeschedulerProfile {"DevKubeVirtRelieveAndMigrate" },
493
+ ProfileCustomizations : & deschedulerv1.ProfileCustomizations {
494
+ DevDeviationThresholds : & deschedulerv1 .LowDeviationThreshold ,
495
+ DevLowNodeUtilizationThresholds : & deschedulerv1 .LowThreshold ,
496
+ },
497
+ },
498
+ },
499
+ nodes : []runtime.Object {
500
+ & corev1.Node {
501
+ ObjectMeta : metav1.ObjectMeta {
502
+ Name : "node1" ,
503
+ },
504
+ },
505
+ & corev1.Node {
506
+ ObjectMeta : metav1.ObjectMeta {
507
+ Name : "node2" ,
508
+ },
509
+ },
510
+ },
511
+ err : fmt .Errorf ("profile DevKubeVirtRelieveAndMigrate can only be used when KubeVirt is properly deployed" ),
512
+ forceDeployment : true ,
513
+ },
361
514
{
362
515
name : "AffinityAndTaintsWithNamespaces" ,
363
516
descheduler : & deschedulerv1.KubeDescheduler {
@@ -659,6 +812,7 @@ func TestManageConfigMap(t *testing.T) {
659
812
},
660
813
},
661
814
}
815
+ objects = append (objects , tt .nodes ... )
662
816
663
817
ctx , cancelFunc := context .WithCancel (context .TODO ())
664
818
defer cancelFunc ()
0 commit comments