mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-26 21:17:23 +00:00
remove apps/v1beta2 defaulting codes for obj.Spec.Selector and obj.Labels
This commit is contained in:
parent
da549596c4
commit
a5987fe72c
@ -18,7 +18,6 @@ package v1beta2
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
appsv1beta2 "k8s.io/api/apps/v1beta2"
|
appsv1beta2 "k8s.io/api/apps/v1beta2"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/util/intstr"
|
"k8s.io/apimachinery/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
@ -28,19 +27,6 @@ func addDefaultingFuncs(scheme *runtime.Scheme) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func SetDefaults_DaemonSet(obj *appsv1beta2.DaemonSet) {
|
func SetDefaults_DaemonSet(obj *appsv1beta2.DaemonSet) {
|
||||||
labels := obj.Spec.Template.Labels
|
|
||||||
|
|
||||||
// TODO: support templates defined elsewhere when we support them in the API
|
|
||||||
if labels != nil {
|
|
||||||
if obj.Spec.Selector == nil {
|
|
||||||
obj.Spec.Selector = &metav1.LabelSelector{
|
|
||||||
MatchLabels: labels,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if len(obj.Labels) == 0 {
|
|
||||||
obj.Labels = labels
|
|
||||||
}
|
|
||||||
}
|
|
||||||
updateStrategy := &obj.Spec.UpdateStrategy
|
updateStrategy := &obj.Spec.UpdateStrategy
|
||||||
if updateStrategy.Type == "" {
|
if updateStrategy.Type == "" {
|
||||||
updateStrategy.Type = appsv1beta2.RollingUpdateDaemonSetStrategyType
|
updateStrategy.Type = appsv1beta2.RollingUpdateDaemonSetStrategyType
|
||||||
@ -81,17 +67,6 @@ func SetDefaults_StatefulSet(obj *appsv1beta2.StatefulSet) {
|
|||||||
*obj.Spec.UpdateStrategy.RollingUpdate.Partition = 0
|
*obj.Spec.UpdateStrategy.RollingUpdate.Partition = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
labels := obj.Spec.Template.Labels
|
|
||||||
if labels != nil {
|
|
||||||
if obj.Spec.Selector == nil {
|
|
||||||
obj.Spec.Selector = &metav1.LabelSelector{
|
|
||||||
MatchLabels: labels,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if len(obj.Labels) == 0 {
|
|
||||||
obj.Labels = labels
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if obj.Spec.Replicas == nil {
|
if obj.Spec.Replicas == nil {
|
||||||
obj.Spec.Replicas = new(int32)
|
obj.Spec.Replicas = new(int32)
|
||||||
*obj.Spec.Replicas = 1
|
*obj.Spec.Replicas = 1
|
||||||
@ -109,17 +84,6 @@ func SetDefaults_StatefulSet(obj *appsv1beta2.StatefulSet) {
|
|||||||
// - RevisionHistoryLimit set to 10 (not set in extensions)
|
// - RevisionHistoryLimit set to 10 (not set in extensions)
|
||||||
// - ProgressDeadlineSeconds set to 600s (not set in extensions)
|
// - ProgressDeadlineSeconds set to 600s (not set in extensions)
|
||||||
func SetDefaults_Deployment(obj *appsv1beta2.Deployment) {
|
func SetDefaults_Deployment(obj *appsv1beta2.Deployment) {
|
||||||
// Default labels and selector to labels from pod template spec.
|
|
||||||
labels := obj.Spec.Template.Labels
|
|
||||||
|
|
||||||
if labels != nil {
|
|
||||||
if obj.Spec.Selector == nil {
|
|
||||||
obj.Spec.Selector = &metav1.LabelSelector{MatchLabels: labels}
|
|
||||||
}
|
|
||||||
if len(obj.Labels) == 0 {
|
|
||||||
obj.Labels = labels
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Set appsv1beta2.DeploymentSpec.Replicas to 1 if it is not set.
|
// Set appsv1beta2.DeploymentSpec.Replicas to 1 if it is not set.
|
||||||
if obj.Spec.Replicas == nil {
|
if obj.Spec.Replicas == nil {
|
||||||
obj.Spec.Replicas = new(int32)
|
obj.Spec.Replicas = new(int32)
|
||||||
@ -157,19 +121,6 @@ func SetDefaults_Deployment(obj *appsv1beta2.Deployment) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func SetDefaults_ReplicaSet(obj *appsv1beta2.ReplicaSet) {
|
func SetDefaults_ReplicaSet(obj *appsv1beta2.ReplicaSet) {
|
||||||
labels := obj.Spec.Template.Labels
|
|
||||||
|
|
||||||
// TODO: support templates defined elsewhere when we support them in the API
|
|
||||||
if labels != nil {
|
|
||||||
if obj.Spec.Selector == nil {
|
|
||||||
obj.Spec.Selector = &metav1.LabelSelector{
|
|
||||||
MatchLabels: labels,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if len(obj.Labels) == 0 {
|
|
||||||
obj.Labels = labels
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if obj.Spec.Replicas == nil {
|
if obj.Spec.Replicas == nil {
|
||||||
obj.Spec.Replicas = new(int32)
|
obj.Spec.Replicas = new(int32)
|
||||||
*obj.Spec.Replicas = 1
|
*obj.Spec.Replicas = 1
|
||||||
|
@ -73,9 +73,6 @@ func TestSetDefaultDaemonSetSpec(t *testing.T) {
|
|||||||
Labels: defaultLabels,
|
Labels: defaultLabels,
|
||||||
},
|
},
|
||||||
Spec: appsv1beta2.DaemonSetSpec{
|
Spec: appsv1beta2.DaemonSetSpec{
|
||||||
Selector: &metav1.LabelSelector{
|
|
||||||
MatchLabels: defaultLabels,
|
|
||||||
},
|
|
||||||
Template: defaultTemplate,
|
Template: defaultTemplate,
|
||||||
UpdateStrategy: appsv1beta2.DaemonSetUpdateStrategy{
|
UpdateStrategy: appsv1beta2.DaemonSetUpdateStrategy{
|
||||||
Type: appsv1beta2.RollingUpdateStatefulSetStrategyType,
|
Type: appsv1beta2.RollingUpdateStatefulSetStrategyType,
|
||||||
@ -106,9 +103,6 @@ func TestSetDefaultDaemonSetSpec(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
Spec: appsv1beta2.DaemonSetSpec{
|
Spec: appsv1beta2.DaemonSetSpec{
|
||||||
Selector: &metav1.LabelSelector{
|
|
||||||
MatchLabels: defaultLabels,
|
|
||||||
},
|
|
||||||
Template: defaultTemplate,
|
Template: defaultTemplate,
|
||||||
UpdateStrategy: appsv1beta2.DaemonSetUpdateStrategy{
|
UpdateStrategy: appsv1beta2.DaemonSetUpdateStrategy{
|
||||||
Type: appsv1beta2.RollingUpdateStatefulSetStrategyType,
|
Type: appsv1beta2.RollingUpdateStatefulSetStrategyType,
|
||||||
@ -196,7 +190,7 @@ func TestSetDefaultStatefulSet(t *testing.T) {
|
|||||||
original *appsv1beta2.StatefulSet
|
original *appsv1beta2.StatefulSet
|
||||||
expected *appsv1beta2.StatefulSet
|
expected *appsv1beta2.StatefulSet
|
||||||
}{
|
}{
|
||||||
{ // Selector, labels and default update strategy
|
{ // labels and default update strategy
|
||||||
original: &appsv1beta2.StatefulSet{
|
original: &appsv1beta2.StatefulSet{
|
||||||
Spec: appsv1beta2.StatefulSetSpec{
|
Spec: appsv1beta2.StatefulSetSpec{
|
||||||
Template: defaultTemplate,
|
Template: defaultTemplate,
|
||||||
@ -207,9 +201,6 @@ func TestSetDefaultStatefulSet(t *testing.T) {
|
|||||||
Labels: defaultLabels,
|
Labels: defaultLabels,
|
||||||
},
|
},
|
||||||
Spec: appsv1beta2.StatefulSetSpec{
|
Spec: appsv1beta2.StatefulSetSpec{
|
||||||
Selector: &metav1.LabelSelector{
|
|
||||||
MatchLabels: defaultLabels,
|
|
||||||
},
|
|
||||||
Replicas: &defaultReplicas,
|
Replicas: &defaultReplicas,
|
||||||
Template: defaultTemplate,
|
Template: defaultTemplate,
|
||||||
PodManagementPolicy: appsv1beta2.OrderedReadyPodManagement,
|
PodManagementPolicy: appsv1beta2.OrderedReadyPodManagement,
|
||||||
@ -237,9 +228,6 @@ func TestSetDefaultStatefulSet(t *testing.T) {
|
|||||||
Labels: defaultLabels,
|
Labels: defaultLabels,
|
||||||
},
|
},
|
||||||
Spec: appsv1beta2.StatefulSetSpec{
|
Spec: appsv1beta2.StatefulSetSpec{
|
||||||
Selector: &metav1.LabelSelector{
|
|
||||||
MatchLabels: defaultLabels,
|
|
||||||
},
|
|
||||||
Replicas: &defaultReplicas,
|
Replicas: &defaultReplicas,
|
||||||
Template: defaultTemplate,
|
Template: defaultTemplate,
|
||||||
PodManagementPolicy: appsv1beta2.OrderedReadyPodManagement,
|
PodManagementPolicy: appsv1beta2.OrderedReadyPodManagement,
|
||||||
@ -262,9 +250,6 @@ func TestSetDefaultStatefulSet(t *testing.T) {
|
|||||||
Labels: defaultLabels,
|
Labels: defaultLabels,
|
||||||
},
|
},
|
||||||
Spec: appsv1beta2.StatefulSetSpec{
|
Spec: appsv1beta2.StatefulSetSpec{
|
||||||
Selector: &metav1.LabelSelector{
|
|
||||||
MatchLabels: defaultLabels,
|
|
||||||
},
|
|
||||||
Replicas: &defaultReplicas,
|
Replicas: &defaultReplicas,
|
||||||
Template: defaultTemplate,
|
Template: defaultTemplate,
|
||||||
PodManagementPolicy: appsv1beta2.ParallelPodManagement,
|
PodManagementPolicy: appsv1beta2.ParallelPodManagement,
|
||||||
@ -458,119 +443,6 @@ func TestDefaultDeploymentAvailability(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetDefaultReplicaSet(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
rs *appsv1beta2.ReplicaSet
|
|
||||||
expectLabels bool
|
|
||||||
expectSelector bool
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
rs: &appsv1beta2.ReplicaSet{
|
|
||||||
Spec: appsv1beta2.ReplicaSetSpec{
|
|
||||||
Template: v1.PodTemplateSpec{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Labels: map[string]string{
|
|
||||||
"foo": "bar",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
expectLabels: true,
|
|
||||||
expectSelector: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
rs: &appsv1beta2.ReplicaSet{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Labels: map[string]string{
|
|
||||||
"bar": "foo",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Spec: appsv1beta2.ReplicaSetSpec{
|
|
||||||
Template: v1.PodTemplateSpec{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Labels: map[string]string{
|
|
||||||
"foo": "bar",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
expectLabels: false,
|
|
||||||
expectSelector: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
rs: &appsv1beta2.ReplicaSet{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Labels: map[string]string{
|
|
||||||
"bar": "foo",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Spec: appsv1beta2.ReplicaSetSpec{
|
|
||||||
Selector: &metav1.LabelSelector{
|
|
||||||
MatchLabels: map[string]string{
|
|
||||||
"some": "other",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Template: v1.PodTemplateSpec{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Labels: map[string]string{
|
|
||||||
"foo": "bar",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
expectLabels: false,
|
|
||||||
expectSelector: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
rs: &appsv1beta2.ReplicaSet{
|
|
||||||
Spec: appsv1beta2.ReplicaSetSpec{
|
|
||||||
Selector: &metav1.LabelSelector{
|
|
||||||
MatchLabels: map[string]string{
|
|
||||||
"some": "other",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Template: v1.PodTemplateSpec{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Labels: map[string]string{
|
|
||||||
"foo": "bar",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
expectLabels: true,
|
|
||||||
expectSelector: false,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, test := range tests {
|
|
||||||
rs := test.rs
|
|
||||||
obj2 := roundTrip(t, runtime.Object(rs))
|
|
||||||
rs2, ok := obj2.(*appsv1beta2.ReplicaSet)
|
|
||||||
if !ok {
|
|
||||||
t.Errorf("unexpected object: %v", rs2)
|
|
||||||
t.FailNow()
|
|
||||||
}
|
|
||||||
if test.expectSelector != reflect.DeepEqual(rs2.Spec.Selector.MatchLabels, rs2.Spec.Template.Labels) {
|
|
||||||
if test.expectSelector {
|
|
||||||
t.Errorf("expected: %v, got: %v", rs2.Spec.Template.Labels, rs2.Spec.Selector)
|
|
||||||
} else {
|
|
||||||
t.Errorf("unexpected equality: %v", rs.Spec.Selector)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if test.expectLabels != reflect.DeepEqual(rs2.Labels, rs2.Spec.Template.Labels) {
|
|
||||||
if test.expectLabels {
|
|
||||||
t.Errorf("expected: %v, got: %v", rs2.Spec.Template.Labels, rs2.Labels)
|
|
||||||
} else {
|
|
||||||
t.Errorf("unexpected equality: %v", rs.Labels)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSetDefaultReplicaSetReplicas(t *testing.T) {
|
func TestSetDefaultReplicaSetReplicas(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
rs appsv1beta2.ReplicaSet
|
rs appsv1beta2.ReplicaSet
|
||||||
|
@ -133,7 +133,7 @@ var etcdStorageData = map[schema.GroupVersionResource]struct {
|
|||||||
|
|
||||||
// k8s.io/kubernetes/pkg/apis/apps/v1beta1
|
// k8s.io/kubernetes/pkg/apis/apps/v1beta1
|
||||||
gvr("apps", "v1beta1", "statefulsets"): {
|
gvr("apps", "v1beta1", "statefulsets"): {
|
||||||
stub: `{"metadata": {"name": "ss1"}, "spec": {"template": {"metadata": {"labels": {"a": "b"}}}}}`,
|
stub: `{"metadata": {"name": "ss1"}, "spec": {"selector": {"matchLabels": {"a": "b"}}, "template": {"metadata": {"labels": {"a": "b"}}}}}`,
|
||||||
expectedEtcdPath: "/registry/statefulsets/etcdstoragepathtestnamespace/ss1",
|
expectedEtcdPath: "/registry/statefulsets/etcdstoragepathtestnamespace/ss1",
|
||||||
},
|
},
|
||||||
gvr("apps", "v1beta1", "deployments"): {
|
gvr("apps", "v1beta1", "deployments"): {
|
||||||
@ -149,7 +149,7 @@ var etcdStorageData = map[schema.GroupVersionResource]struct {
|
|||||||
|
|
||||||
// k8s.io/kubernetes/pkg/apis/apps/v1beta2
|
// k8s.io/kubernetes/pkg/apis/apps/v1beta2
|
||||||
gvr("apps", "v1beta2", "statefulsets"): {
|
gvr("apps", "v1beta2", "statefulsets"): {
|
||||||
stub: `{"metadata": {"name": "ss2"}, "spec": {"template": {"metadata": {"labels": {"a": "b"}}}}}`,
|
stub: `{"metadata": {"name": "ss2"}, "spec": {"selector": {"matchLabels": {"a": "b"}}, "template": {"metadata": {"labels": {"a": "b"}}}}}`,
|
||||||
expectedEtcdPath: "/registry/statefulsets/etcdstoragepathtestnamespace/ss2",
|
expectedEtcdPath: "/registry/statefulsets/etcdstoragepathtestnamespace/ss2",
|
||||||
expectedGVK: gvkP("apps", "v1beta1", "StatefulSet"),
|
expectedGVK: gvkP("apps", "v1beta1", "StatefulSet"),
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user