@@ -14,12 +14,12 @@ import (
14
14
)
15
15
16
16
type mockFinalizer struct {
17
- needsUpdate bool
18
- err error
17
+ result Result
18
+ err error
19
19
}
20
20
21
- func (f mockFinalizer ) Finalize (context.Context , client.Object ) (needsUpdate bool , err error ) {
22
- return f .needsUpdate , f .err
21
+ func (f mockFinalizer ) Finalize (context.Context , client.Object ) (Result , error ) {
22
+ return f .result , f .err
23
23
}
24
24
func TestFinalizer (t * testing.T ) {
25
25
RegisterFailHandler (Fail )
@@ -56,24 +56,25 @@ var _ = Describe("TestFinalizer", func() {
56
56
57
57
})
58
58
})
59
+
59
60
Describe ("Finalize" , func () {
60
- It ("successfully finalizes and returns true for needsUpdate when deletion timestamp is nil and finalizer does not exist" , func () {
61
+ It ("successfully finalizes and returns true for Updated when deletion timestamp is nil and finalizer does not exist" , func () {
61
62
err = finalizers .Register ("finalizers.sigs.k8s.io/testfinalizer" , f )
62
63
Expect (err ).To (BeNil ())
63
64
64
65
pod .DeletionTimestamp = nil
65
66
pod .Finalizers = []string {}
66
67
67
- needsUpdate , err := finalizers .Finalize (context .TODO (), pod )
68
+ result , err := finalizers .Finalize (context .TODO (), pod )
68
69
Expect (err ).To (BeNil ())
69
- Expect (needsUpdate ).To (BeTrue ())
70
+ Expect (result . Updated ).To (BeTrue ())
70
71
// when deletion timestamp is nil and finalizer is not present, the registered finalizer would be added to the obj
71
72
Expect (len (pod .Finalizers )).To (Equal (1 ))
72
73
Expect (pod .Finalizers [0 ]).To (Equal ("finalizers.sigs.k8s.io/testfinalizer" ))
73
74
74
75
})
75
76
76
- It ("successfully finalizes and returns true for needsUpdate when deletion timestamp is not nil and the finalizer exists" , func () {
77
+ It ("successfully finalizes and returns true for Updated when deletion timestamp is not nil and the finalizer exists" , func () {
77
78
now := metav1 .Now ()
78
79
pod .DeletionTimestamp = & now
79
80
@@ -82,37 +83,37 @@ var _ = Describe("TestFinalizer", func() {
82
83
83
84
pod .Finalizers = []string {"finalizers.sigs.k8s.io/testfinalizer" }
84
85
85
- needsUpdate , err := finalizers .Finalize (context .TODO (), pod )
86
+ result , err := finalizers .Finalize (context .TODO (), pod )
86
87
Expect (err ).To (BeNil ())
87
- Expect (needsUpdate ).To (BeTrue ())
88
+ Expect (result . Updated ).To (BeTrue ())
88
89
// finalizer will be removed from the obj upon successful finalization
89
90
Expect (len (pod .Finalizers )).To (Equal (0 ))
90
91
})
91
92
92
- It ("should return no error and return false for needsUpdate when deletion timestamp is nil and finalizer doesn't exist" , func () {
93
+ It ("should return no error and return false for Updated when deletion timestamp is nil and finalizer doesn't exist" , func () {
93
94
pod .DeletionTimestamp = nil
94
95
pod .Finalizers = []string {}
95
96
96
- needsUpdate , err := finalizers .Finalize (context .TODO (), pod )
97
+ result , err := finalizers .Finalize (context .TODO (), pod )
97
98
Expect (err ).To (BeNil ())
98
- Expect (needsUpdate ).To (BeFalse ())
99
+ Expect (result . Updated ).To (BeFalse ())
99
100
Expect (len (pod .Finalizers )).To (Equal (0 ))
100
101
101
102
})
102
103
103
- It ("should return no error and return false for needsUpdate when deletion timestamp is not nil and the finalizer doesn't exist" , func () {
104
+ It ("should return no error and return false for Updated when deletion timestamp is not nil and the finalizer doesn't exist" , func () {
104
105
now := metav1 .Now ()
105
106
pod .DeletionTimestamp = & now
106
107
pod .Finalizers = []string {}
107
108
108
- needsUpdate , err := finalizers .Finalize (context .TODO (), pod )
109
+ result , err := finalizers .Finalize (context .TODO (), pod )
109
110
Expect (err ).To (BeNil ())
110
- Expect (needsUpdate ).To (BeFalse ())
111
+ Expect (result . Updated ).To (BeFalse ())
111
112
Expect (len (pod .Finalizers )).To (Equal (0 ))
112
113
113
114
})
114
115
115
- It ("successfully finalizes multiple finalizers and returns true for needsUpdate when deletion timestamp is not nil and the finalizer exists" , func () {
116
+ It ("successfully finalizes multiple finalizers and returns true for Updated when deletion timestamp is not nil and the finalizer exists" , func () {
116
117
now := metav1 .Now ()
117
118
pod .DeletionTimestamp = & now
118
119
@@ -124,32 +125,35 @@ var _ = Describe("TestFinalizer", func() {
124
125
125
126
pod .Finalizers = []string {"finalizers.sigs.k8s.io/testfinalizer" , "finalizers.sigs.k8s.io/newtestfinalizer" }
126
127
127
- needsUpdate , err := finalizers .Finalize (context .TODO (), pod )
128
+ result , err := finalizers .Finalize (context .TODO (), pod )
128
129
Expect (err ).To (BeNil ())
129
- Expect (needsUpdate ).To (BeTrue ())
130
+ Expect (result .Updated ).To (BeTrue ())
131
+ Expect (result .StatusUpdated ).To (BeFalse ())
130
132
Expect (len (pod .Finalizers )).To (Equal (0 ))
131
133
})
132
134
133
- It ("should return needsUpdate as false and a non-nil error" , func () {
135
+ It ("should return result as false and a non-nil error" , func () {
134
136
now := metav1 .Now ()
135
137
pod .DeletionTimestamp = & now
136
138
pod .Finalizers = []string {"finalizers.sigs.k8s.io/testfinalizer" }
137
139
138
- f .needsUpdate = false
140
+ f .result .Updated = false
141
+ f .result .StatusUpdated = false
139
142
f .err = fmt .Errorf ("finalizer failed for %q" , pod .Finalizers [0 ])
140
143
141
144
err = finalizers .Register ("finalizers.sigs.k8s.io/testfinalizer" , f )
142
145
Expect (err ).To (BeNil ())
143
146
144
- needsUpdate , err := finalizers .Finalize (context .TODO (), pod )
147
+ result , err := finalizers .Finalize (context .TODO (), pod )
145
148
Expect (err ).ToNot (BeNil ())
146
149
Expect (err .Error ()).To (ContainSubstring ("finalizer failed" ))
147
- Expect (needsUpdate ).To (BeFalse ())
150
+ Expect (result .Updated ).To (BeFalse ())
151
+ Expect (result .StatusUpdated ).To (BeFalse ())
148
152
Expect (len (pod .Finalizers )).To (Equal (1 ))
149
153
Expect (pod .Finalizers [0 ]).To (Equal ("finalizers.sigs.k8s.io/testfinalizer" ))
150
154
})
151
155
152
- It ("should return expected needsUpdate and error values when registering multiple finalizers" , func () {
156
+ It ("should return expected result values and error values when registering multiple finalizers" , func () {
153
157
now := metav1 .Now ()
154
158
pod .DeletionTimestamp = & now
155
159
pod .Finalizers = []string {
@@ -159,45 +163,51 @@ var _ = Describe("TestFinalizer", func() {
159
163
}
160
164
161
165
// registering multiple finalizers with different return values
162
- // test for needsUpdate as true, and nil error
163
- f .needsUpdate = true
166
+ // test for Updated as true, and nil error
167
+ f .result .Updated = true
168
+ f .result .StatusUpdated = false
164
169
f .err = nil
165
170
err = finalizers .Register ("finalizers.sigs.k8s.io/testfinalizer1" , f )
166
171
Expect (err ).To (BeNil ())
167
172
168
173
result , err := finalizers .Finalize (context .TODO (), pod )
169
174
Expect (err ).To (BeNil ())
170
- Expect (result ).To (BeTrue ())
175
+ Expect (result .Updated ).To (BeTrue ())
176
+ Expect (result .StatusUpdated ).To (BeFalse ())
171
177
// `finalizers.sigs.k8s.io/testfinalizer1` will be removed from the list
172
178
// of finalizers, so length will be 2.
173
179
Expect (len (pod .Finalizers )).To (Equal (2 ))
174
180
Expect (pod .Finalizers [0 ]).To (Equal ("finalizers.sigs.k8s.io/testfinalizer2" ))
175
181
Expect (pod .Finalizers [1 ]).To (Equal ("finalizers.sigs.k8s.io/testfinalizer3" ))
176
182
177
- // test for needsUpdate as false, and non-nil error
178
- f .needsUpdate = false
183
+ // test for Updated and StatusUpdated as false, and non-nil error
184
+ f .result .Updated = false
185
+ f .result .StatusUpdated = false
179
186
f .err = fmt .Errorf ("finalizer failed" )
180
187
err = finalizers .Register ("finalizers.sigs.k8s.io/testfinalizer2" , f )
181
188
Expect (err ).To (BeNil ())
182
189
183
190
result , err = finalizers .Finalize (context .TODO (), pod )
184
191
Expect (err ).ToNot (BeNil ())
185
192
Expect (err .Error ()).To (ContainSubstring ("finalizer failed" ))
186
- Expect (result ).To (BeFalse ())
193
+ Expect (result .Updated ).To (BeFalse ())
194
+ Expect (result .StatusUpdated ).To (BeFalse ())
187
195
Expect (len (pod .Finalizers )).To (Equal (2 ))
188
196
Expect (pod .Finalizers [0 ]).To (Equal ("finalizers.sigs.k8s.io/testfinalizer2" ))
189
197
Expect (pod .Finalizers [1 ]).To (Equal ("finalizers.sigs.k8s.io/testfinalizer3" ))
190
198
191
- // test for needsUpdate as true, and non-nil error
192
- f .needsUpdate = true
199
+ // test for result as true, and non-nil error
200
+ f .result .Updated = true
201
+ f .result .StatusUpdated = true
193
202
f .err = fmt .Errorf ("finalizer failed" )
194
203
err = finalizers .Register ("finalizers.sigs.k8s.io/testfinalizer3" , f )
195
204
Expect (err ).To (BeNil ())
196
205
197
206
result , err = finalizers .Finalize (context .TODO (), pod )
198
207
Expect (err ).ToNot (BeNil ())
199
208
Expect (err .Error ()).To (ContainSubstring ("finalizer failed" ))
200
- Expect (result ).To (BeTrue ())
209
+ Expect (result .Updated ).To (BeTrue ())
210
+ Expect (result .StatusUpdated ).To (BeTrue ())
201
211
Expect (len (pod .Finalizers )).To (Equal (2 ))
202
212
Expect (pod .Finalizers [0 ]).To (Equal ("finalizers.sigs.k8s.io/testfinalizer2" ))
203
213
Expect (pod .Finalizers [1 ]).To (Equal ("finalizers.sigs.k8s.io/testfinalizer3" ))
0 commit comments