Chore: add template restart policy tweak function

This commit is contained in:
Qirui 2023-03-20 11:42:38 +08:00
parent 4418a9f590
commit 2161d095fa

View File

@ -86,6 +86,12 @@ func tweakReplicas(replicas int32) statefulSetTweak {
} }
} }
func tweakTemplateRestartPolicy(rp api.RestartPolicy) statefulSetTweak {
return func(ss *apps.StatefulSet) {
ss.Spec.Template.Spec.RestartPolicy = rp
}
}
func TestValidateStatefulSet(t *testing.T) { func TestValidateStatefulSet(t *testing.T) {
validLabels := map[string]string{"a": "b"} validLabels := map[string]string{"a": "b"}
validPodTemplate := api.PodTemplate{ validPodTemplate := api.PodTemplate{
@ -354,80 +360,21 @@ func TestValidateStatefulSet(t *testing.T) {
}, },
{ {
name: "invalid restart policy 1", name: "invalid restart policy 1",
set: apps.StatefulSet{ set: mkStatefulSet(&validPodTemplate, tweakTemplateRestartPolicy(api.RestartPolicyOnFailure)),
ObjectMeta: metav1.ObjectMeta{
Name: "abc-123",
Namespace: metav1.NamespaceDefault,
},
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.OrderedReadyPodManagement,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: api.PodTemplateSpec{
Spec: api.PodSpec{
RestartPolicy: api.RestartPolicyOnFailure,
DNSPolicy: api.DNSClusterFirst,
Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent"}},
},
ObjectMeta: metav1.ObjectMeta{
Labels: validLabels,
},
},
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
},
},
errs: field.ErrorList{ errs: field.ErrorList{
field.NotSupported(field.NewPath("spec", "template", "spec", "restartPolicy"), nil, nil), field.NotSupported(field.NewPath("spec", "template", "spec", "restartPolicy"), nil, nil),
}, },
}, },
{ {
name: "invalid restart policy 2", name: "invalid restart policy 2",
set: apps.StatefulSet{ set: mkStatefulSet(&validPodTemplate, tweakTemplateRestartPolicy(api.RestartPolicyNever)),
ObjectMeta: metav1.ObjectMeta{
Name: "abc-123",
Namespace: metav1.NamespaceDefault,
},
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.OrderedReadyPodManagement,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: api.PodTemplateSpec{
Spec: api.PodSpec{
RestartPolicy: api.RestartPolicyNever,
DNSPolicy: api.DNSClusterFirst,
Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent"}},
},
ObjectMeta: metav1.ObjectMeta{
Labels: validLabels,
},
},
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
},
},
errs: field.ErrorList{ errs: field.ErrorList{
field.NotSupported(field.NewPath("spec", "template", "spec", "restartPolicy"), nil, nil), field.NotSupported(field.NewPath("spec", "template", "spec", "restartPolicy"), nil, nil),
}, },
}, },
{ {
name: "empty restart policy", name: "empty restart policy",
set: apps.StatefulSet{ set: mkStatefulSet(&validPodTemplate, tweakTemplateRestartPolicy("")),
ObjectMeta: metav1.ObjectMeta{
Name: "abc-123",
Namespace: metav1.NamespaceDefault,
},
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.OrderedReadyPodManagement,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: api.PodTemplateSpec{
Spec: api.PodSpec{
DNSPolicy: api.DNSClusterFirst,
Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent"}},
},
ObjectMeta: metav1.ObjectMeta{
Labels: validLabels,
},
},
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
},
},
errs: field.ErrorList{ errs: field.ErrorList{
field.NotSupported(field.NewPath("spec", "template", "spec", "restartPolicy"), nil, nil), field.NotSupported(field.NewPath("spec", "template", "spec", "restartPolicy"), nil, nil),
}, },