@@ -19,6 +19,7 @@ package machinedeployment
19
19
import (
20
20
"strconv"
21
21
"testing"
22
+ "time"
22
23
23
24
. "github.com/onsi/gomega"
24
25
"github.com/pkg/errors"
@@ -302,6 +303,7 @@ func TestReconcileNewMachineSet(t *testing.T) {
302
303
}
303
304
304
305
func TestReconcileOldMachineSets (t * testing.T ) {
306
+ duration10m := & metav1.Duration {Duration : 10 * time .Minute }
305
307
testCases := []struct {
306
308
name string
307
309
machineDeployment * clusterv1.MachineDeployment
@@ -468,6 +470,83 @@ func TestReconcileOldMachineSets(t *testing.T) {
468
470
},
469
471
expectedOldMachineSetsReplicas : 8 ,
470
472
},
473
+ {
474
+ name : "RollingUpdate strategy: Scale down old MachineSets and propagate the node deletion related timeouts to old MachineSets" ,
475
+ machineDeployment : & clusterv1.MachineDeployment {
476
+ ObjectMeta : metav1.ObjectMeta {
477
+ Namespace : "foo" ,
478
+ Name : "bar" ,
479
+ },
480
+ Spec : clusterv1.MachineDeploymentSpec {
481
+ Strategy : & clusterv1.MachineDeploymentStrategy {
482
+ Type : clusterv1 .RollingUpdateMachineDeploymentStrategyType ,
483
+ RollingUpdate : & clusterv1.MachineRollingUpdateDeployment {
484
+ MaxUnavailable : intOrStrPtr (1 ),
485
+ MaxSurge : intOrStrPtr (3 ),
486
+ },
487
+ },
488
+ Replicas : ptr.To [int32 ](2 ),
489
+ Template : clusterv1.MachineTemplateSpec {
490
+ Spec : clusterv1.MachineSpec {
491
+ NodeDrainTimeout : duration10m ,
492
+ NodeDeletionTimeout : duration10m ,
493
+ NodeVolumeDetachTimeout : duration10m ,
494
+ },
495
+ },
496
+ },
497
+ },
498
+ newMachineSet : & clusterv1.MachineSet {
499
+ ObjectMeta : metav1.ObjectMeta {
500
+ Namespace : "foo" ,
501
+ Name : "bar" ,
502
+ },
503
+ Spec : clusterv1.MachineSetSpec {
504
+ Replicas : ptr.To [int32 ](0 ),
505
+ },
506
+ Status : clusterv1.MachineSetStatus {
507
+ Deprecated : & clusterv1.MachineSetDeprecatedStatus {
508
+ V1Beta1 : & clusterv1.MachineSetV1Beta1DeprecatedStatus {
509
+ AvailableReplicas : 2 ,
510
+ },
511
+ },
512
+ },
513
+ },
514
+ oldMachineSets : []* clusterv1.MachineSet {
515
+ {
516
+ ObjectMeta : metav1.ObjectMeta {
517
+ Namespace : "foo" ,
518
+ Name : "2replicas" ,
519
+ },
520
+ Spec : clusterv1.MachineSetSpec {
521
+ Replicas : ptr.To [int32 ](2 ),
522
+ },
523
+ Status : clusterv1.MachineSetStatus {
524
+ Deprecated : & clusterv1.MachineSetDeprecatedStatus {
525
+ V1Beta1 : & clusterv1.MachineSetV1Beta1DeprecatedStatus {
526
+ AvailableReplicas : 2 ,
527
+ },
528
+ },
529
+ },
530
+ },
531
+ {
532
+ ObjectMeta : metav1.ObjectMeta {
533
+ Namespace : "foo" ,
534
+ Name : "1replicas" ,
535
+ },
536
+ Spec : clusterv1.MachineSetSpec {
537
+ Replicas : ptr.To [int32 ](1 ),
538
+ },
539
+ Status : clusterv1.MachineSetStatus {
540
+ Deprecated : & clusterv1.MachineSetDeprecatedStatus {
541
+ V1Beta1 : & clusterv1.MachineSetV1Beta1DeprecatedStatus {
542
+ AvailableReplicas : 1 ,
543
+ },
544
+ },
545
+ },
546
+ },
547
+ },
548
+ expectedOldMachineSetsReplicas : 0 ,
549
+ },
471
550
}
472
551
for _ , tc := range testCases {
473
552
t .Run (tc .name , func (t * testing.T ) {
@@ -500,6 +579,9 @@ func TestReconcileOldMachineSets(t *testing.T) {
500
579
err = r .Client .Get (ctx , client .ObjectKeyFromObject (tc .oldMachineSets [key ]), freshOldMachineSet )
501
580
g .Expect (err ).ToNot (HaveOccurred ())
502
581
g .Expect (* freshOldMachineSet .Spec .Replicas ).To (BeEquivalentTo (tc .expectedOldMachineSetsReplicas ))
582
+ g .Expect (freshOldMachineSet .Spec .Template .Spec .NodeDrainTimeout ).To (BeEquivalentTo (tc .machineDeployment .Spec .Template .Spec .NodeDrainTimeout ))
583
+ g .Expect (freshOldMachineSet .Spec .Template .Spec .NodeDeletionTimeout ).To (BeEquivalentTo (tc .machineDeployment .Spec .Template .Spec .NodeDeletionTimeout ))
584
+ g .Expect (freshOldMachineSet .Spec .Template .Spec .NodeVolumeDetachTimeout ).To (BeEquivalentTo (tc .machineDeployment .Spec .Template .Spec .NodeVolumeDetachTimeout ))
503
585
}
504
586
})
505
587
}
0 commit comments