@@ -102,6 +102,80 @@ var _ = Describe("Controllerutil", func() {
102
102
UID : "foo-uid-2" ,
103
103
}))
104
104
})
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
+ })
105
179
})
106
180
107
181
Describe ("SetControllerReference" , func () {
0 commit comments