mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
Drop DefaultGarbageCollectionPolicy checks for legacy apps REST API versions
This commit is contained in:
parent
97c5b8de9a
commit
f98ff65564
@ -19,7 +19,6 @@ package daemonset
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
appsv1beta2 "k8s.io/api/apps/v1beta2"
|
|
||||||
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
|
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
|
||||||
apiequality "k8s.io/apimachinery/pkg/api/equality"
|
apiequality "k8s.io/apimachinery/pkg/api/equality"
|
||||||
apivalidation "k8s.io/apimachinery/pkg/api/validation"
|
apivalidation "k8s.io/apimachinery/pkg/api/validation"
|
||||||
@ -48,20 +47,12 @@ type daemonSetStrategy struct {
|
|||||||
// Strategy is the default logic that applies when creating and updating DaemonSet objects.
|
// Strategy is the default logic that applies when creating and updating DaemonSet objects.
|
||||||
var Strategy = daemonSetStrategy{legacyscheme.Scheme, names.SimpleNameGenerator}
|
var Strategy = daemonSetStrategy{legacyscheme.Scheme, names.SimpleNameGenerator}
|
||||||
|
|
||||||
// DefaultGarbageCollectionPolicy returns OrphanDependents for extensions/v1beta1 and apps/v1beta2 for backwards compatibility,
|
// Make sure we correctly implement the interface.
|
||||||
// and DeleteDependents for all other versions.
|
var _ = rest.GarbageCollectionDeleteStrategy(Strategy)
|
||||||
|
|
||||||
|
// DefaultGarbageCollectionPolicy returns DeleteDependents for all currently served versions.
|
||||||
func (daemonSetStrategy) DefaultGarbageCollectionPolicy(ctx context.Context) rest.GarbageCollectionPolicy {
|
func (daemonSetStrategy) DefaultGarbageCollectionPolicy(ctx context.Context) rest.GarbageCollectionPolicy {
|
||||||
var groupVersion schema.GroupVersion
|
return rest.DeleteDependents
|
||||||
if requestInfo, found := genericapirequest.RequestInfoFrom(ctx); found {
|
|
||||||
groupVersion = schema.GroupVersion{Group: requestInfo.APIGroup, Version: requestInfo.APIVersion}
|
|
||||||
}
|
|
||||||
switch groupVersion {
|
|
||||||
case extensionsv1beta1.SchemeGroupVersion, appsv1beta2.SchemeGroupVersion:
|
|
||||||
// for back compatibility
|
|
||||||
return rest.OrphanDependents
|
|
||||||
default:
|
|
||||||
return rest.DeleteDependents
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// NamespaceScoped returns true because all DaemonSets need to be within a namespace.
|
// NamespaceScoped returns true because all DaemonSets need to be within a namespace.
|
||||||
|
@ -25,7 +25,6 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/intstr"
|
"k8s.io/apimachinery/pkg/util/intstr"
|
||||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||||
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
||||||
"k8s.io/apiserver/pkg/registry/rest"
|
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||||
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
||||||
"k8s.io/kubernetes/pkg/apis/apps"
|
"k8s.io/kubernetes/pkg/apis/apps"
|
||||||
@ -40,60 +39,6 @@ const (
|
|||||||
namespace = "test-namespace"
|
namespace = "test-namespace"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestDaemonsetDefaultGarbageCollectionPolicy(t *testing.T) {
|
|
||||||
// Make sure we correctly implement the interface.
|
|
||||||
// Otherwise a typo could silently change the default.
|
|
||||||
var gcds rest.GarbageCollectionDeleteStrategy = Strategy
|
|
||||||
tests := []struct {
|
|
||||||
requestInfo genericapirequest.RequestInfo
|
|
||||||
expectedGCPolicy rest.GarbageCollectionPolicy
|
|
||||||
isNilRequestInfo bool
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
genericapirequest.RequestInfo{
|
|
||||||
APIGroup: "extensions",
|
|
||||||
APIVersion: "v1beta1",
|
|
||||||
Resource: "daemonsets",
|
|
||||||
},
|
|
||||||
rest.OrphanDependents,
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
genericapirequest.RequestInfo{
|
|
||||||
APIGroup: "apps",
|
|
||||||
APIVersion: "v1beta2",
|
|
||||||
Resource: "daemonsets",
|
|
||||||
},
|
|
||||||
rest.OrphanDependents,
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
genericapirequest.RequestInfo{
|
|
||||||
APIGroup: "apps",
|
|
||||||
APIVersion: "v1",
|
|
||||||
Resource: "daemonsets",
|
|
||||||
},
|
|
||||||
rest.DeleteDependents,
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
expectedGCPolicy: rest.DeleteDependents,
|
|
||||||
isNilRequestInfo: true,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, test := range tests {
|
|
||||||
context := genericapirequest.NewContext()
|
|
||||||
if !test.isNilRequestInfo {
|
|
||||||
context = genericapirequest.WithRequestInfo(context, &test.requestInfo)
|
|
||||||
}
|
|
||||||
if got, want := gcds.DefaultGarbageCollectionPolicy(context), test.expectedGCPolicy; got != want {
|
|
||||||
t.Errorf("%s/%s: DefaultGarbageCollectionPolicy() = %#v, want %#v", test.requestInfo.APIGroup,
|
|
||||||
test.requestInfo.APIVersion, got, want)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSelectorImmutability(t *testing.T) {
|
func TestSelectorImmutability(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
requestInfo genericapirequest.RequestInfo
|
requestInfo genericapirequest.RequestInfo
|
||||||
|
@ -20,7 +20,6 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
|
|
||||||
appsv1beta1 "k8s.io/api/apps/v1beta1"
|
appsv1beta1 "k8s.io/api/apps/v1beta1"
|
||||||
appsv1beta2 "k8s.io/api/apps/v1beta2"
|
|
||||||
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
|
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
|
||||||
apiequality "k8s.io/apimachinery/pkg/api/equality"
|
apiequality "k8s.io/apimachinery/pkg/api/equality"
|
||||||
apivalidation "k8s.io/apimachinery/pkg/api/validation"
|
apivalidation "k8s.io/apimachinery/pkg/api/validation"
|
||||||
@ -47,20 +46,12 @@ type deploymentStrategy struct {
|
|||||||
// objects via the REST API.
|
// objects via the REST API.
|
||||||
var Strategy = deploymentStrategy{legacyscheme.Scheme, names.SimpleNameGenerator}
|
var Strategy = deploymentStrategy{legacyscheme.Scheme, names.SimpleNameGenerator}
|
||||||
|
|
||||||
// DefaultGarbageCollectionPolicy returns OrphanDependents for extensions/v1beta1, apps/v1beta1, and apps/v1beta2 for backwards compatibility,
|
// Make sure we correctly implement the interface.
|
||||||
// and DeleteDependents for all other versions.
|
var _ = rest.GarbageCollectionDeleteStrategy(Strategy)
|
||||||
|
|
||||||
|
// DefaultGarbageCollectionPolicy returns DeleteDependents for all currently served versions.
|
||||||
func (deploymentStrategy) DefaultGarbageCollectionPolicy(ctx context.Context) rest.GarbageCollectionPolicy {
|
func (deploymentStrategy) DefaultGarbageCollectionPolicy(ctx context.Context) rest.GarbageCollectionPolicy {
|
||||||
var groupVersion schema.GroupVersion
|
return rest.DeleteDependents
|
||||||
if requestInfo, found := genericapirequest.RequestInfoFrom(ctx); found {
|
|
||||||
groupVersion = schema.GroupVersion{Group: requestInfo.APIGroup, Version: requestInfo.APIVersion}
|
|
||||||
}
|
|
||||||
switch groupVersion {
|
|
||||||
case extensionsv1beta1.SchemeGroupVersion, appsv1beta1.SchemeGroupVersion, appsv1beta2.SchemeGroupVersion:
|
|
||||||
// for back compatibility
|
|
||||||
return rest.OrphanDependents
|
|
||||||
default:
|
|
||||||
return rest.DeleteDependents
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// NamespaceScoped is true for deployment.
|
// NamespaceScoped is true for deployment.
|
||||||
|
@ -26,7 +26,6 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/intstr"
|
"k8s.io/apimachinery/pkg/util/intstr"
|
||||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||||
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
||||||
"k8s.io/apiserver/pkg/registry/rest"
|
|
||||||
"k8s.io/kubernetes/pkg/apis/apps"
|
"k8s.io/kubernetes/pkg/apis/apps"
|
||||||
api "k8s.io/kubernetes/pkg/apis/core"
|
api "k8s.io/kubernetes/pkg/apis/core"
|
||||||
)
|
)
|
||||||
@ -186,69 +185,6 @@ func newDeploymentWithSelectorLabels(selectorLabels map[string]string) *apps.Dep
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDeploymentDefaultGarbageCollectionPolicy(t *testing.T) {
|
|
||||||
// Make sure we correctly implement the interface.
|
|
||||||
// Otherwise a typo could silently change the default.
|
|
||||||
var gcds rest.GarbageCollectionDeleteStrategy = Strategy
|
|
||||||
tests := []struct {
|
|
||||||
requestInfo genericapirequest.RequestInfo
|
|
||||||
expectedGCPolicy rest.GarbageCollectionPolicy
|
|
||||||
isNilRequestInfo bool
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
genericapirequest.RequestInfo{
|
|
||||||
APIGroup: "extensions",
|
|
||||||
APIVersion: "v1beta1",
|
|
||||||
Resource: "deployments",
|
|
||||||
},
|
|
||||||
rest.OrphanDependents,
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
genericapirequest.RequestInfo{
|
|
||||||
APIGroup: "apps",
|
|
||||||
APIVersion: "v1beta1",
|
|
||||||
Resource: "deployments",
|
|
||||||
},
|
|
||||||
rest.OrphanDependents,
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
genericapirequest.RequestInfo{
|
|
||||||
APIGroup: "apps",
|
|
||||||
APIVersion: "v1beta2",
|
|
||||||
Resource: "deployments",
|
|
||||||
},
|
|
||||||
rest.OrphanDependents,
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
genericapirequest.RequestInfo{
|
|
||||||
APIGroup: "apps",
|
|
||||||
APIVersion: "v1",
|
|
||||||
Resource: "deployments",
|
|
||||||
},
|
|
||||||
rest.DeleteDependents,
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
expectedGCPolicy: rest.DeleteDependents,
|
|
||||||
isNilRequestInfo: true,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, test := range tests {
|
|
||||||
context := genericapirequest.NewContext()
|
|
||||||
if !test.isNilRequestInfo {
|
|
||||||
context = genericapirequest.WithRequestInfo(context, &test.requestInfo)
|
|
||||||
}
|
|
||||||
if got, want := gcds.DefaultGarbageCollectionPolicy(context), test.expectedGCPolicy; got != want {
|
|
||||||
t.Errorf("%s/%s: DefaultGarbageCollectionPolicy() = %#v, want %#v", test.requestInfo.APIGroup,
|
|
||||||
test.requestInfo.APIVersion, got, want)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func newDeploymentWithHugePageValue(reousreceName api.ResourceName, value resource.Quantity) *apps.Deployment {
|
func newDeploymentWithHugePageValue(reousreceName api.ResourceName, value resource.Quantity) *apps.Deployment {
|
||||||
return &apps.Deployment{
|
return &apps.Deployment{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
@ -23,7 +23,6 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
appsv1beta2 "k8s.io/api/apps/v1beta2"
|
|
||||||
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
|
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
|
||||||
apiequality "k8s.io/apimachinery/pkg/api/equality"
|
apiequality "k8s.io/apimachinery/pkg/api/equality"
|
||||||
apivalidation "k8s.io/apimachinery/pkg/api/validation"
|
apivalidation "k8s.io/apimachinery/pkg/api/validation"
|
||||||
@ -53,20 +52,12 @@ type rsStrategy struct {
|
|||||||
// Strategy is the default logic that applies when creating and updating ReplicaSet objects.
|
// Strategy is the default logic that applies when creating and updating ReplicaSet objects.
|
||||||
var Strategy = rsStrategy{legacyscheme.Scheme, names.SimpleNameGenerator}
|
var Strategy = rsStrategy{legacyscheme.Scheme, names.SimpleNameGenerator}
|
||||||
|
|
||||||
// DefaultGarbageCollectionPolicy returns OrphanDependents for extensions/v1beta1 and apps/v1beta2 for backwards compatibility,
|
// Make sure we correctly implement the interface.
|
||||||
// and DeleteDependents for all other versions.
|
var _ = rest.GarbageCollectionDeleteStrategy(Strategy)
|
||||||
|
|
||||||
|
// DefaultGarbageCollectionPolicy returns DeleteDependents for all currently served versions.
|
||||||
func (rsStrategy) DefaultGarbageCollectionPolicy(ctx context.Context) rest.GarbageCollectionPolicy {
|
func (rsStrategy) DefaultGarbageCollectionPolicy(ctx context.Context) rest.GarbageCollectionPolicy {
|
||||||
var groupVersion schema.GroupVersion
|
return rest.DeleteDependents
|
||||||
if requestInfo, found := genericapirequest.RequestInfoFrom(ctx); found {
|
|
||||||
groupVersion = schema.GroupVersion{Group: requestInfo.APIGroup, Version: requestInfo.APIVersion}
|
|
||||||
}
|
|
||||||
switch groupVersion {
|
|
||||||
case extensionsv1beta1.SchemeGroupVersion, appsv1beta2.SchemeGroupVersion:
|
|
||||||
// for back compatibility
|
|
||||||
return rest.OrphanDependents
|
|
||||||
default:
|
|
||||||
return rest.DeleteDependents
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// NamespaceScoped returns true because all ReplicaSets need to be within a namespace.
|
// NamespaceScoped returns true because all ReplicaSets need to be within a namespace.
|
||||||
|
@ -23,7 +23,6 @@ import (
|
|||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||||
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
||||||
"k8s.io/apiserver/pkg/registry/rest"
|
|
||||||
"k8s.io/kubernetes/pkg/apis/apps"
|
"k8s.io/kubernetes/pkg/apis/apps"
|
||||||
api "k8s.io/kubernetes/pkg/apis/core"
|
api "k8s.io/kubernetes/pkg/apis/core"
|
||||||
)
|
)
|
||||||
@ -228,57 +227,3 @@ func newReplicaSetWithSelectorLabels(selectorLabels map[string]string) *apps.Rep
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestReplicasetDefaultGarbageCollectionPolicy(t *testing.T) {
|
|
||||||
// Make sure we correctly implement the interface.
|
|
||||||
// Otherwise a typo could silently change the default.
|
|
||||||
var gcds rest.GarbageCollectionDeleteStrategy = Strategy
|
|
||||||
tests := []struct {
|
|
||||||
requestInfo genericapirequest.RequestInfo
|
|
||||||
expectedGCPolicy rest.GarbageCollectionPolicy
|
|
||||||
isNilRequestInfo bool
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
genericapirequest.RequestInfo{
|
|
||||||
APIGroup: "extensions",
|
|
||||||
APIVersion: "v1beta1",
|
|
||||||
Resource: "replicasets",
|
|
||||||
},
|
|
||||||
rest.OrphanDependents,
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
genericapirequest.RequestInfo{
|
|
||||||
APIGroup: "apps",
|
|
||||||
APIVersion: "v1beta2",
|
|
||||||
Resource: "replicasets",
|
|
||||||
},
|
|
||||||
rest.OrphanDependents,
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
genericapirequest.RequestInfo{
|
|
||||||
APIGroup: "apps",
|
|
||||||
APIVersion: "v1",
|
|
||||||
Resource: "replicasets",
|
|
||||||
},
|
|
||||||
rest.DeleteDependents,
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
expectedGCPolicy: rest.DeleteDependents,
|
|
||||||
isNilRequestInfo: true,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, test := range tests {
|
|
||||||
context := genericapirequest.NewContext()
|
|
||||||
if !test.isNilRequestInfo {
|
|
||||||
context = genericapirequest.WithRequestInfo(context, &test.requestInfo)
|
|
||||||
}
|
|
||||||
if got, want := gcds.DefaultGarbageCollectionPolicy(context), test.expectedGCPolicy; got != want {
|
|
||||||
t.Errorf("%s/%s: DefaultGarbageCollectionPolicy() = %#v, want %#v", test.requestInfo.APIGroup,
|
|
||||||
test.requestInfo.APIVersion, got, want)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -21,13 +21,9 @@ import (
|
|||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||||
"k8s.io/kubernetes/pkg/features"
|
"k8s.io/kubernetes/pkg/features"
|
||||||
|
|
||||||
appsv1beta1 "k8s.io/api/apps/v1beta1"
|
|
||||||
appsv1beta2 "k8s.io/api/apps/v1beta2"
|
|
||||||
apiequality "k8s.io/apimachinery/pkg/api/equality"
|
apiequality "k8s.io/apimachinery/pkg/api/equality"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
||||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||||
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
|
||||||
"k8s.io/apiserver/pkg/registry/rest"
|
"k8s.io/apiserver/pkg/registry/rest"
|
||||||
"k8s.io/apiserver/pkg/storage/names"
|
"k8s.io/apiserver/pkg/storage/names"
|
||||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||||
@ -46,20 +42,12 @@ type statefulSetStrategy struct {
|
|||||||
// Strategy is the default logic that applies when creating and updating Replication StatefulSet objects.
|
// Strategy is the default logic that applies when creating and updating Replication StatefulSet objects.
|
||||||
var Strategy = statefulSetStrategy{legacyscheme.Scheme, names.SimpleNameGenerator}
|
var Strategy = statefulSetStrategy{legacyscheme.Scheme, names.SimpleNameGenerator}
|
||||||
|
|
||||||
// DefaultGarbageCollectionPolicy returns OrphanDependents for apps/v1beta1 and apps/v1beta2 for backwards compatibility,
|
// Make sure we correctly implement the interface.
|
||||||
// and DeleteDependents for all other versions.
|
var _ = rest.GarbageCollectionDeleteStrategy(Strategy)
|
||||||
|
|
||||||
|
// DefaultGarbageCollectionPolicy returns DeleteDependents for all currently served versions.
|
||||||
func (statefulSetStrategy) DefaultGarbageCollectionPolicy(ctx context.Context) rest.GarbageCollectionPolicy {
|
func (statefulSetStrategy) DefaultGarbageCollectionPolicy(ctx context.Context) rest.GarbageCollectionPolicy {
|
||||||
var groupVersion schema.GroupVersion
|
return rest.DeleteDependents
|
||||||
if requestInfo, found := genericapirequest.RequestInfoFrom(ctx); found {
|
|
||||||
groupVersion = schema.GroupVersion{Group: requestInfo.APIGroup, Version: requestInfo.APIVersion}
|
|
||||||
}
|
|
||||||
switch groupVersion {
|
|
||||||
case appsv1beta1.SchemeGroupVersion, appsv1beta2.SchemeGroupVersion:
|
|
||||||
// for back compatibility
|
|
||||||
return rest.OrphanDependents
|
|
||||||
default:
|
|
||||||
return rest.DeleteDependents
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// NamespaceScoped returns true because all StatefulSet' need to be within a namespace.
|
// NamespaceScoped returns true because all StatefulSet' need to be within a namespace.
|
||||||
|
@ -23,7 +23,6 @@ import (
|
|||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/diff"
|
"k8s.io/apimachinery/pkg/util/diff"
|
||||||
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
||||||
"k8s.io/apiserver/pkg/registry/rest"
|
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||||
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
||||||
"k8s.io/kubernetes/pkg/apis/apps"
|
"k8s.io/kubernetes/pkg/apis/apps"
|
||||||
@ -194,60 +193,6 @@ func TestStatefulSetStrategy(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestStatefulsetDefaultGarbageCollectionPolicy(t *testing.T) {
|
|
||||||
// Make sure we correctly implement the interface.
|
|
||||||
// Otherwise a typo could silently change the default.
|
|
||||||
var gcds rest.GarbageCollectionDeleteStrategy = Strategy
|
|
||||||
tests := []struct {
|
|
||||||
requestInfo genericapirequest.RequestInfo
|
|
||||||
expectedGCPolicy rest.GarbageCollectionPolicy
|
|
||||||
isNilRequestInfo bool
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
genericapirequest.RequestInfo{
|
|
||||||
APIGroup: "apps",
|
|
||||||
APIVersion: "v1beta1",
|
|
||||||
Resource: "statefulsets",
|
|
||||||
},
|
|
||||||
rest.OrphanDependents,
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
genericapirequest.RequestInfo{
|
|
||||||
APIGroup: "apps",
|
|
||||||
APIVersion: "v1beta2",
|
|
||||||
Resource: "statefulsets",
|
|
||||||
},
|
|
||||||
rest.OrphanDependents,
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
genericapirequest.RequestInfo{
|
|
||||||
APIGroup: "apps",
|
|
||||||
APIVersion: "v1",
|
|
||||||
Resource: "statefulsets",
|
|
||||||
},
|
|
||||||
rest.DeleteDependents,
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
expectedGCPolicy: rest.DeleteDependents,
|
|
||||||
isNilRequestInfo: true,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, test := range tests {
|
|
||||||
context := genericapirequest.NewContext()
|
|
||||||
if !test.isNilRequestInfo {
|
|
||||||
context = genericapirequest.WithRequestInfo(context, &test.requestInfo)
|
|
||||||
}
|
|
||||||
if got, want := gcds.DefaultGarbageCollectionPolicy(context), test.expectedGCPolicy; got != want {
|
|
||||||
t.Errorf("%s/%s: DefaultGarbageCollectionPolicy() = %#v, want %#v", test.requestInfo.APIGroup,
|
|
||||||
test.requestInfo.APIVersion, got, want)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestStatefulSetStatusStrategy(t *testing.T) {
|
func TestStatefulSetStatusStrategy(t *testing.T) {
|
||||||
ctx := genericapirequest.NewDefaultContext()
|
ctx := genericapirequest.NewDefaultContext()
|
||||||
if !StatusStrategy.NamespaceScoped() {
|
if !StatusStrategy.NamespaceScoped() {
|
||||||
|
Loading…
Reference in New Issue
Block a user