@@ -142,6 +142,7 @@ func RemoveOwnerReference(owner, object metav1.Object, scheme *runtime.Scheme) e
142142 APIVersion : gvk .GroupVersion ().String (),
143143 Name : owner .GetName (),
144144 Kind : gvk .Kind ,
145+ Controller : ptr .To (true ),
145146 })
146147 if index == - 1 {
147148 return fmt .Errorf ("%T does not have an owner reference for %T" , object , owner )
@@ -171,7 +172,26 @@ func RemoveControllerReference(owner, object metav1.Object, scheme *runtime.Sche
171172 if ok := HasControllerReference (object ); ! ok {
172173 return fmt .Errorf ("%T does not have a owner reference with controller equals true" , object )
173174 }
174- return RemoveOwnerReference (owner , object , scheme )
175+ ro , ok := owner .(runtime.Object )
176+ if ! ok {
177+ return fmt .Errorf ("%T is not a runtime.Object, cannot call RemoveControllerReference" , owner )
178+ }
179+ gvk , err := apiutil .GVKForObject (ro , scheme )
180+ if err != nil {
181+ return err
182+ }
183+ ownerRefs := object .GetOwnerReferences ()
184+ index := indexOwnerRef (ownerRefs , metav1.OwnerReference {
185+ APIVersion : gvk .GroupVersion ().String (),
186+ Name : owner .GetName (),
187+ Kind : gvk .Kind ,
188+ })
189+ if index == - 1 {
190+ return fmt .Errorf ("%T does not have an controller reference for %T" , object , owner )
191+ }
192+ ownerRefs = append (ownerRefs [:index ], ownerRefs [index + 1 :]... )
193+ object .SetOwnerReferences (ownerRefs )
194+ return nil
175195}
176196
177197func upsertOwnerRef (ref metav1.OwnerReference , object metav1.Object ) {
0 commit comments