@@ -153,24 +153,44 @@ func (c *Controller) sync() error {
153
153
154
154
metadataChanged := strategy .Metadata (& prevCR .ObjectMeta , & cr .ObjectMeta )
155
155
specChanged := ! reflect .DeepEqual (prevCR .Spec , cr .Spec )
156
- statusChanged := ! reflect .DeepEqual (prevCR .Status , cr .Status )
157
- if metadataChanged || specChanged || statusChanged {
158
- glog .Infof ("object changed: %s (metadata=%t, spec=%t, status=%t)" , util .ObjectInfo (cr ), metadataChanged , specChanged , statusChanged )
159
-
160
- cr .Status .ObservedGeneration = cr .Generation
156
+ if metadataChanged || specChanged {
157
+ glog .Infof ("object changed: %s (metadata=%t, spec=%t)" , util .ObjectInfo (cr ), metadataChanged , specChanged )
161
158
162
159
client , err := regopset .NewForConfig (c .kubeconfig )
163
160
if err != nil {
164
161
return err
165
162
}
166
163
167
- _ , err = client .ImageregistryV1 ().Configs ().Update (cr )
164
+ updatedCR , err : = client .ImageregistryV1 ().Configs ().Update (cr )
168
165
if err != nil {
169
166
if ! errors .IsConflict (err ) {
170
167
glog .Errorf ("unable to update %s: %s" , util .ObjectInfo (cr ), err )
171
168
}
172
169
return err
173
170
}
171
+
172
+ // If we updated the Status field too, we'll make one more call and we
173
+ // want it to succeed.
174
+ cr .ResourceVersion = updatedCR .ResourceVersion
175
+ }
176
+
177
+ cr .Status .ObservedGeneration = cr .Generation
178
+ statusChanged := ! reflect .DeepEqual (prevCR .Status , cr .Status )
179
+ if statusChanged {
180
+ glog .Infof ("object changed: %s (status=%t)" , util .ObjectInfo (cr ), statusChanged )
181
+
182
+ client , err := regopset .NewForConfig (c .kubeconfig )
183
+ if err != nil {
184
+ return err
185
+ }
186
+
187
+ _ , err = client .ImageregistryV1 ().Configs ().UpdateStatus (cr )
188
+ if err != nil {
189
+ if ! errors .IsConflict (err ) {
190
+ glog .Errorf ("unable to update status %s: %s" , util .ObjectInfo (cr ), err )
191
+ }
192
+ return err
193
+ }
174
194
}
175
195
176
196
if _ , ok := applyError .(permanentError ); ! ok {
0 commit comments