mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-13 13:55:41 +00:00
Adding both finalizers in federation controller in a single update
This commit is contained in:
parent
12a80380bc
commit
78ab9ae218
@ -239,20 +239,20 @@ func (daemonsetcontroller *DaemonSetController) removeFinalizerFunc(obj pkgrunti
|
|||||||
return daemonset, nil
|
return daemonset, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adds the given finalizer to the given objects ObjectMeta.
|
// Adds the given finalizers to the given objects ObjectMeta.
|
||||||
// Assumes that the given object is a daemonset.
|
// Assumes that the given object is a daemonset.
|
||||||
func (daemonsetcontroller *DaemonSetController) addFinalizerFunc(obj pkgruntime.Object, finalizer string) (pkgruntime.Object, error) {
|
func (daemonsetcontroller *DaemonSetController) addFinalizerFunc(obj pkgruntime.Object, finalizers []string) (pkgruntime.Object, error) {
|
||||||
daemonset := obj.(*extensionsv1.DaemonSet)
|
daemonset := obj.(*extensionsv1.DaemonSet)
|
||||||
daemonset.ObjectMeta.Finalizers = append(daemonset.ObjectMeta.Finalizers, finalizer)
|
daemonset.ObjectMeta.Finalizers = append(daemonset.ObjectMeta.Finalizers, finalizers...)
|
||||||
daemonset, err := daemonsetcontroller.federatedApiClient.Extensions().DaemonSets(daemonset.Namespace).Update(daemonset)
|
daemonset, err := daemonsetcontroller.federatedApiClient.Extensions().DaemonSets(daemonset.Namespace).Update(daemonset)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to add finalizer %s to daemonset %s: %v", finalizer, daemonset.Name, err)
|
return nil, fmt.Errorf("failed to add finalizers %v to daemonset %s: %v", finalizers, daemonset.Name, err)
|
||||||
}
|
}
|
||||||
return daemonset, nil
|
return daemonset, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (daemonsetcontroller *DaemonSetController) Run(stopChan <-chan struct{}) {
|
func (daemonsetcontroller *DaemonSetController) Run(stopChan <-chan struct{}) {
|
||||||
glog.V(1).Infof("Starting daemonset controllr")
|
glog.V(1).Infof("Starting daemonset controller")
|
||||||
go daemonsetcontroller.daemonsetInformerController.Run(stopChan)
|
go daemonsetcontroller.daemonsetInformerController.Run(stopChan)
|
||||||
|
|
||||||
glog.V(1).Infof("Starting daemonset federated informer")
|
glog.V(1).Infof("Starting daemonset federated informer")
|
||||||
|
@ -256,14 +256,14 @@ func (fdc *DeploymentController) removeFinalizerFunc(obj runtime.Object, finaliz
|
|||||||
return deployment, nil
|
return deployment, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adds the given finalizer to the given objects ObjectMeta.
|
// Adds the given finalizers to the given objects ObjectMeta.
|
||||||
// Assumes that the given object is a deployment.
|
// Assumes that the given object is a deployment.
|
||||||
func (fdc *DeploymentController) addFinalizerFunc(obj runtime.Object, finalizer string) (runtime.Object, error) {
|
func (fdc *DeploymentController) addFinalizerFunc(obj runtime.Object, finalizers []string) (runtime.Object, error) {
|
||||||
deployment := obj.(*extensionsv1.Deployment)
|
deployment := obj.(*extensionsv1.Deployment)
|
||||||
deployment.ObjectMeta.Finalizers = append(deployment.ObjectMeta.Finalizers, finalizer)
|
deployment.ObjectMeta.Finalizers = append(deployment.ObjectMeta.Finalizers, finalizers...)
|
||||||
deployment, err := fdc.fedClient.Extensions().Deployments(deployment.Namespace).Update(deployment)
|
deployment, err := fdc.fedClient.Extensions().Deployments(deployment.Namespace).Update(deployment)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to add finalizer %s to deployment %s: %v", finalizer, deployment.Name, err)
|
return nil, fmt.Errorf("failed to add finalizers %v to deployment %s: %v", finalizers, deployment.Name, err)
|
||||||
}
|
}
|
||||||
return deployment, nil
|
return deployment, nil
|
||||||
}
|
}
|
||||||
|
@ -339,14 +339,14 @@ func (ic *IngressController) removeFinalizerFunc(obj pkgruntime.Object, finalize
|
|||||||
return ingress, nil
|
return ingress, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adds the given finalizer to the given objects ObjectMeta.
|
// Adds the given finalizers to the given objects ObjectMeta.
|
||||||
// Assumes that the given object is a ingress.
|
// Assumes that the given object is a ingress.
|
||||||
func (ic *IngressController) addFinalizerFunc(obj pkgruntime.Object, finalizer string) (pkgruntime.Object, error) {
|
func (ic *IngressController) addFinalizerFunc(obj pkgruntime.Object, finalizers []string) (pkgruntime.Object, error) {
|
||||||
ingress := obj.(*extensionsv1beta1.Ingress)
|
ingress := obj.(*extensionsv1beta1.Ingress)
|
||||||
ingress.ObjectMeta.Finalizers = append(ingress.ObjectMeta.Finalizers, finalizer)
|
ingress.ObjectMeta.Finalizers = append(ingress.ObjectMeta.Finalizers, finalizers...)
|
||||||
ingress, err := ic.federatedApiClient.Extensions().Ingresses(ingress.Namespace).Update(ingress)
|
ingress, err := ic.federatedApiClient.Extensions().Ingresses(ingress.Namespace).Update(ingress)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to add finalizer %s to ingress %s: %v", finalizer, ingress.Name, err)
|
return nil, fmt.Errorf("failed to add finalizers %v to ingress %s: %v", finalizers, ingress.Name, err)
|
||||||
}
|
}
|
||||||
return ingress, nil
|
return ingress, nil
|
||||||
}
|
}
|
||||||
|
@ -219,14 +219,14 @@ func (nc *NamespaceController) removeFinalizerFunc(obj runtime.Object, finalizer
|
|||||||
return namespace, nil
|
return namespace, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adds the given finalizer to the given objects ObjectMeta.
|
// Adds the given finalizers to the given objects ObjectMeta.
|
||||||
// Assumes that the given object is a namespace.
|
// Assumes that the given object is a namespace.
|
||||||
func (nc *NamespaceController) addFinalizerFunc(obj runtime.Object, finalizer string) (runtime.Object, error) {
|
func (nc *NamespaceController) addFinalizerFunc(obj runtime.Object, finalizers []string) (runtime.Object, error) {
|
||||||
namespace := obj.(*apiv1.Namespace)
|
namespace := obj.(*apiv1.Namespace)
|
||||||
namespace.ObjectMeta.Finalizers = append(namespace.ObjectMeta.Finalizers, finalizer)
|
namespace.ObjectMeta.Finalizers = append(namespace.ObjectMeta.Finalizers, finalizers...)
|
||||||
namespace, err := nc.federatedApiClient.Core().Namespaces().Finalize(namespace)
|
namespace, err := nc.federatedApiClient.Core().Namespaces().Finalize(namespace)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to add finalizer %s to namespace %s: %v", finalizer, namespace.Name, err)
|
return nil, fmt.Errorf("failed to add finalizers %v to namespace %s: %v", finalizers, namespace.Name, err)
|
||||||
}
|
}
|
||||||
return namespace, nil
|
return namespace, nil
|
||||||
}
|
}
|
||||||
|
@ -260,14 +260,14 @@ func (frsc *ReplicaSetController) removeFinalizerFunc(obj runtime.Object, finali
|
|||||||
return replicaset, nil
|
return replicaset, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adds the given finalizer to the given objects ObjectMeta.
|
// Adds the given finalizers to the given objects ObjectMeta.
|
||||||
// Assumes that the given object is a replicaset.
|
// Assumes that the given object is a replicaset.
|
||||||
func (frsc *ReplicaSetController) addFinalizerFunc(obj runtime.Object, finalizer string) (runtime.Object, error) {
|
func (frsc *ReplicaSetController) addFinalizerFunc(obj runtime.Object, finalizers []string) (runtime.Object, error) {
|
||||||
replicaset := obj.(*extensionsv1.ReplicaSet)
|
replicaset := obj.(*extensionsv1.ReplicaSet)
|
||||||
replicaset.ObjectMeta.Finalizers = append(replicaset.ObjectMeta.Finalizers, finalizer)
|
replicaset.ObjectMeta.Finalizers = append(replicaset.ObjectMeta.Finalizers, finalizers...)
|
||||||
replicaset, err := frsc.fedClient.Extensions().ReplicaSets(replicaset.Namespace).Update(replicaset)
|
replicaset, err := frsc.fedClient.Extensions().ReplicaSets(replicaset.Namespace).Update(replicaset)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to add finalizer %s to replicaset %s: %v", finalizer, replicaset.Name, err)
|
return nil, fmt.Errorf("failed to add finalizers %v to replicaset %s: %v", finalizers, replicaset.Name, err)
|
||||||
}
|
}
|
||||||
return replicaset, nil
|
return replicaset, nil
|
||||||
}
|
}
|
||||||
|
@ -220,14 +220,14 @@ func (secretcontroller *SecretController) removeFinalizerFunc(obj pkgruntime.Obj
|
|||||||
return secret, nil
|
return secret, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adds the given finalizer to the given objects ObjectMeta.
|
// Adds the given finalizers to the given objects ObjectMeta.
|
||||||
// Assumes that the given object is a secret.
|
// Assumes that the given object is a secret.
|
||||||
func (secretcontroller *SecretController) addFinalizerFunc(obj pkgruntime.Object, finalizer string) (pkgruntime.Object, error) {
|
func (secretcontroller *SecretController) addFinalizerFunc(obj pkgruntime.Object, finalizers []string) (pkgruntime.Object, error) {
|
||||||
secret := obj.(*apiv1.Secret)
|
secret := obj.(*apiv1.Secret)
|
||||||
secret.ObjectMeta.Finalizers = append(secret.ObjectMeta.Finalizers, finalizer)
|
secret.ObjectMeta.Finalizers = append(secret.ObjectMeta.Finalizers, finalizers...)
|
||||||
secret, err := secretcontroller.federatedApiClient.Core().Secrets(secret.Namespace).Update(secret)
|
secret, err := secretcontroller.federatedApiClient.Core().Secrets(secret.Namespace).Update(secret)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to add finalizer %s to secret %s: %v", finalizer, secret.Name, err)
|
return nil, fmt.Errorf("failed to add finalizers %v to secret %s: %v", finalizers, secret.Name, err)
|
||||||
}
|
}
|
||||||
return secret, nil
|
return secret, nil
|
||||||
}
|
}
|
||||||
|
@ -345,14 +345,14 @@ func (s *ServiceController) removeFinalizerFunc(obj pkgruntime.Object, finalizer
|
|||||||
return service, nil
|
return service, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adds the given finalizer to the given objects ObjectMeta.
|
// Adds the given finalizers to the given objects ObjectMeta.
|
||||||
// Assumes that the given object is a service.
|
// Assumes that the given object is a service.
|
||||||
func (s *ServiceController) addFinalizerFunc(obj pkgruntime.Object, finalizer string) (pkgruntime.Object, error) {
|
func (s *ServiceController) addFinalizerFunc(obj pkgruntime.Object, finalizers []string) (pkgruntime.Object, error) {
|
||||||
service := obj.(*v1.Service)
|
service := obj.(*v1.Service)
|
||||||
service.ObjectMeta.Finalizers = append(service.ObjectMeta.Finalizers, finalizer)
|
service.ObjectMeta.Finalizers = append(service.ObjectMeta.Finalizers, finalizers...)
|
||||||
service, err := s.federationClient.Core().Services(service.Namespace).Update(service)
|
service, err := s.federationClient.Core().Services(service.Namespace).Update(service)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to add finalizer %s to service %s: %v", finalizer, service.Name, err)
|
return nil, fmt.Errorf("failed to add finalizers %v to service %s: %v", finalizers, service.Name, err)
|
||||||
}
|
}
|
||||||
return service, nil
|
return service, nil
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ const (
|
|||||||
|
|
||||||
type HasFinalizerFunc func(runtime.Object, string) bool
|
type HasFinalizerFunc func(runtime.Object, string) bool
|
||||||
type RemoveFinalizerFunc func(runtime.Object, string) (runtime.Object, error)
|
type RemoveFinalizerFunc func(runtime.Object, string) (runtime.Object, error)
|
||||||
type AddFinalizerFunc func(runtime.Object, string) (runtime.Object, error)
|
type AddFinalizerFunc func(runtime.Object, []string) (runtime.Object, error)
|
||||||
type ObjNameFunc func(runtime.Object) string
|
type ObjNameFunc func(runtime.Object) string
|
||||||
|
|
||||||
type DeletionHelper struct {
|
type DeletionHelper struct {
|
||||||
@ -89,19 +89,16 @@ func NewDeletionHelper(
|
|||||||
// This method should be called before creating objects in underlying clusters.
|
// This method should be called before creating objects in underlying clusters.
|
||||||
func (dh *DeletionHelper) EnsureFinalizers(obj runtime.Object) (
|
func (dh *DeletionHelper) EnsureFinalizers(obj runtime.Object) (
|
||||||
runtime.Object, error) {
|
runtime.Object, error) {
|
||||||
|
finalizers := []string{}
|
||||||
if !dh.hasFinalizerFunc(obj, FinalizerDeleteFromUnderlyingClusters) {
|
if !dh.hasFinalizerFunc(obj, FinalizerDeleteFromUnderlyingClusters) {
|
||||||
glog.V(2).Infof("Adding finalizer %s to %s", FinalizerDeleteFromUnderlyingClusters, dh.objNameFunc(obj))
|
finalizers = append(finalizers, FinalizerDeleteFromUnderlyingClusters)
|
||||||
obj, err := dh.addFinalizerFunc(obj, FinalizerDeleteFromUnderlyingClusters)
|
|
||||||
if err != nil {
|
|
||||||
return obj, err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if !dh.hasFinalizerFunc(obj, metav1.FinalizerOrphan) {
|
if !dh.hasFinalizerFunc(obj, metav1.FinalizerOrphan) {
|
||||||
glog.V(2).Infof("Adding finalizer %s to %s", metav1.FinalizerOrphan, dh.objNameFunc(obj))
|
finalizers = append(finalizers, metav1.FinalizerOrphan)
|
||||||
obj, err := dh.addFinalizerFunc(obj, metav1.FinalizerOrphan)
|
|
||||||
if err != nil {
|
|
||||||
return obj, err
|
|
||||||
}
|
}
|
||||||
|
if len(finalizers) != 0 {
|
||||||
|
glog.V(2).Infof("Adding finalizers %v to %s", finalizers, dh.objNameFunc(obj))
|
||||||
|
return dh.addFinalizerFunc(obj, finalizers)
|
||||||
}
|
}
|
||||||
return obj, nil
|
return obj, nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user