mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-09 03:57:41 +00:00
Chore: add selector labels tweak function
This commit is contained in:
parent
4cab11f26f
commit
ddc13e983b
@ -110,6 +110,16 @@ func tweakReplicas(replicas int32) statefulSetTweak {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func tweakSelectorLabels(labels map[string]string) statefulSetTweak {
|
||||||
|
return func(ss *apps.StatefulSet) {
|
||||||
|
if labels == nil {
|
||||||
|
ss.Spec.Selector = nil
|
||||||
|
} else {
|
||||||
|
ss.Spec.Selector = &metav1.LabelSelector{MatchLabels: labels}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func tweakTemplateRestartPolicy(rp api.RestartPolicy) statefulSetTweak {
|
func tweakTemplateRestartPolicy(rp api.RestartPolicy) statefulSetTweak {
|
||||||
return func(ss *apps.StatefulSet) {
|
return func(ss *apps.StatefulSet) {
|
||||||
ss.Spec.Template.Spec.RestartPolicy = rp
|
ss.Spec.Template.Spec.RestartPolicy = rp
|
||||||
@ -321,14 +331,7 @@ func TestValidateStatefulSet(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "empty selector",
|
name: "empty selector",
|
||||||
set: apps.StatefulSet{
|
set: mkStatefulSet(&validPodTemplate, tweakSelectorLabels(nil)),
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
|
|
||||||
Spec: apps.StatefulSetSpec{
|
|
||||||
PodManagementPolicy: apps.OrderedReadyPodManagement,
|
|
||||||
Template: validPodTemplate.Template,
|
|
||||||
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
errs: field.ErrorList{
|
errs: field.ErrorList{
|
||||||
field.Required(field.NewPath("spec", "selector"), ""),
|
field.Required(field.NewPath("spec", "selector"), ""),
|
||||||
field.Invalid(field.NewPath("spec", "template", "metadata", "labels"), nil, ""), // selector is empty, labels are not, so select doesn't match labels
|
field.Invalid(field.NewPath("spec", "template", "metadata", "labels"), nil, ""), // selector is empty, labels are not, so select doesn't match labels
|
||||||
@ -336,15 +339,7 @@ func TestValidateStatefulSet(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "selector_doesnt_match",
|
name: "selector_doesnt_match",
|
||||||
set: apps.StatefulSet{
|
set: mkStatefulSet(&validPodTemplate, tweakSelectorLabels(map[string]string{"foo": "bar"})),
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
|
|
||||||
Spec: apps.StatefulSetSpec{
|
|
||||||
PodManagementPolicy: apps.OrderedReadyPodManagement,
|
|
||||||
Selector: &metav1.LabelSelector{MatchLabels: map[string]string{"foo": "bar"}},
|
|
||||||
Template: validPodTemplate.Template,
|
|
||||||
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
errs: field.ErrorList{
|
errs: field.ErrorList{
|
||||||
field.Invalid(field.NewPath("spec", "template", "metadata", "labels"), nil, ""),
|
field.Invalid(field.NewPath("spec", "template", "metadata", "labels"), nil, ""),
|
||||||
},
|
},
|
||||||
@ -367,21 +362,10 @@ func TestValidateStatefulSet(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "invalid_label 2",
|
name: "invalid_label 2",
|
||||||
set: apps.StatefulSet{
|
set: mkStatefulSet(&invalidPodTemplate,
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
tweakLabels("NoUppercaseOrSpecialCharsLike=Equals", "bar"),
|
||||||
Name: "abc-123",
|
tweakSelectorLabels(invalidLabels),
|
||||||
Namespace: metav1.NamespaceDefault,
|
),
|
||||||
Labels: map[string]string{
|
|
||||||
"NoUppercaseOrSpecialCharsLike=Equals": "bar",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Spec: apps.StatefulSetSpec{
|
|
||||||
PodManagementPolicy: apps.OrderedReadyPodManagement,
|
|
||||||
Selector: &metav1.LabelSelector{MatchLabels: invalidLabels},
|
|
||||||
Template: invalidPodTemplate.Template,
|
|
||||||
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
errs: field.ErrorList{
|
errs: field.ErrorList{
|
||||||
field.Invalid(field.NewPath("metadata", "labels"), nil, ""),
|
field.Invalid(field.NewPath("metadata", "labels"), nil, ""),
|
||||||
field.Invalid(field.NewPath("spec", "selector"), nil, ""),
|
field.Invalid(field.NewPath("spec", "selector"), nil, ""),
|
||||||
@ -941,24 +925,10 @@ func TestValidateStatefulSetUpdate(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "update selector",
|
name: "update selector",
|
||||||
old: apps.StatefulSet{
|
old: mkStatefulSet(&validPodTemplate, tweakSelectorLabels(validLabels)),
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
|
update: mkStatefulSet(&validPodTemplate2,
|
||||||
Spec: apps.StatefulSetSpec{
|
tweakSelectorLabels(validLabels2),
|
||||||
PodManagementPolicy: apps.OrderedReadyPodManagement,
|
),
|
||||||
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
|
|
||||||
Template: validPodTemplate.Template,
|
|
||||||
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
update: apps.StatefulSet{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
|
|
||||||
Spec: apps.StatefulSetSpec{
|
|
||||||
PodManagementPolicy: apps.OrderedReadyPodManagement,
|
|
||||||
Selector: &metav1.LabelSelector{MatchLabels: validLabels2},
|
|
||||||
Template: validPodTemplate2.Template,
|
|
||||||
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
errs: field.ErrorList{
|
errs: field.ErrorList{
|
||||||
field.Forbidden(field.NewPath("spec"), ""),
|
field.Forbidden(field.NewPath("spec"), ""),
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user