@@ -142,6 +142,7 @@ func RemoveOwnerReference(owner, object metav1.Object, scheme *runtime.Scheme) e
142
142
APIVersion : gvk .GroupVersion ().String (),
143
143
Name : owner .GetName (),
144
144
Kind : gvk .Kind ,
145
+ Controller : ptr .To (true ),
145
146
})
146
147
if index == - 1 {
147
148
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
171
172
if ok := HasControllerReference (object ); ! ok {
172
173
return fmt .Errorf ("%T does not have a owner reference with controller equals true" , object )
173
174
}
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
175
195
}
176
196
177
197
func upsertOwnerRef (ref metav1.OwnerReference , object metav1.Object ) {
0 commit comments