Move pkg/api.FinanlizerOrphan into metav1

This commit is contained in:
Dr. Stefan Schimanski 2017-02-02 10:57:49 +01:00
parent 871fc426b3
commit ef8bb4e7e7
18 changed files with 52 additions and 49 deletions

View File

@ -101,7 +101,7 @@ func TestDaemonSetController(t *testing.T) {
updatedDaemonSet := GetDaemonSetFromChan(daemonsetUpdateChan) updatedDaemonSet := GetDaemonSetFromChan(daemonsetUpdateChan)
assert.True(t, daemonsetController.hasFinalizerFunc(updatedDaemonSet, deletionhelper.FinalizerDeleteFromUnderlyingClusters)) assert.True(t, daemonsetController.hasFinalizerFunc(updatedDaemonSet, deletionhelper.FinalizerDeleteFromUnderlyingClusters))
updatedDaemonSet = GetDaemonSetFromChan(daemonsetUpdateChan) updatedDaemonSet = GetDaemonSetFromChan(daemonsetUpdateChan)
assert.True(t, daemonsetController.hasFinalizerFunc(updatedDaemonSet, apiv1.FinalizerOrphan)) assert.True(t, daemonsetController.hasFinalizerFunc(updatedDaemonSet, metav1.FinalizerOrphan))
daemonset1 = *updatedDaemonSet daemonset1 = *updatedDaemonSet
createdDaemonSet := GetDaemonSetFromChan(cluster1CreateChan) createdDaemonSet := GetDaemonSetFromChan(cluster1CreateChan)

View File

@ -144,7 +144,7 @@ func TestIngressController(t *testing.T) {
updatedIngress := GetIngressFromChan(t, fedIngressUpdateChan) updatedIngress := GetIngressFromChan(t, fedIngressUpdateChan)
assert.True(t, ingressController.hasFinalizerFunc(updatedIngress, deletionhelper.FinalizerDeleteFromUnderlyingClusters)) assert.True(t, ingressController.hasFinalizerFunc(updatedIngress, deletionhelper.FinalizerDeleteFromUnderlyingClusters))
updatedIngress = GetIngressFromChan(t, fedIngressUpdateChan) updatedIngress = GetIngressFromChan(t, fedIngressUpdateChan)
assert.True(t, ingressController.hasFinalizerFunc(updatedIngress, apiv1.FinalizerOrphan), fmt.Sprintf("ingress does not have the orphan finalizer: %v", updatedIngress)) assert.True(t, ingressController.hasFinalizerFunc(updatedIngress, metav1.FinalizerOrphan), fmt.Sprintf("ingress does not have the orphan finalizer: %v", updatedIngress))
fedIngress = *updatedIngress fedIngress = *updatedIngress
t.Log("Checking that Ingress was correctly created in cluster 1") t.Log("Checking that Ingress was correctly created in cluster 1")
@ -305,7 +305,7 @@ func WaitForFinalizersInFederationStore(ingressController *IngressController, st
return false, err return false, err
} }
ingress := obj.(*extensionsv1beta1.Ingress) ingress := obj.(*extensionsv1beta1.Ingress)
if ingressController.hasFinalizerFunc(ingress, apiv1.FinalizerOrphan) && if ingressController.hasFinalizerFunc(ingress, metav1.FinalizerOrphan) &&
ingressController.hasFinalizerFunc(ingress, deletionhelper.FinalizerDeleteFromUnderlyingClusters) { ingressController.hasFinalizerFunc(ingress, deletionhelper.FinalizerDeleteFromUnderlyingClusters) {
return true, nil return true, nil
} }

View File

@ -149,7 +149,7 @@ func TestNamespaceController(t *testing.T) {
// Delete the namespace with orphan finalizer (let namespaces // Delete the namespace with orphan finalizer (let namespaces
// in underlying clusters be as is). // in underlying clusters be as is).
// TODO: Add a test without orphan finalizer. // TODO: Add a test without orphan finalizer.
ns1.ObjectMeta.Finalizers = append(ns1.ObjectMeta.Finalizers, apiv1.FinalizerOrphan) ns1.ObjectMeta.Finalizers = append(ns1.ObjectMeta.Finalizers, metav1.FinalizerOrphan)
ns1.DeletionTimestamp = &metav1.Time{Time: time.Now()} ns1.DeletionTimestamp = &metav1.Time{Time: time.Now()}
namespaceWatch.Modify(&ns1) namespaceWatch.Modify(&ns1)
assert.Equal(t, ns1.Name, GetStringFromChan(nsDeleteChan)) assert.Equal(t, ns1.Name, GetStringFromChan(nsDeleteChan))

View File

@ -101,7 +101,7 @@ func TestSecretController(t *testing.T) {
updatedSecret := GetSecretFromChan(secretUpdateChan) updatedSecret := GetSecretFromChan(secretUpdateChan)
assert.True(t, secretController.hasFinalizerFunc(updatedSecret, deletionhelper.FinalizerDeleteFromUnderlyingClusters)) assert.True(t, secretController.hasFinalizerFunc(updatedSecret, deletionhelper.FinalizerDeleteFromUnderlyingClusters))
updatedSecret = GetSecretFromChan(secretUpdateChan) updatedSecret = GetSecretFromChan(secretUpdateChan)
assert.True(t, secretController.hasFinalizerFunc(updatedSecret, apiv1.FinalizerOrphan)) assert.True(t, secretController.hasFinalizerFunc(updatedSecret, metav1.FinalizerOrphan))
secret1 = *updatedSecret secret1 = *updatedSecret
// Verify that the secret is created in underlying cluster1. // Verify that the secret is created in underlying cluster1.

View File

@ -24,11 +24,11 @@ import (
"strings" "strings"
"time" "time"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/tools/record" "k8s.io/client-go/tools/record"
"k8s.io/kubernetes/federation/pkg/federation-controller/util" "k8s.io/kubernetes/federation/pkg/federation-controller/util"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
api_v1 "k8s.io/kubernetes/pkg/api/v1"
"github.com/golang/glog" "github.com/golang/glog"
) )
@ -96,9 +96,9 @@ func (dh *DeletionHelper) EnsureFinalizers(obj runtime.Object) (
return obj, err return obj, err
} }
} }
if !dh.hasFinalizerFunc(obj, api_v1.FinalizerOrphan) { if !dh.hasFinalizerFunc(obj, metav1.FinalizerOrphan) {
glog.V(2).Infof("Adding finalizer %s to %s", api_v1.FinalizerOrphan, dh.objNameFunc(obj)) glog.V(2).Infof("Adding finalizer %s to %s", metav1.FinalizerOrphan, dh.objNameFunc(obj))
obj, err := dh.addFinalizerFunc(obj, api_v1.FinalizerOrphan) obj, err := dh.addFinalizerFunc(obj, metav1.FinalizerOrphan)
if err != nil { if err != nil {
return obj, err return obj, err
} }
@ -120,7 +120,7 @@ func (dh *DeletionHelper) HandleObjectInUnderlyingClusters(obj runtime.Object) (
glog.V(2).Infof("obj does not have %s finalizer. Nothing to do", FinalizerDeleteFromUnderlyingClusters) glog.V(2).Infof("obj does not have %s finalizer. Nothing to do", FinalizerDeleteFromUnderlyingClusters)
return obj, nil return obj, nil
} }
hasOrphanFinalizer := dh.hasFinalizerFunc(obj, api_v1.FinalizerOrphan) hasOrphanFinalizer := dh.hasFinalizerFunc(obj, metav1.FinalizerOrphan)
if hasOrphanFinalizer { if hasOrphanFinalizer {
glog.V(2).Infof("Found finalizer orphan. Nothing to do, just remove the finalizer") glog.V(2).Infof("Found finalizer orphan. Nothing to do, just remove the finalizer")
// If the obj has FinalizerOrphan finalizer, then we need to orphan the // If the obj has FinalizerOrphan finalizer, then we need to orphan the
@ -130,7 +130,7 @@ func (dh *DeletionHelper) HandleObjectInUnderlyingClusters(obj runtime.Object) (
if err != nil { if err != nil {
return obj, err return obj, err
} }
return dh.removeFinalizerFunc(obj, api_v1.FinalizerOrphan) return dh.removeFinalizerFunc(obj, metav1.FinalizerOrphan)
} }
glog.V(2).Infof("Deleting obj %s from underlying clusters", objName) glog.V(2).Infof("Deleting obj %s from underlying clusters", objName)

View File

@ -244,7 +244,7 @@ func IsServiceIPRequested(service *Service) bool {
var standardFinalizers = sets.NewString( var standardFinalizers = sets.NewString(
string(FinalizerKubernetes), string(FinalizerKubernetes),
FinalizerOrphan, metav1.FinalizerOrphan,
) )
// HasAnnotation returns a bool if passed in annotation exists // HasAnnotation returns a bool if passed in annotation exists

View File

@ -2798,10 +2798,10 @@ type NamespaceSpec struct {
// FinalizerName is the name identifying a finalizer during namespace lifecycle. // FinalizerName is the name identifying a finalizer during namespace lifecycle.
type FinalizerName string type FinalizerName string
// These are internal finalizer values to Kubernetes, must be qualified name unless defined here // These are internal finalizer values to Kubernetes, must be qualified name unless defined here or
// in metav1.
const ( const (
FinalizerKubernetes FinalizerName = "kubernetes" FinalizerKubernetes FinalizerName = "kubernetes"
FinalizerOrphan string = "orphan"
) )
// NamespaceStatus is information about the current status of a Namespace. // NamespaceStatus is information about the current status of a Namespace.

View File

@ -21,6 +21,7 @@ import (
"fmt" "fmt"
"strings" "strings"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/selection" "k8s.io/apimachinery/pkg/selection"
"k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/types"
@ -82,7 +83,7 @@ func IsServiceIPRequested(service *Service) bool {
var standardFinalizers = sets.NewString( var standardFinalizers = sets.NewString(
string(FinalizerKubernetes), string(FinalizerKubernetes),
FinalizerOrphan, metav1.FinalizerOrphan,
) )
func IsStandardFinalizerName(str string) bool { func IsStandardFinalizerName(str string) bool {

View File

@ -3220,10 +3220,10 @@ type NodeList struct {
// FinalizerName is the name identifying a finalizer during namespace lifecycle. // FinalizerName is the name identifying a finalizer during namespace lifecycle.
type FinalizerName string type FinalizerName string
// These are internal finalizer values to Kubernetes, must be qualified name unless defined here // These are internal finalizer values to Kubernetes, must be qualified name unless defined here or
// in metav1.
const ( const (
FinalizerKubernetes FinalizerName = "kubernetes" FinalizerKubernetes FinalizerName = "kubernetes"
FinalizerOrphan string = "orphan"
) )
// NamespaceSpec describes the attributes on a Namespace. // NamespaceSpec describes the attributes on a Namespace.

View File

@ -39,7 +39,6 @@ import (
"k8s.io/client-go/tools/cache" "k8s.io/client-go/tools/cache"
"k8s.io/client-go/util/clock" "k8s.io/client-go/util/clock"
"k8s.io/client-go/util/workqueue" "k8s.io/client-go/util/workqueue"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/controller/garbagecollector/metaonly" "k8s.io/kubernetes/pkg/controller/garbagecollector/metaonly"
// import known versions // import known versions
@ -235,7 +234,7 @@ func shouldOrphanDependents(e *event, accessor metav1.Object) bool {
} }
finalizers := accessor.GetFinalizers() finalizers := accessor.GetFinalizers()
for _, finalizer := range finalizers { for _, finalizer := range finalizers {
if finalizer == v1.FinalizerOrphan { if finalizer == metav1.FinalizerOrphan {
return true return true
} }
} }
@ -280,7 +279,7 @@ func (gc *GarbageCollector) removeOrphanFinalizer(owner *node) error {
var newFinalizers []string var newFinalizers []string
found := false found := false
for _, f := range finalizers { for _, f := range finalizers {
if f == v1.FinalizerOrphan { if f == metav1.FinalizerOrphan {
found = true found = true
break break
} else { } else {

View File

@ -25,7 +25,6 @@ import (
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/watch" "k8s.io/apimachinery/pkg/watch"
"k8s.io/kubernetes/pkg/api"
) )
func TestDecoratedWatcher(t *testing.T) { func TestDecoratedWatcher(t *testing.T) {

View File

@ -37,7 +37,6 @@ import (
"k8s.io/apimachinery/pkg/watch" "k8s.io/apimachinery/pkg/watch"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request" genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/storage" "k8s.io/apiserver/pkg/storage"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/genericapiserver/registry/generic" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
"k8s.io/kubernetes/pkg/genericapiserver/registry/rest" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest"
"k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/cachesize"
@ -546,7 +545,7 @@ func shouldUpdateFinalizers(e *Store, accessor metav1.Object, options *metav1.De
hasOrphanFinalizer := false hasOrphanFinalizer := false
finalizers := accessor.GetFinalizers() finalizers := accessor.GetFinalizers()
for _, f := range finalizers { for _, f := range finalizers {
if f == api.FinalizerOrphan { if f == metav1.FinalizerOrphan {
shouldOrphan = true shouldOrphan = true
hasOrphanFinalizer = true hasOrphanFinalizer = true
break break
@ -558,13 +557,13 @@ func shouldUpdateFinalizers(e *Store, accessor metav1.Object, options *metav1.De
shouldOrphan = *options.OrphanDependents shouldOrphan = *options.OrphanDependents
} }
if shouldOrphan && !hasOrphanFinalizer { if shouldOrphan && !hasOrphanFinalizer {
finalizers = append(finalizers, api.FinalizerOrphan) finalizers = append(finalizers, metav1.FinalizerOrphan)
return true, finalizers return true, finalizers
} }
if !shouldOrphan && hasOrphanFinalizer { if !shouldOrphan && hasOrphanFinalizer {
var newFinalizers []string var newFinalizers []string
for _, f := range finalizers { for _, f := range finalizers {
if f == api.FinalizerOrphan { if f == metav1.FinalizerOrphan {
continue continue
} }
newFinalizers = append(newFinalizers, f) newFinalizers = append(newFinalizers, f)

View File

@ -798,7 +798,7 @@ func TestStoreDeleteWithOrphanDependents(t *testing.T) {
initialGeneration := int64(1) initialGeneration := int64(1)
podWithOrphanFinalizer := func(name string) *api.Pod { podWithOrphanFinalizer := func(name string) *api.Pod {
return &api.Pod{ return &api.Pod{
ObjectMeta: metav1.ObjectMeta{Name: name, Finalizers: []string{"foo.com/x", api.FinalizerOrphan, "bar.com/y"}, Generation: initialGeneration}, ObjectMeta: metav1.ObjectMeta{Name: name, Finalizers: []string{"foo.com/x", metav1.FinalizerOrphan, "bar.com/y"}, Generation: initialGeneration},
Spec: api.PodSpec{NodeName: "machine"}, Spec: api.PodSpec{NodeName: "machine"},
} }
} }
@ -816,7 +816,7 @@ func TestStoreDeleteWithOrphanDependents(t *testing.T) {
} }
podWithOnlyOrphanFinalizer := func(name string) *api.Pod { podWithOnlyOrphanFinalizer := func(name string) *api.Pod {
return &api.Pod{ return &api.Pod{
ObjectMeta: metav1.ObjectMeta{Name: name, Finalizers: []string{api.FinalizerOrphan}, Generation: initialGeneration}, ObjectMeta: metav1.ObjectMeta{Name: name, Finalizers: []string{metav1.FinalizerOrphan}, Generation: initialGeneration},
Spec: api.PodSpec{NodeName: "machine"}, Spec: api.PodSpec{NodeName: "machine"},
} }
} }
@ -844,28 +844,28 @@ func TestStoreDeleteWithOrphanDependents(t *testing.T) {
orphanOptions, orphanOptions,
defaultDeleteStrategy, defaultDeleteStrategy,
false, false,
[]string{"foo.com/x", api.FinalizerOrphan, "bar.com/y"}, []string{"foo.com/x", metav1.FinalizerOrphan, "bar.com/y"},
}, },
{ {
podWithOtherFinalizers("pod2"), podWithOtherFinalizers("pod2"),
orphanOptions, orphanOptions,
defaultDeleteStrategy, defaultDeleteStrategy,
false, false,
[]string{"foo.com/x", "bar.com/y", api.FinalizerOrphan}, []string{"foo.com/x", "bar.com/y", metav1.FinalizerOrphan},
}, },
{ {
podWithNoFinalizer("pod3"), podWithNoFinalizer("pod3"),
orphanOptions, orphanOptions,
defaultDeleteStrategy, defaultDeleteStrategy,
false, false,
[]string{api.FinalizerOrphan}, []string{metav1.FinalizerOrphan},
}, },
{ {
podWithOnlyOrphanFinalizer("pod4"), podWithOnlyOrphanFinalizer("pod4"),
orphanOptions, orphanOptions,
defaultDeleteStrategy, defaultDeleteStrategy,
false, false,
[]string{api.FinalizerOrphan}, []string{metav1.FinalizerOrphan},
}, },
// cases run with DeleteOptions.OrphanDedependents=false // cases run with DeleteOptions.OrphanDedependents=false
// these cases all have oprhanDeleteStrategy, which should be ignored // these cases all have oprhanDeleteStrategy, which should be ignored
@ -907,14 +907,14 @@ func TestStoreDeleteWithOrphanDependents(t *testing.T) {
nilOrphanOptions, nilOrphanOptions,
defaultDeleteStrategy, defaultDeleteStrategy,
false, false,
[]string{"foo.com/x", api.FinalizerOrphan, "bar.com/y"}, []string{"foo.com/x", metav1.FinalizerOrphan, "bar.com/y"},
}, },
{ {
podWithOrphanFinalizer("pod10"), podWithOrphanFinalizer("pod10"),
nilOrphanOptions, nilOrphanOptions,
orphanDeleteStrategy, orphanDeleteStrategy,
false, false,
[]string{"foo.com/x", api.FinalizerOrphan, "bar.com/y"}, []string{"foo.com/x", metav1.FinalizerOrphan, "bar.com/y"},
}, },
{ {
podWithOtherFinalizers("pod11"), podWithOtherFinalizers("pod11"),
@ -928,7 +928,7 @@ func TestStoreDeleteWithOrphanDependents(t *testing.T) {
nilOrphanOptions, nilOrphanOptions,
orphanDeleteStrategy, orphanDeleteStrategy,
false, false,
[]string{"foo.com/x", "bar.com/y", api.FinalizerOrphan}, []string{"foo.com/x", "bar.com/y", metav1.FinalizerOrphan},
}, },
{ {
podWithNoFinalizer("pod13"), podWithNoFinalizer("pod13"),
@ -942,21 +942,21 @@ func TestStoreDeleteWithOrphanDependents(t *testing.T) {
nilOrphanOptions, nilOrphanOptions,
orphanDeleteStrategy, orphanDeleteStrategy,
false, false,
[]string{api.FinalizerOrphan}, []string{metav1.FinalizerOrphan},
}, },
{ {
podWithOnlyOrphanFinalizer("pod15"), podWithOnlyOrphanFinalizer("pod15"),
nilOrphanOptions, nilOrphanOptions,
defaultDeleteStrategy, defaultDeleteStrategy,
false, false,
[]string{api.FinalizerOrphan}, []string{metav1.FinalizerOrphan},
}, },
{ {
podWithOnlyOrphanFinalizer("pod16"), podWithOnlyOrphanFinalizer("pod16"),
nilOrphanOptions, nilOrphanOptions,
orphanDeleteStrategy, orphanDeleteStrategy,
false, false,
[]string{api.FinalizerOrphan}, []string{metav1.FinalizerOrphan},
}, },
// cases run with nil DeleteOptions should have exact same behavior. // cases run with nil DeleteOptions should have exact same behavior.
@ -967,14 +967,14 @@ func TestStoreDeleteWithOrphanDependents(t *testing.T) {
nil, nil,
defaultDeleteStrategy, defaultDeleteStrategy,
false, false,
[]string{"foo.com/x", api.FinalizerOrphan, "bar.com/y"}, []string{"foo.com/x", metav1.FinalizerOrphan, "bar.com/y"},
}, },
{ {
podWithOrphanFinalizer("pod18"), podWithOrphanFinalizer("pod18"),
nil, nil,
orphanDeleteStrategy, orphanDeleteStrategy,
false, false,
[]string{"foo.com/x", api.FinalizerOrphan, "bar.com/y"}, []string{"foo.com/x", metav1.FinalizerOrphan, "bar.com/y"},
}, },
{ {
podWithOtherFinalizers("pod19"), podWithOtherFinalizers("pod19"),
@ -988,7 +988,7 @@ func TestStoreDeleteWithOrphanDependents(t *testing.T) {
nil, nil,
orphanDeleteStrategy, orphanDeleteStrategy,
false, false,
[]string{"foo.com/x", "bar.com/y", api.FinalizerOrphan}, []string{"foo.com/x", "bar.com/y", metav1.FinalizerOrphan},
}, },
{ {
podWithNoFinalizer("pod21"), podWithNoFinalizer("pod21"),
@ -1002,21 +1002,21 @@ func TestStoreDeleteWithOrphanDependents(t *testing.T) {
nil, nil,
orphanDeleteStrategy, orphanDeleteStrategy,
false, false,
[]string{api.FinalizerOrphan}, []string{metav1.FinalizerOrphan},
}, },
{ {
podWithOnlyOrphanFinalizer("pod23"), podWithOnlyOrphanFinalizer("pod23"),
nil, nil,
defaultDeleteStrategy, defaultDeleteStrategy,
false, false,
[]string{api.FinalizerOrphan}, []string{metav1.FinalizerOrphan},
}, },
{ {
podWithOnlyOrphanFinalizer("pod24"), podWithOnlyOrphanFinalizer("pod24"),
nil, nil,
orphanDeleteStrategy, orphanDeleteStrategy,
false, false,
[]string{api.FinalizerOrphan}, []string{metav1.FinalizerOrphan},
}, },
} }

View File

@ -141,7 +141,7 @@ func (r *REST) Delete(ctx genericapirequest.Context, name string, options *metav
newFinalizers := []string{} newFinalizers := []string{}
for i := range existingNamespace.ObjectMeta.Finalizers { for i := range existingNamespace.ObjectMeta.Finalizers {
finalizer := existingNamespace.ObjectMeta.Finalizers[i] finalizer := existingNamespace.ObjectMeta.Finalizers[i]
if string(finalizer) != api.FinalizerOrphan { if string(finalizer) != metav1.FinalizerOrphan {
newFinalizers = append(newFinalizers, finalizer) newFinalizers = append(newFinalizers, finalizer)
} }
} }

View File

@ -71,6 +71,11 @@ type ListMeta struct {
ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,2,opt,name=resourceVersion"` ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,2,opt,name=resourceVersion"`
} }
// These are internal finalizer values for Kubernetes-like APIs, must be qualified name unless defined here
const (
FinalizerOrphan string = "orphan"
)
// ObjectMeta is metadata that all persisted resources must have, which includes all objects // ObjectMeta is metadata that all persisted resources must have, which includes all objects
// users must create. // users must create.
type ObjectMeta struct { type ObjectMeta struct {

View File

@ -26,6 +26,7 @@ import (
"k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/pkg/api" "k8s.io/client-go/pkg/api"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
) )
// IsOpaqueIntResourceName returns true if the resource name has the opaque // IsOpaqueIntResourceName returns true if the resource name has the opaque
@ -82,7 +83,7 @@ func IsServiceIPRequested(service *Service) bool {
var standardFinalizers = sets.NewString( var standardFinalizers = sets.NewString(
string(FinalizerKubernetes), string(FinalizerKubernetes),
FinalizerOrphan, metav1.FinalizerOrphan,
) )
func IsStandardFinalizerName(str string) bool { func IsStandardFinalizerName(str string) bool {

View File

@ -3223,7 +3223,6 @@ type FinalizerName string
// These are internal finalizer values to Kubernetes, must be qualified name unless defined here // These are internal finalizer values to Kubernetes, must be qualified name unless defined here
const ( const (
FinalizerKubernetes FinalizerName = "kubernetes" FinalizerKubernetes FinalizerName = "kubernetes"
FinalizerOrphan string = "orphan"
) )
// NamespaceSpec describes the attributes on a Namespace. // NamespaceSpec describes the attributes on a Namespace.

View File

@ -297,7 +297,7 @@ func setupRCsPods(t *testing.T, gc *garbagecollector.GarbageCollector, clientSet
} }
podUIDs = append(podUIDs, pod.ObjectMeta.UID) podUIDs = append(podUIDs, pod.ObjectMeta.UID)
} }
orphan := (options != nil && options.OrphanDependents != nil && *options.OrphanDependents) || (options == nil && len(initialFinalizers) != 0 && initialFinalizers[0] == api.FinalizerOrphan) orphan := (options != nil && options.OrphanDependents != nil && *options.OrphanDependents) || (options == nil && len(initialFinalizers) != 0 && initialFinalizers[0] == metav1.FinalizerOrphan)
// if we intend to orphan the pods, we need wait for the gc to observe the // if we intend to orphan the pods, we need wait for the gc to observe the
// creation of the pods, otherwise if the deletion of RC is observed before // creation of the pods, otherwise if the deletion of RC is observed before
// the creation of the pods, the pods will not be orphaned. // the creation of the pods, the pods will not be orphaned.
@ -356,9 +356,9 @@ func TestStressingCascadingDeletion(t *testing.T) {
// rc is created with empty finalizers, deleted with nil delete options, pods will remain. // rc is created with empty finalizers, deleted with nil delete options, pods will remain.
go setupRCsPods(t, gc, clientSet, "collection1-"+strconv.Itoa(i), ns.Name, []string{}, nil, &wg, rcUIDs) go setupRCsPods(t, gc, clientSet, "collection1-"+strconv.Itoa(i), ns.Name, []string{}, nil, &wg, rcUIDs)
// rc is created with the orphan finalizer, deleted with nil options, pods will remain. // rc is created with the orphan finalizer, deleted with nil options, pods will remain.
go setupRCsPods(t, gc, clientSet, "collection2-"+strconv.Itoa(i), ns.Name, []string{api.FinalizerOrphan}, nil, &wg, rcUIDs) go setupRCsPods(t, gc, clientSet, "collection2-"+strconv.Itoa(i), ns.Name, []string{metav1.FinalizerOrphan}, nil, &wg, rcUIDs)
// rc is created with the orphan finalizer, deleted with DeleteOptions.OrphanDependents=false, pods will be deleted. // rc is created with the orphan finalizer, deleted with DeleteOptions.OrphanDependents=false, pods will be deleted.
go setupRCsPods(t, gc, clientSet, "collection3-"+strconv.Itoa(i), ns.Name, []string{api.FinalizerOrphan}, getNonOrphanOptions(), &wg, rcUIDs) go setupRCsPods(t, gc, clientSet, "collection3-"+strconv.Itoa(i), ns.Name, []string{metav1.FinalizerOrphan}, getNonOrphanOptions(), &wg, rcUIDs)
// rc is created with empty finalizers, deleted with DeleteOptions.OrphanDependents=true, pods will remain. // rc is created with empty finalizers, deleted with DeleteOptions.OrphanDependents=true, pods will remain.
go setupRCsPods(t, gc, clientSet, "collection4-"+strconv.Itoa(i), ns.Name, []string{}, getOrphanOptions(), &wg, rcUIDs) go setupRCsPods(t, gc, clientSet, "collection4-"+strconv.Itoa(i), ns.Name, []string{}, getOrphanOptions(), &wg, rcUIDs)
} }