@@ -102,6 +102,80 @@ var _ = Describe("Controllerutil", func() {
102102 UID : "foo-uid-2" ,
103103 }))
104104 })
105+ It ("should remove the owner reference" , func () {
106+ rs := & appsv1.ReplicaSet {
107+ ObjectMeta : metav1.ObjectMeta {
108+ OwnerReferences : []metav1.OwnerReference {
109+ {
110+ Name : "foo" ,
111+ Kind : "Deployment" ,
112+ APIVersion : "extensions/v1alpha1" ,
113+ UID : "foo-uid-1" ,
114+ },
115+ },
116+ },
117+ }
118+ dep := & extensionsv1beta1.Deployment {
119+ ObjectMeta : metav1.ObjectMeta {Name : "foo" , UID : "foo-uid-2" },
120+ }
121+
122+ Expect (controllerutil .SetOwnerReference (dep , rs , scheme .Scheme )).ToNot (HaveOccurred ())
123+ Expect (rs .OwnerReferences ).To (ConsistOf (metav1.OwnerReference {
124+ Name : "foo" ,
125+ Kind : "Deployment" ,
126+ APIVersion : "extensions/v1beta1" ,
127+ UID : "foo-uid-2" ,
128+ }))
129+ Expect (controllerutil .RemoveOwnerReference (dep , rs , scheme .Scheme )).ToNot (HaveOccurred ())
130+ Expect (rs .GetOwnerReferences ()).To (BeEmpty ())
131+ })
132+ It ("should error when trying to remove the reference that doesn't exist" , func () {
133+ rs := & appsv1.ReplicaSet {
134+ ObjectMeta : metav1.ObjectMeta {},
135+ }
136+ dep := & extensionsv1beta1.Deployment {
137+ ObjectMeta : metav1.ObjectMeta {Name : "foo" , UID : "foo-uid-2" },
138+ }
139+ Expect (controllerutil .RemoveOwnerReference (dep , rs , scheme .Scheme )).To (HaveOccurred ())
140+ Expect (rs .GetOwnerReferences ()).To (BeEmpty ())
141+ })
142+ It ("should error when trying to remove the reference that doesn't abide by the scheme" , func () {
143+ rs := & appsv1.ReplicaSet {
144+ ObjectMeta : metav1.ObjectMeta {},
145+ }
146+ dep := & extensionsv1beta1.Deployment {
147+ ObjectMeta : metav1.ObjectMeta {Name : "foo" , UID : "foo-uid-2" },
148+ }
149+ Expect (controllerutil .SetOwnerReference (dep , rs , scheme .Scheme )).ToNot (HaveOccurred ())
150+ Expect (controllerutil .RemoveOwnerReference (dep , rs , runtime .NewScheme ())).To (HaveOccurred ())
151+ Expect (rs .GetOwnerReferences ()).To (HaveLen (1 ))
152+ })
153+ It ("should error when trying to remove the owner when setting the owner as a non runtime.Object" , func () {
154+ var obj metav1.Object
155+ rs := & appsv1.ReplicaSet {
156+ ObjectMeta : metav1.ObjectMeta {},
157+ }
158+ dep := & extensionsv1beta1.Deployment {
159+ ObjectMeta : metav1.ObjectMeta {Name : "foo" , UID : "foo-uid-2" },
160+ }
161+ Expect (controllerutil .SetOwnerReference (dep , rs , scheme .Scheme )).ToNot (HaveOccurred ())
162+ Expect (controllerutil .RemoveOwnerReference (obj , rs , scheme .Scheme )).To (HaveOccurred ())
163+ Expect (rs .GetOwnerReferences ()).To (HaveLen (1 ))
164+ })
165+ It ("should error when trying to remove an owner that doesn't exist" , func () {
166+ rs := & appsv1.ReplicaSet {
167+ ObjectMeta : metav1.ObjectMeta {},
168+ }
169+ dep := & extensionsv1beta1.Deployment {
170+ ObjectMeta : metav1.ObjectMeta {Name : "foo" , UID : "foo-uid-2" },
171+ }
172+ dep2 := & extensionsv1beta1.Deployment {
173+ ObjectMeta : metav1.ObjectMeta {Name : "bar" , UID : "bar-uid-3" },
174+ }
175+ Expect (controllerutil .SetOwnerReference (dep , rs , scheme .Scheme )).ToNot (HaveOccurred ())
176+ Expect (controllerutil .RemoveOwnerReference (dep2 , rs , scheme .Scheme )).To (HaveOccurred ())
177+ Expect (rs .GetOwnerReferences ()).To (HaveLen (1 ))
178+ })
105179 })
106180
107181 Describe ("SetControllerReference" , func () {
0 commit comments