Skip to content

Commit

Permalink
Check deletion event matches ClusterSet before Multi-cluster cleanup (#…
Browse files Browse the repository at this point in the history
…5638)

When handling a ClusterSet deletion event in a member cluster, check the
deleted ClusterSet and clean up Multi-cluster resources only when the
current ClusterSet is deleted.
Also fix and enhance the ClusterSet deletion unit test.

Signed-off-by: Jianjun Shen <[email protected]>
  • Loading branch information
tnqn authored Oct 30, 2023
1 parent 55e731d commit e5f044d
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,10 @@ func (r *MemberClusterSetReconciler) Reconcile(ctx context.Context, req ctrl.Req
if !apierrors.IsNotFound(err) {
return ctrl.Result{}, err
}
if r.clusterSetID != common.ClusterSetID(req.Name) {
// Not the current ClusterSet.
return ctrl.Result{}, nil
}
clusterSetNotFound = true
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,32 @@ func TestMemberClusterDelete(t *testing.T) {
reconciler := MemberClusterSetReconciler{
Client: fakeClient,
remoteCommonArea: commonArea,
clusterSetID: common.ClusterSetID("clusterset1"),
}

// Delete a different ClusterSet.
if _, err := reconciler.Reconcile(common.TestCtx, reconcile.Request{
NamespacedName: types.NamespacedName{
Namespace: "default",
Name: "clusterset2",
}}); err != nil {
t.Errorf("Member ClusterSet Reconciler should handle delete event successfully but got error = %v", err)
} else {
memberClusterAnnounce := &mcv1alpha1.MemberClusterAnnounce{}
err := fakeRemoteClient.Get(common.TestCtx, types.NamespacedName{
Namespace: "default",
Name: "member-announce-from-cluster-a",
}, memberClusterAnnounce)
if err != nil {
if apierrors.IsNotFound(err) {
t.Errorf("Member ClusterSet Reconciler should not remove MemberClusterAnnounce")
} else {
t.Errorf("Get MemberClusterAnnounce returned error = %v", err)
}
}
}

// Delete the current ClusterSet.
if _, err := reconciler.Reconcile(common.TestCtx, reconcile.Request{
NamespacedName: types.NamespacedName{
Namespace: "default",
Expand All @@ -59,12 +84,14 @@ func TestMemberClusterDelete(t *testing.T) {
t.Errorf("Member ClusterSet Reconciler should handle delete event successfully but got error = %v", err)
} else {
memberClusterAnnounce := &mcv1alpha1.MemberClusterAnnounce{}
err := fakeClient.Get(common.TestCtx, types.NamespacedName{
err := fakeRemoteClient.Get(common.TestCtx, types.NamespacedName{
Namespace: "default",
Name: "member-announce-from-cluster-a",
}, memberClusterAnnounce)
if !apierrors.IsNotFound(err) {
t.Errorf("Member ClusterSet Reconciler should remove MemberClusterAnnounce successfully but got error = %v", err)
if err == nil {
t.Errorf("Member ClusterSet Reconciler should remove MemberClusterAnnounce but not")
} else if !apierrors.IsNotFound(err) {
t.Errorf("Get MemberClusterAnnounce returned error = %v", err)
}
}
}
Expand Down

0 comments on commit e5f044d

Please sign in to comment.