From a887cd34347f676607225765e2f501988b9039ab Mon Sep 17 00:00:00 2001 From: Tomas Nozicka Date: Wed, 24 May 2017 16:52:36 +0200 Subject: [PATCH] Export BaseControllerRefManager --- pkg/controller/controller_ref_manager.go | 116 +++++++++++------------ 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/pkg/controller/controller_ref_manager.go b/pkg/controller/controller_ref_manager.go index 3ef7ade5c7d..64d6b8c0a62 100644 --- a/pkg/controller/controller_ref_manager.go +++ b/pkg/controller/controller_ref_manager.go @@ -44,31 +44,31 @@ func GetControllerOf(controllee metav1.Object) *metav1.OwnerReference { return nil } -type baseControllerRefManager struct { - controller metav1.Object - selector labels.Selector +type BaseControllerRefManager struct { + Controller metav1.Object + Selector labels.Selector canAdoptErr error canAdoptOnce sync.Once - canAdoptFunc func() error + CanAdoptFunc func() error } -func (m *baseControllerRefManager) canAdopt() error { +func (m *BaseControllerRefManager) CanAdopt() error { m.canAdoptOnce.Do(func() { - if m.canAdoptFunc != nil { - m.canAdoptErr = m.canAdoptFunc() + if m.CanAdoptFunc != nil { + m.canAdoptErr = m.CanAdoptFunc() } }) return m.canAdoptErr } -// claimObject tries to take ownership of an object for this controller. +// ClaimObject tries to take ownership of an object for this controller. // // It will reconcile the following: // * Adopt orphans if the match function returns true. // * Release owned objects if the match function returns false. // -// A non-nil error is returned if some form of reconciliation was attemped and +// A non-nil error is returned if some form of reconciliation was attempted and // failed. Usually, controllers should try again later in case reconciliation // is still needed. // @@ -77,10 +77,10 @@ func (m *baseControllerRefManager) canAdopt() error { // own the object. // // No reconciliation will be attempted if the controller is being deleted. -func (m *baseControllerRefManager) claimObject(obj metav1.Object, match func(metav1.Object) bool, adopt, release func(metav1.Object) error) (bool, error) { +func (m *BaseControllerRefManager) ClaimObject(obj metav1.Object, match func(metav1.Object) bool, adopt, release func(metav1.Object) error) (bool, error) { controllerRef := GetControllerOf(obj) if controllerRef != nil { - if controllerRef.UID != m.controller.GetUID() { + if controllerRef.UID != m.Controller.GetUID() { // Owned by someone else. Ignore. return false, nil } @@ -93,7 +93,7 @@ func (m *baseControllerRefManager) claimObject(obj metav1.Object, match func(met } // Owned by us but selector doesn't match. // Try to release, unless we're being deleted. - if m.controller.GetDeletionTimestamp() != nil { + if m.Controller.GetDeletionTimestamp() != nil { return false, nil } if err := release(obj); err != nil { @@ -110,7 +110,7 @@ func (m *baseControllerRefManager) claimObject(obj metav1.Object, match func(met } // It's an orphan. - if m.controller.GetDeletionTimestamp() != nil || !match(obj) { + if m.Controller.GetDeletionTimestamp() != nil || !match(obj) { // Ignore if we're being deleted or selector doesn't match. return false, nil } @@ -133,7 +133,7 @@ func (m *baseControllerRefManager) claimObject(obj metav1.Object, match func(met } type PodControllerRefManager struct { - baseControllerRefManager + BaseControllerRefManager controllerKind schema.GroupVersionKind podControl PodControlInterface } @@ -141,14 +141,14 @@ type PodControllerRefManager struct { // NewPodControllerRefManager returns a PodControllerRefManager that exposes // methods to manage the controllerRef of pods. // -// The canAdopt() function can be used to perform a potentially expensive check +// The CanAdopt() function can be used to perform a potentially expensive check // (such as a live GET from the API server) prior to the first adoption. // It will only be called (at most once) if an adoption is actually attempted. -// If canAdopt() returns a non-nil error, all adoptions will fail. +// If CanAdopt() returns a non-nil error, all adoptions will fail. // -// NOTE: Once canAdopt() is called, it will not be called again by the same +// NOTE: Once CanAdopt() is called, it will not be called again by the same // PodControllerRefManager instance. Create a new instance if it makes -// sense to check canAdopt() again (e.g. in a different sync pass). +// sense to check CanAdopt() again (e.g. in a different sync pass). func NewPodControllerRefManager( podControl PodControlInterface, controller metav1.Object, @@ -157,10 +157,10 @@ func NewPodControllerRefManager( canAdopt func() error, ) *PodControllerRefManager { return &PodControllerRefManager{ - baseControllerRefManager: baseControllerRefManager{ - controller: controller, - selector: selector, - canAdoptFunc: canAdopt, + BaseControllerRefManager: BaseControllerRefManager{ + Controller: controller, + Selector: selector, + CanAdoptFunc: canAdopt, }, controllerKind: controllerKind, podControl: podControl, @@ -176,7 +176,7 @@ func NewPodControllerRefManager( // Optional: If one or more filters are specified, a Pod will only be claimed if // all filters return true. // -// A non-nil error is returned if some form of reconciliation was attemped and +// A non-nil error is returned if some form of reconciliation was attempted and // failed. Usually, controllers should try again later in case reconciliation // is still needed. // @@ -189,7 +189,7 @@ func (m *PodControllerRefManager) ClaimPods(pods []*v1.Pod, filters ...func(*v1. match := func(obj metav1.Object) bool { pod := obj.(*v1.Pod) // Check selector first so filters only run on potentially matching Pods. - if !m.selector.Matches(labels.Set(pod.Labels)) { + if !m.Selector.Matches(labels.Set(pod.Labels)) { return false } for _, filter := range filters { @@ -207,7 +207,7 @@ func (m *PodControllerRefManager) ClaimPods(pods []*v1.Pod, filters ...func(*v1. } for _, pod := range pods { - ok, err := m.claimObject(pod, match, adopt, release) + ok, err := m.ClaimObject(pod, match, adopt, release) if err != nil { errlist = append(errlist, err) continue @@ -222,7 +222,7 @@ func (m *PodControllerRefManager) ClaimPods(pods []*v1.Pod, filters ...func(*v1. // AdoptPod sends a patch to take control of the pod. It returns the error if // the patching fails. func (m *PodControllerRefManager) AdoptPod(pod *v1.Pod) error { - if err := m.canAdopt(); err != nil { + if err := m.CanAdopt(); err != nil { return fmt.Errorf("can't adopt Pod %v/%v (%v): %v", pod.Namespace, pod.Name, pod.UID, err) } // Note that ValidateOwnerReferences() will reject this patch if another @@ -230,7 +230,7 @@ func (m *PodControllerRefManager) AdoptPod(pod *v1.Pod) error { addControllerPatch := fmt.Sprintf( `{"metadata":{"ownerReferences":[{"apiVersion":"%s","kind":"%s","name":"%s","uid":"%s","controller":true,"blockOwnerDeletion":true}],"uid":"%s"}}`, m.controllerKind.GroupVersion(), m.controllerKind.Kind, - m.controller.GetName(), m.controller.GetUID(), pod.UID) + m.Controller.GetName(), m.Controller.GetUID(), pod.UID) return m.podControl.PatchPod(pod.Namespace, pod.Name, []byte(addControllerPatch)) } @@ -238,8 +238,8 @@ func (m *PodControllerRefManager) AdoptPod(pod *v1.Pod) error { // It returns the error if the patching fails. 404 and 422 errors are ignored. func (m *PodControllerRefManager) ReleasePod(pod *v1.Pod) error { glog.V(2).Infof("patching pod %s_%s to remove its controllerRef to %s/%s:%s", - pod.Namespace, pod.Name, m.controllerKind.GroupVersion(), m.controllerKind.Kind, m.controller.GetName()) - deleteOwnerRefPatch := fmt.Sprintf(`{"metadata":{"ownerReferences":[{"$patch":"delete","uid":"%s"}],"uid":"%s"}}`, m.controller.GetUID(), pod.UID) + pod.Namespace, pod.Name, m.controllerKind.GroupVersion(), m.controllerKind.Kind, m.Controller.GetName()) + deleteOwnerRefPatch := fmt.Sprintf(`{"metadata":{"ownerReferences":[{"$patch":"delete","uid":"%s"}],"uid":"%s"}}`, m.Controller.GetUID(), pod.UID) err := m.podControl.PatchPod(pod.Namespace, pod.Name, []byte(deleteOwnerRefPatch)) if err != nil { if errors.IsNotFound(err) { @@ -267,7 +267,7 @@ func (m *PodControllerRefManager) ReleasePod(pod *v1.Pod) error { // categories and accordingly adopt or release them. See comments on these functions // for more details. type ReplicaSetControllerRefManager struct { - baseControllerRefManager + BaseControllerRefManager controllerKind schema.GroupVersionKind rsControl RSControlInterface } @@ -275,14 +275,14 @@ type ReplicaSetControllerRefManager struct { // NewReplicaSetControllerRefManager returns a ReplicaSetControllerRefManager that exposes // methods to manage the controllerRef of ReplicaSets. // -// The canAdopt() function can be used to perform a potentially expensive check +// The CanAdopt() function can be used to perform a potentially expensive check // (such as a live GET from the API server) prior to the first adoption. // It will only be called (at most once) if an adoption is actually attempted. -// If canAdopt() returns a non-nil error, all adoptions will fail. +// If CanAdopt() returns a non-nil error, all adoptions will fail. // -// NOTE: Once canAdopt() is called, it will not be called again by the same +// NOTE: Once CanAdopt() is called, it will not be called again by the same // ReplicaSetControllerRefManager instance. Create a new instance if it -// makes sense to check canAdopt() again (e.g. in a different sync pass). +// makes sense to check CanAdopt() again (e.g. in a different sync pass). func NewReplicaSetControllerRefManager( rsControl RSControlInterface, controller metav1.Object, @@ -291,10 +291,10 @@ func NewReplicaSetControllerRefManager( canAdopt func() error, ) *ReplicaSetControllerRefManager { return &ReplicaSetControllerRefManager{ - baseControllerRefManager: baseControllerRefManager{ - controller: controller, - selector: selector, - canAdoptFunc: canAdopt, + BaseControllerRefManager: BaseControllerRefManager{ + Controller: controller, + Selector: selector, + CanAdoptFunc: canAdopt, }, controllerKind: controllerKind, rsControl: rsControl, @@ -307,7 +307,7 @@ func NewReplicaSetControllerRefManager( // * Adopt orphans if the selector matches. // * Release owned objects if the selector no longer matches. // -// A non-nil error is returned if some form of reconciliation was attemped and +// A non-nil error is returned if some form of reconciliation was attempted and // failed. Usually, controllers should try again later in case reconciliation // is still needed. // @@ -319,7 +319,7 @@ func (m *ReplicaSetControllerRefManager) ClaimReplicaSets(sets []*extensions.Rep var errlist []error match := func(obj metav1.Object) bool { - return m.selector.Matches(labels.Set(obj.GetLabels())) + return m.Selector.Matches(labels.Set(obj.GetLabels())) } adopt := func(obj metav1.Object) error { return m.AdoptReplicaSet(obj.(*extensions.ReplicaSet)) @@ -329,7 +329,7 @@ func (m *ReplicaSetControllerRefManager) ClaimReplicaSets(sets []*extensions.Rep } for _, rs := range sets { - ok, err := m.claimObject(rs, match, adopt, release) + ok, err := m.ClaimObject(rs, match, adopt, release) if err != nil { errlist = append(errlist, err) continue @@ -344,7 +344,7 @@ func (m *ReplicaSetControllerRefManager) ClaimReplicaSets(sets []*extensions.Rep // AdoptReplicaSet sends a patch to take control of the ReplicaSet. It returns // the error if the patching fails. func (m *ReplicaSetControllerRefManager) AdoptReplicaSet(rs *extensions.ReplicaSet) error { - if err := m.canAdopt(); err != nil { + if err := m.CanAdopt(); err != nil { return fmt.Errorf("can't adopt ReplicaSet %v/%v (%v): %v", rs.Namespace, rs.Name, rs.UID, err) } // Note that ValidateOwnerReferences() will reject this patch if another @@ -352,7 +352,7 @@ func (m *ReplicaSetControllerRefManager) AdoptReplicaSet(rs *extensions.ReplicaS addControllerPatch := fmt.Sprintf( `{"metadata":{"ownerReferences":[{"apiVersion":"%s","kind":"%s","name":"%s","uid":"%s","controller":true,"blockOwnerDeletion":true}],"uid":"%s"}}`, m.controllerKind.GroupVersion(), m.controllerKind.Kind, - m.controller.GetName(), m.controller.GetUID(), rs.UID) + m.Controller.GetName(), m.Controller.GetUID(), rs.UID) return m.rsControl.PatchReplicaSet(rs.Namespace, rs.Name, []byte(addControllerPatch)) } @@ -360,8 +360,8 @@ func (m *ReplicaSetControllerRefManager) AdoptReplicaSet(rs *extensions.ReplicaS // It returns the error if the patching fails. 404 and 422 errors are ignored. func (m *ReplicaSetControllerRefManager) ReleaseReplicaSet(replicaSet *extensions.ReplicaSet) error { glog.V(2).Infof("patching ReplicaSet %s_%s to remove its controllerRef to %s/%s:%s", - replicaSet.Namespace, replicaSet.Name, m.controllerKind.GroupVersion(), m.controllerKind.Kind, m.controller.GetName()) - deleteOwnerRefPatch := fmt.Sprintf(`{"metadata":{"ownerReferences":[{"$patch":"delete","uid":"%s"}],"uid":"%s"}}`, m.controller.GetUID(), replicaSet.UID) + replicaSet.Namespace, replicaSet.Name, m.controllerKind.GroupVersion(), m.controllerKind.Kind, m.Controller.GetName()) + deleteOwnerRefPatch := fmt.Sprintf(`{"metadata":{"ownerReferences":[{"$patch":"delete","uid":"%s"}],"uid":"%s"}}`, m.Controller.GetUID(), replicaSet.UID) err := m.rsControl.PatchReplicaSet(replicaSet.Namespace, replicaSet.Name, []byte(deleteOwnerRefPatch)) if err != nil { if errors.IsNotFound(err) { @@ -379,9 +379,9 @@ func (m *ReplicaSetControllerRefManager) ReleaseReplicaSet(replicaSet *extension return err } -// RecheckDeletionTimestamp returns a canAdopt() function to recheck deletion. +// RecheckDeletionTimestamp returns a CanAdopt() function to recheck deletion. // -// The canAdopt() function calls getObject() to fetch the latest value, +// The CanAdopt() function calls getObject() to fetch the latest value, // and denies adoption attempts if that object has a non-nil DeletionTimestamp. func RecheckDeletionTimestamp(getObject func() (metav1.Object, error)) func() error { return func() error { @@ -402,7 +402,7 @@ func RecheckDeletionTimestamp(getObject func() (metav1.Object, error)) func() er // categories and accordingly adopt or release them. See comments on these functions // for more details. type ControllerRevisionControllerRefManager struct { - baseControllerRefManager + BaseControllerRefManager controllerKind schema.GroupVersionKind crControl ControllerRevisionControlInterface } @@ -426,10 +426,10 @@ func NewControllerRevisionControllerRefManager( canAdopt func() error, ) *ControllerRevisionControllerRefManager { return &ControllerRevisionControllerRefManager{ - baseControllerRefManager: baseControllerRefManager{ - controller: controller, - selector: selector, - canAdoptFunc: canAdopt, + BaseControllerRefManager: BaseControllerRefManager{ + Controller: controller, + Selector: selector, + CanAdoptFunc: canAdopt, }, controllerKind: controllerKind, crControl: crControl, @@ -454,7 +454,7 @@ func (m *ControllerRevisionControllerRefManager) ClaimControllerRevisions(histor var errlist []error match := func(obj metav1.Object) bool { - return m.selector.Matches(labels.Set(obj.GetLabels())) + return m.Selector.Matches(labels.Set(obj.GetLabels())) } adopt := func(obj metav1.Object) error { return m.AdoptControllerRevision(obj.(*appsv1beta1.ControllerRevision)) @@ -464,7 +464,7 @@ func (m *ControllerRevisionControllerRefManager) ClaimControllerRevisions(histor } for _, h := range histories { - ok, err := m.claimObject(h, match, adopt, release) + ok, err := m.ClaimObject(h, match, adopt, release) if err != nil { errlist = append(errlist, err) continue @@ -479,7 +479,7 @@ func (m *ControllerRevisionControllerRefManager) ClaimControllerRevisions(histor // AdoptControllerRevision sends a patch to take control of the ControllerRevision. It returns the error if // the patching fails. func (m *ControllerRevisionControllerRefManager) AdoptControllerRevision(history *appsv1beta1.ControllerRevision) error { - if err := m.canAdopt(); err != nil { + if err := m.CanAdopt(); err != nil { return fmt.Errorf("can't adopt ControllerRevision %v/%v (%v): %v", history.Namespace, history.Name, history.UID, err) } // Note that ValidateOwnerReferences() will reject this patch if another @@ -487,7 +487,7 @@ func (m *ControllerRevisionControllerRefManager) AdoptControllerRevision(history addControllerPatch := fmt.Sprintf( `{"metadata":{"ownerReferences":[{"apiVersion":"%s","kind":"%s","name":"%s","uid":"%s","controller":true,"blockOwnerDeletion":true}],"uid":"%s"}}`, m.controllerKind.GroupVersion(), m.controllerKind.Kind, - m.controller.GetName(), m.controller.GetUID(), history.UID) + m.Controller.GetName(), m.Controller.GetUID(), history.UID) return m.crControl.PatchControllerRevision(history.Namespace, history.Name, []byte(addControllerPatch)) } @@ -495,8 +495,8 @@ func (m *ControllerRevisionControllerRefManager) AdoptControllerRevision(history // It returns the error if the patching fails. 404 and 422 errors are ignored. func (m *ControllerRevisionControllerRefManager) ReleaseControllerRevision(history *appsv1beta1.ControllerRevision) error { glog.V(2).Infof("patching ControllerRevision %s_%s to remove its controllerRef to %s/%s:%s", - history.Namespace, history.Name, m.controllerKind.GroupVersion(), m.controllerKind.Kind, m.controller.GetName()) - deleteOwnerRefPatch := fmt.Sprintf(`{"metadata":{"ownerReferences":[{"$patch":"delete","uid":"%s"}],"uid":"%s"}}`, m.controller.GetUID(), history.UID) + history.Namespace, history.Name, m.controllerKind.GroupVersion(), m.controllerKind.Kind, m.Controller.GetName()) + deleteOwnerRefPatch := fmt.Sprintf(`{"metadata":{"ownerReferences":[{"$patch":"delete","uid":"%s"}],"uid":"%s"}}`, m.Controller.GetUID(), history.UID) err := m.crControl.PatchControllerRevision(history.Namespace, history.Name, []byte(deleteOwnerRefPatch)) if err != nil { if errors.IsNotFound(err) {