Chore: add persistent volume claim template tweak function

This commit is contained in:
Qirui 2023-03-20 13:28:09 +08:00
parent f97d3cf748
commit ba9dfe686f

View File

@ -128,6 +128,12 @@ func tweakOrdinalsStart(s int32) statefulSetTweak {
} }
} }
func tweakPVCTemplate(pvc ...api.PersistentVolumeClaim) statefulSetTweak {
return func(ss *apps.StatefulSet) {
ss.Spec.VolumeClaimTemplates = pvc
}
}
func tweakUpdateStrategyType(t apps.StatefulSetUpdateStrategyType) statefulSetTweak { func tweakUpdateStrategyType(t apps.StatefulSetUpdateStrategyType) statefulSetTweak {
return func(ss *apps.StatefulSet) { return func(ss *apps.StatefulSet) {
ss.Spec.UpdateStrategy.Type = t ss.Spec.UpdateStrategy.Type = t
@ -1003,79 +1009,25 @@ func TestValidateStatefulSetUpdate(t *testing.T) {
}, },
}, },
{ {
name: "update pvc template size", name: "update pvc template size",
old: apps.StatefulSet{ old: mkStatefulSet(&validPodTemplate, tweakPVCTemplate(validPVCTemplate)),
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault}, update: mkStatefulSet(&validPodTemplate, tweakPVCTemplate(validPVCTemplateChangedSize)),
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.OrderedReadyPodManagement,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
VolumeClaimTemplates: []api.PersistentVolumeClaim{validPVCTemplate},
},
},
update: apps.StatefulSet{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.OrderedReadyPodManagement,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
VolumeClaimTemplates: []api.PersistentVolumeClaim{validPVCTemplateChangedSize},
},
},
errs: field.ErrorList{ errs: field.ErrorList{
field.Forbidden(field.NewPath("spec"), ""), field.Forbidden(field.NewPath("spec"), ""),
}, },
}, },
{ {
name: "update pvc template storage class", name: "update pvc template storage class",
old: apps.StatefulSet{ old: mkStatefulSet(&validPodTemplate, tweakPVCTemplate(validPVCTemplate)),
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault}, update: mkStatefulSet(&validPodTemplate, tweakPVCTemplate(validPVCTemplateChangedClass)),
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.OrderedReadyPodManagement,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
VolumeClaimTemplates: []api.PersistentVolumeClaim{validPVCTemplate},
},
},
update: apps.StatefulSet{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.OrderedReadyPodManagement,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
VolumeClaimTemplates: []api.PersistentVolumeClaim{validPVCTemplateChangedClass},
},
},
errs: field.ErrorList{ errs: field.ErrorList{
field.Forbidden(field.NewPath("spec"), ""), field.Forbidden(field.NewPath("spec"), ""),
}, },
}, },
{ {
name: "add new pvc template", name: "add new pvc template",
old: apps.StatefulSet{ old: mkStatefulSet(&validPodTemplate, tweakPVCTemplate(validPVCTemplate)),
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault}, update: mkStatefulSet(&validPodTemplate, tweakPVCTemplate(validPVCTemplate, validPVCTemplate2)),
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.OrderedReadyPodManagement,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
VolumeClaimTemplates: []api.PersistentVolumeClaim{validPVCTemplate},
},
},
update: apps.StatefulSet{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.OrderedReadyPodManagement,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
VolumeClaimTemplates: []api.PersistentVolumeClaim{validPVCTemplate, validPVCTemplate2},
},
},
errs: field.ErrorList{ errs: field.ErrorList{
field.Forbidden(field.NewPath("spec"), ""), field.Forbidden(field.NewPath("spec"), ""),
}, },