@@ -144,7 +144,7 @@ func (r *K8ssandraClusterReconciler) checkFinalizer(ctx context.Context, kc *api
144
144
}
145
145
146
146
func (r * K8ssandraClusterReconciler ) checkDcDeletion (ctx context.Context , kc * api.K8ssandraCluster , logger logr.Logger ) result.ReconcileResult {
147
- dcName , dcNameOverride := k8ssandra .GetDatacenterForDecommission (kc )
147
+ dcName := k8ssandra .GetDatacenterForDecommission (kc )
148
148
if dcName == "" {
149
149
return result .Continue ()
150
150
}
@@ -163,76 +163,78 @@ func (r *K8ssandraClusterReconciler) checkDcDeletion(ctx context.Context, kc *ap
163
163
default :
164
164
logger .Info ("Proceeding with DC deletion" , "DC" , dcName )
165
165
166
- cassDcName := dcName
167
- if dcNameOverride != "" {
168
- cassDcName = dcNameOverride
169
- }
170
- return r .deleteDc (ctx , kc , dcName , cassDcName , logger )
166
+ return r .deleteDc (ctx , kc , dcName , logger )
171
167
}
172
168
}
173
169
174
- func (r * K8ssandraClusterReconciler ) deleteDc (ctx context.Context , kc * api.K8ssandraCluster , dcName string , cassDcName string , logger logr.Logger ) result.ReconcileResult {
170
+ func (r * K8ssandraClusterReconciler ) deleteDc (ctx context.Context , kc * api.K8ssandraCluster , dcName string , logger logr.Logger ) result.ReconcileResult {
175
171
kcKey := utils .GetKey (kc )
176
172
177
- stargate , remoteClient , err := r .findStargateForDeletion (ctx , kcKey , cassDcName , nil )
173
+ dcRemoteClient , err := r .ClientCache .GetRemoteClient (kc .Status .Datacenters [dcName ].ContextName )
174
+ if err != nil {
175
+ return result .Error (err )
176
+ }
177
+
178
+ dc , _ , err := r .findDcForDeletion (ctx , kcKey , dcName , dcRemoteClient )
179
+ if err != nil {
180
+ return result .Error (err )
181
+ }
182
+
183
+ if dc == nil {
184
+ // Deletion was already done
185
+ delete (kc .Status .Datacenters , dcName )
186
+ logger .Info ("DC deletion finished" , "DC" , dcName )
187
+ return result .Continue ()
188
+ }
189
+
190
+ stargate , remoteClient , err := r .findStargateForDeletion (ctx , kcKey , dc .DatacenterName (), nil )
178
191
if err != nil {
179
192
return result .Error (err )
180
193
}
181
194
182
195
if stargate != nil {
183
196
if err = remoteClient .Delete (ctx , stargate ); err != nil && ! errors .IsNotFound (err ) {
184
- return result .Error (fmt .Errorf ("failed to delete Stargate for dc (%s): %v" , cassDcName , err ))
197
+ return result .Error (fmt .Errorf ("failed to delete Stargate for dc (%s): %v" , dc . DatacenterName () , err ))
185
198
}
186
199
logger .Info ("Deleted Stargate" , "Stargate" , utils .GetKey (stargate ))
187
200
}
188
201
189
- reaper , remoteClient , err := r .findReaperForDeletion (ctx , kcKey , cassDcName , remoteClient )
202
+ reaper , remoteClient , err := r .findReaperForDeletion (ctx , kcKey , dc . DatacenterName () , remoteClient )
190
203
if err != nil {
191
204
return result .Error (err )
192
205
}
193
206
194
207
if reaper != nil {
195
208
if err = remoteClient .Delete (ctx , reaper ); err != nil && ! errors .IsNotFound (err ) {
196
- return result .Error (fmt .Errorf ("failed to delete Reaper for dc (%s): %v" , cassDcName , err ))
209
+ return result .Error (fmt .Errorf ("failed to delete Reaper for dc (%s): %v" , dc . DatacenterName () , err ))
197
210
}
198
211
logger .Info ("Deleted Reaper" , "Reaper" , utils .GetKey (reaper ))
199
212
}
200
213
201
- dc , remoteClient , err := r .findDcForDeletion (ctx , kcKey , dcName , remoteClient )
202
- if err != nil {
214
+ if err := r .deleteContactPointsService (ctx , kc , dc , logger ); err != nil {
203
215
return result .Error (err )
204
216
}
205
217
206
- if dc != nil {
207
- if err := r .deleteContactPointsService (ctx , kc , dc , logger ); err != nil {
208
- return result .Error (err )
209
- }
210
-
211
- if dc .GetConditionStatus (cassdcapi .DatacenterDecommission ) == corev1 .ConditionTrue {
212
- logger .Info ("CassandraDatacenter decommissioning in progress" , "CassandraDatacenter" , utils .GetKey (dc ))
213
- // There is no need to requeue here. Reconciliation will be trigger by updates made by cass-operator.
214
- return result .Done ()
215
- }
216
-
217
- if ! annotations .HasAnnotationWithValue (dc , cassdcapi .DecommissionOnDeleteAnnotation , "true" ) {
218
- patch := client .MergeFrom (dc .DeepCopy ())
219
- annotations .AddAnnotation (dc , cassdcapi .DecommissionOnDeleteAnnotation , "true" )
220
- if err = remoteClient .Patch (ctx , dc , patch ); err != nil {
221
- return result .Error (fmt .Errorf ("failed to add %s annotation to dc: %v" , cassdcapi .DecommissionOnDeleteAnnotation , err ))
222
- }
223
- }
224
-
225
- if err = remoteClient .Delete (ctx , dc ); err != nil && ! errors .IsNotFound (err ) {
226
- return result .Error (fmt .Errorf ("failed to delete CassandraDatacenter (%s): %v" , dcName , err ))
227
- }
228
- logger .Info ("Deleted CassandraDatacenter" , "CassandraDatacenter" , utils .GetKey (dc ))
218
+ if dc .GetConditionStatus (cassdcapi .DatacenterDecommission ) == corev1 .ConditionTrue {
219
+ logger .Info ("CassandraDatacenter decommissioning in progress" , "CassandraDatacenter" , utils .GetKey (dc ))
229
220
// There is no need to requeue here. Reconciliation will be trigger by updates made by cass-operator.
230
221
return result .Done ()
231
222
}
232
223
233
- delete (kc .Status .Datacenters , dcName )
234
- logger .Info ("DC deletion finished" , "DC" , dcName )
235
- return result .Continue ()
224
+ if ! annotations .HasAnnotationWithValue (dc , cassdcapi .DecommissionOnDeleteAnnotation , "true" ) {
225
+ patch := client .MergeFrom (dc .DeepCopy ())
226
+ annotations .AddAnnotation (dc , cassdcapi .DecommissionOnDeleteAnnotation , "true" )
227
+ if err = dcRemoteClient .Patch (ctx , dc , patch ); err != nil {
228
+ return result .Error (fmt .Errorf ("failed to add %s annotation to dc: %v" , cassdcapi .DecommissionOnDeleteAnnotation , err ))
229
+ }
230
+ }
231
+
232
+ if err = dcRemoteClient .Delete (ctx , dc ); err != nil && ! errors .IsNotFound (err ) {
233
+ return result .Error (fmt .Errorf ("failed to delete CassandraDatacenter (%s): %v" , dcName , err ))
234
+ }
235
+ logger .Info ("Deleted CassandraDatacenter" , "CassandraDatacenter" , utils .GetKey (dc ))
236
+ // There is no need to requeue here. Reconciliation will be trigger by updates made by cass-operator.
237
+ return result .Done ()
236
238
}
237
239
238
240
func (r * K8ssandraClusterReconciler ) findStargateForDeletion (
0 commit comments