9
9
"testing"
10
10
"time"
11
11
12
+ commonannotations "github.com/medik8s/common/pkg/annotations"
12
13
. "github.com/onsi/gomega"
13
14
14
15
corev1 "k8s.io/api/core/v1"
@@ -122,16 +123,16 @@ func TestReconcile(t *testing.T) {
122
123
machineWithoutNodeRef := newMachine ("machineWithoutNodeRef" , nodeAnnotatedWithMachineWithoutNodeReference .Name )
123
124
machineWithoutNodeRef .Status .NodeRef = nil
124
125
125
- machineHealthCheck := newMachineHealthCheck ("machineHealthCheck" )
126
+ machineHealthCheck := newMachineHealthCheck ("machineHealthCheck" , infraRemediationTemplateRef )
126
127
nodeStartupTimeout := 15 * time .Minute
127
128
machineHealthCheck .Spec .NodeStartupTimeout = & metav1.Duration {Duration : nodeStartupTimeout }
128
129
129
- machineHealthCheckNegativeMaxUnhealthy := newMachineHealthCheck ("machineHealthCheckNegativeMaxUnhealthy" )
130
+ machineHealthCheckNegativeMaxUnhealthy := newMachineHealthCheck ("machineHealthCheckNegativeMaxUnhealthy" , infraRemediationTemplateRef )
130
131
negativeOne := intstr .FromInt (- 1 )
131
132
machineHealthCheckNegativeMaxUnhealthy .Spec .MaxUnhealthy = & negativeOne
132
133
machineHealthCheckNegativeMaxUnhealthy .Spec .NodeStartupTimeout = & metav1.Duration {Duration : nodeStartupTimeout }
133
134
134
- machineHealthCheckPaused := newMachineHealthCheck ("machineHealthCheck" )
135
+ machineHealthCheckPaused := newMachineHealthCheck ("machineHealthCheck" , infraRemediationTemplateRef )
135
136
machineHealthCheckPaused .Annotations = make (map [string ]string )
136
137
machineHealthCheckPaused .Annotations [annotations .MHCPausedAnnotation ] = "test"
137
138
@@ -387,15 +388,18 @@ func TestReconcileExternalRemediationTemplate(t *testing.T) {
387
388
machineWithNodeUnHealthy := newMachine ("Machine" , nodeUnHealthy .Name )
388
389
machineWithNodeUnHealthy .APIVersion = machinev1 .SchemeGroupVersion .String ()
389
390
390
- mhc := newMachineHealthCheck ("machineHealthCheck" )
391
+ mhc := newMachineHealthCheck ("machineHealthCheck" , infraRemediationTemplateRef )
392
+ mhcMultipleSupport := newMachineHealthCheck ("machineHealthCheck" , infraMultipleRemediationTemplateRef )
393
+
391
394
remediationTemplateCR := newTestRemediationTemplateCR (InfraRemediationKind , MachineNamespace , InfraRemediationTemplateName )
395
+ remediationMultipleSupportTemplateCR := newTestRemediationTemplateCR (InfraRemediationKind , MachineNamespace , InfraMultipleSupportRemediationTemplateName )
392
396
owner := metav1.OwnerReference {
393
397
APIVersion : mhc .APIVersion ,
394
398
Kind : mhc .Kind ,
395
399
Name : mhc .Name ,
396
400
UID : mhc .UID ,
397
401
}
398
- remediationCR := newRemediationCR (machineWithNodeUnHealthy .Name , * mhc .Spec .RemediationTemplate , owner )
402
+ remediationCR := newRemediationCR (machineWithNodeUnHealthy .Name , nodeUnHealthy . Name , * mhc .Spec .RemediationTemplate , owner )
399
403
400
404
testCases := []testCase {
401
405
@@ -464,6 +468,28 @@ func TestReconcileExternalRemediationTemplate(t *testing.T) {
464
468
},
465
469
},
466
470
},
471
+
472
+ {
473
+ name : "create new multiple template supported remediation" ,
474
+ machine : machineWithNodeUnHealthy ,
475
+ node : nodeUnHealthy ,
476
+ mhc : mhcMultipleSupport ,
477
+ remediationCR : nil ,
478
+ remediationTemplate : remediationMultipleSupportTemplateCR ,
479
+ expected : expectedReconcile {
480
+ result : reconcile.Result {},
481
+ error : false ,
482
+ },
483
+ expectedEvents : []string {utils .EventReasonRemediationCreated },
484
+ expectedStatus : & machinev1.MachineHealthCheckStatus {
485
+ ExpectedMachines : pointer .Int (1 ),
486
+ CurrentHealthy : pointer .Int (0 ),
487
+ RemediationsAllowed : 0 ,
488
+ Conditions : machinev1.Conditions {
489
+ remediationAllowedCondition ,
490
+ },
491
+ },
492
+ },
467
493
}
468
494
469
495
for _ , tc := range testCases {
@@ -849,7 +875,7 @@ func TestMHCRequestsFromNode(t *testing.T) {
849
875
func TestGetTargetsFromMHC (t * testing.T ) {
850
876
machine1 := newMachine ("match1" , "node1" )
851
877
machine2 := newMachine ("match2" , "node2" )
852
- mhc := newMachineHealthCheck ("findTargets" )
878
+ mhc := newMachineHealthCheck ("findTargets" , infraRemediationTemplateRef )
853
879
testCases := []struct {
854
880
testCase string
855
881
mhc * machinev1.MachineHealthCheck
@@ -2485,6 +2511,10 @@ func buildRunTimeObjects(tc testCase) []runtime.Object {
2485
2511
objects = append (objects , newTestRemediationCRD (testRemediationKind ))
2486
2512
objects = append (objects , newTestRemediationTemplateCR (testRemediationKind , MachineNamespace , InfraRemediationTemplateName ))
2487
2513
2514
+ templateMultiSupportCR := newTestRemediationTemplateCR (testRemediationKind , MachineNamespace , InfraMultipleSupportRemediationTemplateName )
2515
+ templateMultiSupportCR .SetAnnotations (map [string ]string {commonannotations .MultipleTemplatesSupportedAnnotation : "true" })
2516
+ objects = append (objects , templateMultiSupportCR )
2517
+
2488
2518
return objects
2489
2519
}
2490
2520
@@ -2501,6 +2531,10 @@ func verifyRemediationCR(t *testing.T, tc testCase, ctx context.Context, client
2501
2531
}
2502
2532
if isExist {
2503
2533
g .Expect (client .Get (ctx , nameSpace , remediationCR )).To (Succeed ())
2534
+ crAnnotations := remediationCR .GetAnnotations ()
2535
+ g .Expect (crAnnotations ).ToNot (BeNil ())
2536
+ g .Expect (crAnnotations [commonannotations .NodeNameAnnotation ]).Should (Equal (tc .node .Name ))
2537
+ g .Expect (crAnnotations [annotations .TemplateNameAnnotation ]).Should (Equal (tc .remediationTemplate .GetName ()))
2504
2538
} else {
2505
2539
g .Expect (client .Get (ctx , nameSpace , remediationCR )).NotTo (Succeed ())
2506
2540
}
@@ -2588,7 +2622,7 @@ func newMachine(name string, nodeName string) *machinev1.Machine {
2588
2622
}
2589
2623
2590
2624
// newMachineHealthCheck returns new MachineHealthCheck object that can be used for testing
2591
- func newMachineHealthCheck (name string ) * machinev1.MachineHealthCheck {
2625
+ func newMachineHealthCheck (name string , remediationTemplate * corev1. ObjectReference ) * machinev1.MachineHealthCheck {
2592
2626
return & machinev1.MachineHealthCheck {
2593
2627
ObjectMeta : metav1.ObjectMeta {
2594
2628
Name : name ,
@@ -2615,7 +2649,7 @@ func newMachineHealthCheck(name string) *machinev1.MachineHealthCheck {
2615
2649
Timeout : metav1.Duration {Duration : 300 * time .Second },
2616
2650
},
2617
2651
},
2618
- RemediationTemplate : infraRemediationTemplateRef ,
2652
+ RemediationTemplate : remediationTemplate ,
2619
2653
},
2620
2654
Status : machinev1.MachineHealthCheckStatus {},
2621
2655
}
0 commit comments