mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Chore: add replicas tweak function
This commit is contained in:
		@@ -80,6 +80,12 @@ func tweakPodManagementPolicy(policy apps.PodManagementPolicyType) statefulSetTw
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func tweakReplicas(replicas int32) statefulSetTweak {
 | 
				
			||||||
 | 
						return func(ss *apps.StatefulSet) {
 | 
				
			||||||
 | 
							ss.Spec.Replicas = replicas
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
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{
 | 
				
			||||||
@@ -276,16 +282,7 @@ func TestValidateStatefulSet(t *testing.T) {
 | 
				
			|||||||
		},
 | 
							},
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			name: "negative_replicas",
 | 
								name: "negative_replicas",
 | 
				
			||||||
			set: apps.StatefulSet{
 | 
								set:  mkStatefulSet(&validPodTemplate, tweakReplicas(-1)),
 | 
				
			||||||
				ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
 | 
					 | 
				
			||||||
				Spec: apps.StatefulSetSpec{
 | 
					 | 
				
			||||||
					PodManagementPolicy: apps.OrderedReadyPodManagement,
 | 
					 | 
				
			||||||
					Replicas:            -1,
 | 
					 | 
				
			||||||
					Selector:            &metav1.LabelSelector{MatchLabels: validLabels},
 | 
					 | 
				
			||||||
					Template:            validPodTemplate.Template,
 | 
					 | 
				
			||||||
					UpdateStrategy:      apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			errs: field.ErrorList{
 | 
								errs: field.ErrorList{
 | 
				
			||||||
				field.Invalid(field.NewPath("spec", "replicas"), nil, ""),
 | 
									field.Invalid(field.NewPath("spec", "replicas"), nil, ""),
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
@@ -507,48 +504,24 @@ func TestValidateStatefulSet(t *testing.T) {
 | 
				
			|||||||
		},
 | 
							},
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			name: "empty pod management policy",
 | 
								name: "empty pod management policy",
 | 
				
			||||||
			set: apps.StatefulSet{
 | 
								set: mkStatefulSet(&validPodTemplate,
 | 
				
			||||||
				ObjectMeta: metav1.ObjectMeta{Name: "abc-123", Namespace: metav1.NamespaceDefault},
 | 
									tweakPodManagementPolicy(""),
 | 
				
			||||||
				Spec: apps.StatefulSetSpec{
 | 
									tweakReplicas(3),
 | 
				
			||||||
					PodManagementPolicy: "",
 | 
								),
 | 
				
			||||||
					Selector:            &metav1.LabelSelector{MatchLabels: validLabels},
 | 
					 | 
				
			||||||
					Template:            validPodTemplate.Template,
 | 
					 | 
				
			||||||
					Replicas:            3,
 | 
					 | 
				
			||||||
					UpdateStrategy:      apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			errs: field.ErrorList{
 | 
								errs: field.ErrorList{
 | 
				
			||||||
				field.Required(field.NewPath("spec", "podManagementPolicy"), ""),
 | 
									field.Required(field.NewPath("spec", "podManagementPolicy"), ""),
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			name: "invalid pod management policy",
 | 
								name: "invalid pod management policy",
 | 
				
			||||||
			set: apps.StatefulSet{
 | 
								set:  mkStatefulSet(&validPodTemplate, tweakPodManagementPolicy("foo")),
 | 
				
			||||||
				ObjectMeta: metav1.ObjectMeta{Name: "abc-123", Namespace: metav1.NamespaceDefault},
 | 
					 | 
				
			||||||
				Spec: apps.StatefulSetSpec{
 | 
					 | 
				
			||||||
					PodManagementPolicy: "foo",
 | 
					 | 
				
			||||||
					Selector:            &metav1.LabelSelector{MatchLabels: validLabels},
 | 
					 | 
				
			||||||
					Template:            validPodTemplate.Template,
 | 
					 | 
				
			||||||
					Replicas:            3,
 | 
					 | 
				
			||||||
					UpdateStrategy:      apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			errs: field.ErrorList{
 | 
								errs: field.ErrorList{
 | 
				
			||||||
				field.Invalid(field.NewPath("spec", "podManagementPolicy"), nil, ""),
 | 
									field.Invalid(field.NewPath("spec", "podManagementPolicy"), nil, ""),
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			name: "set active deadline seconds",
 | 
								name: "set active deadline seconds",
 | 
				
			||||||
			set: apps.StatefulSet{
 | 
								set:  mkStatefulSet(&invalidPodTemplate2, tweakReplicas(3)),
 | 
				
			||||||
				ObjectMeta: metav1.ObjectMeta{Name: "abc-123", Namespace: metav1.NamespaceDefault},
 | 
					 | 
				
			||||||
				Spec: apps.StatefulSetSpec{
 | 
					 | 
				
			||||||
					PodManagementPolicy: apps.OrderedReadyPodManagement,
 | 
					 | 
				
			||||||
					Selector:            &metav1.LabelSelector{MatchLabels: validLabels},
 | 
					 | 
				
			||||||
					Template:            invalidPodTemplate2.Template,
 | 
					 | 
				
			||||||
					Replicas:            3,
 | 
					 | 
				
			||||||
					UpdateStrategy:      apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			errs: field.ErrorList{
 | 
								errs: field.ErrorList{
 | 
				
			||||||
				field.Forbidden(field.NewPath("spec", "template", "spec", "activeDeadlineSeconds"), ""),
 | 
									field.Forbidden(field.NewPath("spec", "template", "spec", "activeDeadlineSeconds"), ""),
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
@@ -981,26 +954,9 @@ func TestValidateStatefulSetUpdate(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	successCases := []testCase{
 | 
						successCases := []testCase{
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			name: "update replica count",
 | 
								name:   "update replica count",
 | 
				
			||||||
			old: apps.StatefulSet{
 | 
								old:    mkStatefulSet(&validPodTemplate),
 | 
				
			||||||
				ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
 | 
								update: mkStatefulSet(&validPodTemplate, tweakReplicas(3)),
 | 
				
			||||||
				Spec: apps.StatefulSetSpec{
 | 
					 | 
				
			||||||
					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,
 | 
					 | 
				
			||||||
					Replicas:            3,
 | 
					 | 
				
			||||||
					Selector:            &metav1.LabelSelector{MatchLabels: validLabels},
 | 
					 | 
				
			||||||
					Template:            validPodTemplate.Template,
 | 
					 | 
				
			||||||
					UpdateStrategy:      apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			name:   "update containers 1",
 | 
								name:   "update containers 1",
 | 
				
			||||||
@@ -1232,26 +1188,9 @@ func TestValidateStatefulSetUpdate(t *testing.T) {
 | 
				
			|||||||
			},
 | 
								},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			name: "update to negative replicas",
 | 
								name:   "update to negative replicas",
 | 
				
			||||||
			old: apps.StatefulSet{
 | 
								old:    mkStatefulSet(&validPodTemplate),
 | 
				
			||||||
				ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
 | 
								update: mkStatefulSet(&validPodTemplate, tweakReplicas(-1)),
 | 
				
			||||||
				Spec: apps.StatefulSetSpec{
 | 
					 | 
				
			||||||
					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,
 | 
					 | 
				
			||||||
					Replicas:            -1,
 | 
					 | 
				
			||||||
					Selector:            &metav1.LabelSelector{MatchLabels: validLabels},
 | 
					 | 
				
			||||||
					Template:            validPodTemplate.Template,
 | 
					 | 
				
			||||||
					UpdateStrategy:      apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			errs: field.ErrorList{
 | 
								errs: field.ErrorList{
 | 
				
			||||||
				field.Invalid(field.NewPath("spec", "replicas"), nil, ""),
 | 
									field.Invalid(field.NewPath("spec", "replicas"), nil, ""),
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user