Skip to content

Commit 1edcfec

Browse files
Handle external managed cluster's image deletion (#2052)
When an image is associated to a externally managed cluster, during deletion there might be a chance where cluster resource might have already cleaned up So get cluster only when image is not deleted
1 parent 3c06b43 commit 1edcfec

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

controllers/ibmpowervsimage_controller.go

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -66,19 +66,25 @@ func (r *IBMPowerVSImageReconciler) Reconcile(ctx context.Context, req ctrl.Requ
6666
return ctrl.Result{}, err
6767
}
6868

69-
cluster, err := scope.GetClusterByName(ctx, r.Client, ibmImage.Namespace, ibmImage.Spec.ClusterName)
70-
if err != nil {
71-
return ctrl.Result{}, err
72-
}
73-
74-
// Create the scope.
75-
imageScope, err := scope.NewPowerVSImageScope(scope.PowerVSImageScopeParams{
69+
var cluster *infrav1beta2.IBMPowerVSCluster
70+
scopeParams := scope.PowerVSImageScopeParams{
7671
Client: r.Client,
7772
Logger: log,
7873
IBMPowerVSImage: ibmImage,
79-
Zone: cluster.Spec.Zone,
8074
ServiceEndpoint: r.ServiceEndpoint,
81-
})
75+
}
76+
77+
// Externally managed clusters might not be available during image deletion. Get the cluster only when image is still not deleted.
78+
if ibmImage.DeletionTimestamp.IsZero() {
79+
cluster, err = scope.GetClusterByName(ctx, r.Client, ibmImage.Namespace, ibmImage.Spec.ClusterName)
80+
if err != nil {
81+
return ctrl.Result{}, err
82+
}
83+
scopeParams.Zone = cluster.Spec.Zone
84+
}
85+
86+
// Create the scope
87+
imageScope, err := scope.NewPowerVSImageScope(scopeParams)
8288
if err != nil {
8389
return ctrl.Result{}, fmt.Errorf("failed to create scope: %w", err)
8490
}

0 commit comments

Comments
 (0)