@@ -269,6 +269,237 @@ func Test_NodesDeleted(t *testing.T) {
269
269
ExistsByProviderID : false ,
270
270
},
271
271
},
272
+ {
273
+ name : "[instance2] node is not ready and does not exist" ,
274
+ existingNode : & v1.Node {
275
+ ObjectMeta : metav1.ObjectMeta {
276
+ Name : "node0" ,
277
+ CreationTimestamp : metav1 .Date (2012 , 1 , 1 , 0 , 0 , 0 , 0 , time .UTC ),
278
+ },
279
+ Status : v1.NodeStatus {
280
+ Conditions : []v1.NodeCondition {
281
+ {
282
+ Type : v1 .NodeReady ,
283
+ Status : v1 .ConditionFalse ,
284
+ LastHeartbeatTime : metav1 .Date (2015 , 1 , 1 , 12 , 0 , 0 , 0 , time .UTC ),
285
+ LastTransitionTime : metav1 .Date (2015 , 1 , 1 , 12 , 0 , 0 , 0 , time .UTC ),
286
+ },
287
+ },
288
+ },
289
+ },
290
+ expectedDeleted : true ,
291
+ fakeCloud : & fakecloud.Cloud {
292
+ EnableInstancesV2 : true ,
293
+ ExistsByProviderID : false ,
294
+ },
295
+ },
296
+ {
297
+ name : "[instancev2] node is not ready and provider returns err" ,
298
+ existingNode : & v1.Node {
299
+ ObjectMeta : metav1.ObjectMeta {
300
+ Name : "node0" ,
301
+ CreationTimestamp : metav1 .Date (2012 , 1 , 1 , 0 , 0 , 0 , 0 , time .UTC ),
302
+ },
303
+ Spec : v1.NodeSpec {
304
+ ProviderID : "node0" ,
305
+ },
306
+ Status : v1.NodeStatus {
307
+ Conditions : []v1.NodeCondition {
308
+ {
309
+ Type : v1 .NodeReady ,
310
+ Status : v1 .ConditionFalse ,
311
+ LastHeartbeatTime : metav1 .Date (2015 , 1 , 1 , 12 , 0 , 0 , 0 , time .UTC ),
312
+ LastTransitionTime : metav1 .Date (2015 , 1 , 1 , 12 , 0 , 0 , 0 , time .UTC ),
313
+ },
314
+ },
315
+ },
316
+ },
317
+ expectedNode : & v1.Node {
318
+ ObjectMeta : metav1.ObjectMeta {
319
+ Name : "node0" ,
320
+ CreationTimestamp : metav1 .Date (2012 , 1 , 1 , 0 , 0 , 0 , 0 , time .UTC ),
321
+ },
322
+ Spec : v1.NodeSpec {
323
+ ProviderID : "node0" ,
324
+ },
325
+ Status : v1.NodeStatus {
326
+ Conditions : []v1.NodeCondition {
327
+ {
328
+ Type : v1 .NodeReady ,
329
+ Status : v1 .ConditionFalse ,
330
+ LastHeartbeatTime : metav1 .Date (2015 , 1 , 1 , 12 , 0 , 0 , 0 , time .UTC ),
331
+ LastTransitionTime : metav1 .Date (2015 , 1 , 1 , 12 , 0 , 0 , 0 , time .UTC ),
332
+ },
333
+ },
334
+ },
335
+ },
336
+ expectedDeleted : false ,
337
+ fakeCloud : & fakecloud.Cloud {
338
+ EnableInstancesV2 : true ,
339
+ ExistsByProviderID : false ,
340
+ ErrByProviderID : errors .New ("err!" ),
341
+ },
342
+ },
343
+ {
344
+ name : "[instancev2] node is not ready but still exists" ,
345
+ existingNode : & v1.Node {
346
+ ObjectMeta : metav1.ObjectMeta {
347
+ Name : "node0" ,
348
+ CreationTimestamp : metav1 .Date (2012 , 1 , 1 , 0 , 0 , 0 , 0 , time .UTC ),
349
+ },
350
+ Spec : v1.NodeSpec {
351
+ ProviderID : "node0" ,
352
+ },
353
+ Status : v1.NodeStatus {
354
+ Conditions : []v1.NodeCondition {
355
+ {
356
+ Type : v1 .NodeReady ,
357
+ Status : v1 .ConditionFalse ,
358
+ LastHeartbeatTime : metav1 .Date (2015 , 1 , 1 , 12 , 0 , 0 , 0 , time .UTC ),
359
+ LastTransitionTime : metav1 .Date (2015 , 1 , 1 , 12 , 0 , 0 , 0 , time .UTC ),
360
+ },
361
+ },
362
+ },
363
+ },
364
+ expectedNode : & v1.Node {
365
+ ObjectMeta : metav1.ObjectMeta {
366
+ Name : "node0" ,
367
+ CreationTimestamp : metav1 .Date (2012 , 1 , 1 , 0 , 0 , 0 , 0 , time .UTC ),
368
+ },
369
+ Spec : v1.NodeSpec {
370
+ ProviderID : "node0" ,
371
+ },
372
+ Status : v1.NodeStatus {
373
+ Conditions : []v1.NodeCondition {
374
+ {
375
+ Type : v1 .NodeReady ,
376
+ Status : v1 .ConditionFalse ,
377
+ LastHeartbeatTime : metav1 .Date (2015 , 1 , 1 , 12 , 0 , 0 , 0 , time .UTC ),
378
+ LastTransitionTime : metav1 .Date (2015 , 1 , 1 , 12 , 0 , 0 , 0 , time .UTC ),
379
+ },
380
+ },
381
+ },
382
+ },
383
+ expectedDeleted : false ,
384
+ fakeCloud : & fakecloud.Cloud {
385
+ EnableInstancesV2 : true ,
386
+ ExistsByProviderID : true ,
387
+ },
388
+ },
389
+ {
390
+ name : "[instancev2] node ready condition is unknown, node doesn't exist" ,
391
+ existingNode : & v1.Node {
392
+ ObjectMeta : metav1.ObjectMeta {
393
+ Name : "node0" ,
394
+ CreationTimestamp : metav1 .Date (2012 , 1 , 1 , 0 , 0 , 0 , 0 , time .UTC ),
395
+ },
396
+ Status : v1.NodeStatus {
397
+ Conditions : []v1.NodeCondition {
398
+ {
399
+ Type : v1 .NodeReady ,
400
+ Status : v1 .ConditionUnknown ,
401
+ LastHeartbeatTime : metav1 .Date (2015 , 1 , 1 , 12 , 0 , 0 , 0 , time .UTC ),
402
+ LastTransitionTime : metav1 .Date (2015 , 1 , 1 , 12 , 0 , 0 , 0 , time .UTC ),
403
+ },
404
+ },
405
+ },
406
+ },
407
+ expectedDeleted : true ,
408
+ fakeCloud : & fakecloud.Cloud {
409
+ EnableInstancesV2 : true ,
410
+ ExistsByProviderID : false ,
411
+ },
412
+ },
413
+ {
414
+ name : "[instancev2] node ready condition is unknown, node exists" ,
415
+ existingNode : & v1.Node {
416
+ ObjectMeta : metav1.ObjectMeta {
417
+ Name : "node0" ,
418
+ CreationTimestamp : metav1 .Date (2012 , 1 , 1 , 0 , 0 , 0 , 0 , time .UTC ),
419
+ },
420
+ Status : v1.NodeStatus {
421
+ Conditions : []v1.NodeCondition {
422
+ {
423
+ Type : v1 .NodeReady ,
424
+ Status : v1 .ConditionUnknown ,
425
+ LastHeartbeatTime : metav1 .Date (2015 , 1 , 1 , 12 , 0 , 0 , 0 , time .UTC ),
426
+ LastTransitionTime : metav1 .Date (2015 , 1 , 1 , 12 , 0 , 0 , 0 , time .UTC ),
427
+ },
428
+ },
429
+ },
430
+ },
431
+ expectedNode : & v1.Node {
432
+ ObjectMeta : metav1.ObjectMeta {
433
+ Name : "node0" ,
434
+ CreationTimestamp : metav1 .Date (2012 , 1 , 1 , 0 , 0 , 0 , 0 , time .UTC ),
435
+ },
436
+ Status : v1.NodeStatus {
437
+ Conditions : []v1.NodeCondition {
438
+ {
439
+ Type : v1 .NodeReady ,
440
+ Status : v1 .ConditionUnknown ,
441
+ LastHeartbeatTime : metav1 .Date (2015 , 1 , 1 , 12 , 0 , 0 , 0 , time .UTC ),
442
+ LastTransitionTime : metav1 .Date (2015 , 1 , 1 , 12 , 0 , 0 , 0 , time .UTC ),
443
+ },
444
+ },
445
+ },
446
+ },
447
+ expectedDeleted : false ,
448
+ fakeCloud : & fakecloud.Cloud {
449
+ EnableInstancesV2 : true ,
450
+ NodeShutdown : false ,
451
+ ExistsByProviderID : true ,
452
+ ExtID : map [types.NodeName ]string {
453
+ types .NodeName ("node0" ): "foo://12345" ,
454
+ },
455
+ },
456
+ },
457
+ {
458
+ name : "[instancev2] node is ready, but provider said it is deleted (maybe a bug in provider)" ,
459
+ existingNode : & v1.Node {
460
+ ObjectMeta : metav1.ObjectMeta {
461
+ Name : "node0" ,
462
+ CreationTimestamp : metav1 .Date (2012 , 1 , 1 , 0 , 0 , 0 , 0 , time .UTC ),
463
+ },
464
+ Spec : v1.NodeSpec {
465
+ ProviderID : "node0" ,
466
+ },
467
+ Status : v1.NodeStatus {
468
+ Conditions : []v1.NodeCondition {
469
+ {
470
+ Type : v1 .NodeReady ,
471
+ Status : v1 .ConditionTrue ,
472
+ LastHeartbeatTime : metav1 .Date (2015 , 1 , 1 , 12 , 0 , 0 , 0 , time .UTC ),
473
+ LastTransitionTime : metav1 .Date (2015 , 1 , 1 , 12 , 0 , 0 , 0 , time .UTC ),
474
+ },
475
+ },
476
+ },
477
+ },
478
+ expectedNode : & v1.Node {
479
+ ObjectMeta : metav1.ObjectMeta {
480
+ Name : "node0" ,
481
+ CreationTimestamp : metav1 .Date (2012 , 1 , 1 , 0 , 0 , 0 , 0 , time .UTC ),
482
+ },
483
+ Spec : v1.NodeSpec {
484
+ ProviderID : "node0" ,
485
+ },
486
+ Status : v1.NodeStatus {
487
+ Conditions : []v1.NodeCondition {
488
+ {
489
+ Type : v1 .NodeReady ,
490
+ Status : v1 .ConditionTrue ,
491
+ LastHeartbeatTime : metav1 .Date (2015 , 1 , 1 , 12 , 0 , 0 , 0 , time .UTC ),
492
+ LastTransitionTime : metav1 .Date (2015 , 1 , 1 , 12 , 0 , 0 , 0 , time .UTC ),
493
+ },
494
+ },
495
+ },
496
+ },
497
+ expectedDeleted : false ,
498
+ fakeCloud : & fakecloud.Cloud {
499
+ EnableInstancesV2 : true ,
500
+ ExistsByProviderID : false ,
501
+ },
502
+ },
272
503
}
273
504
274
505
for _ , testcase := range testcases {
0 commit comments