diff --git a/pkg/sidecar-controller/content_create_test.go b/pkg/sidecar-controller/content_create_test.go index babc144a8..c211c51d5 100644 --- a/pkg/sidecar-controller/content_create_test.go +++ b/pkg/sidecar-controller/content_create_test.go @@ -163,7 +163,7 @@ func TestSyncContent(t *testing.T) { SnapshotHandle: toStringPointer("sid1-6"), RestoreSize: &defaultSize, ReadyToUse: &False, - Error: newSnapshotError("Failed to check and update snapshot content: failed to get input parameters to create snapshot for content content1-6: \"failed to retrieve snapshot class bad-class from the informer: \\\"volumesnapshotclass.snapshot.storage.k8s.io \\\\\\\"bad-class\\\\\\\" not found\\\"\""), + Error: newSnapshotError("Failed to check and update snapshot content: failed to get input parameters to create snapshot for content content1-6: \"volumesnapshotclass.snapshot.storage.k8s.io \\\"bad-class\\\" not found\""), }), expectedEvents: []string{"Warning SnapshotContentCheckandUpdateFailed"}, expectedCreateCalls: []createCall{ diff --git a/pkg/sidecar-controller/snapshot_controller.go b/pkg/sidecar-controller/snapshot_controller.go index 68e48ac0f..aff73f1bf 100644 --- a/pkg/sidecar-controller/snapshot_controller.go +++ b/pkg/sidecar-controller/snapshot_controller.go @@ -26,6 +26,7 @@ import ( codes "google.golang.org/grpc/codes" "google.golang.org/grpc/status" v1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/klog" "k8s.io/kubernetes/pkg/util/goroutinemap" @@ -367,7 +368,7 @@ func (ctrl *csiSnapshotSideCarController) deleteCSISnapshotOperation(content *cr klog.V(5).Infof("deleteCSISnapshotOperation [%s] started", content.Name) _, snapshotterCredentials, err := ctrl.getCSISnapshotInput(content) - if err != nil { + if err != nil && !errors.IsNotFound(err) { ctrl.eventRecorder.Event(content, v1.EventTypeWarning, "SnapshotDeleteError", "Failed to get snapshot class or credentials") return fmt.Errorf("failed to get input parameters to delete snapshot for content %s: %q", content.Name, err) } @@ -479,7 +480,7 @@ func (ctrl *csiSnapshotSideCarController) getSnapshotClass(className string) (*c class, err := ctrl.classLister.Get(className) if err != nil { klog.Errorf("failed to retrieve snapshot class %s from the informer: %q", className, err) - return nil, fmt.Errorf("failed to retrieve snapshot class %s from the informer: %q", className, err) + return nil, err } return class, nil diff --git a/pkg/sidecar-controller/snapshot_delete_test.go b/pkg/sidecar-controller/snapshot_delete_test.go index ae25a8bb8..17c4d4948 100644 --- a/pkg/sidecar-controller/snapshot_delete_test.go +++ b/pkg/sidecar-controller/snapshot_delete_test.go @@ -219,12 +219,13 @@ func TestDeleteSync(t *testing.T) { test: testSyncContent, }, { - name: "1-4 - fail to delete with a snapshot class which has invalid secret parameter, bound finalizer should remain", - initialContents: newContentArrayWithDeletionTimestamp("content1-1", "snapuid1-1", "snap1-1", "sid1-1", "invalid", "", "snap1-4-volumehandle", deletionPolicy, nil, nil, true, &timeNowMetav1), - expectedContents: newContentArrayWithDeletionTimestamp("content1-1", "snapuid1-1", "snap1-1", "sid1-1", "invalid", "", "snap1-4-volumehandle", deletionPolicy, nil, nil, true, &timeNowMetav1), - expectedEvents: noevents, - errors: noerrors, - test: testSyncContent, + name: "1-4 - fail to delete with a snapshot class which has invalid secret parameter, bound finalizer should remain", + initialContents: newContentArrayWithDeletionTimestamp("content1-1", "snapuid1-1", "snap1-1", "sid1-1", "invalid", "", "snap1-4-volumehandle", deletionPolicy, nil, nil, true, &timeNowMetav1), + expectedContents: newContentArrayWithDeletionTimestamp("content1-1", "snapuid1-1", "snap1-1", "sid1-1", "invalid", "", "snap1-4-volumehandle", deletionPolicy, nil, nil, true, &timeNowMetav1), + expectedEvents: noevents, + expectedDeleteCalls: []deleteCall{{"sid1-1", nil, fmt.Errorf("mock csi driver delete error")}}, + errors: noerrors, + test: testSyncContent, }, { name: "1-5 - csi driver delete snapshot returns error, bound finalizer should remain", @@ -330,10 +331,9 @@ func TestDeleteSync(t *testing.T) { test: testSyncContent, }, { - name: "1-15 - (dynamic)deletion of content with no snapshotclass should produce error", + name: "1-15 - (dynamic)deletion of content with no snapshotclass should succeed", initialContents: newContentArrayWithDeletionTimestamp("content1-15", "sid1-15", "snap1-15", "sid1-15", "", "", "snap1-15-volumehandle", deletePolicy, nil, &defaultSize, true, &timeNowMetav1), expectedContents: newContentArrayWithDeletionTimestamp("content1-15", "sid1-15", "snap1-15", "sid1-15", "", "", "snap1-15-volumehandle", deletePolicy, nil, &defaultSize, true, &timeNowMetav1), - expectedEvents: []string{"Warning SnapshotDeleteError"}, errors: noerrors, expectedDeleteCalls: []deleteCall{{"sid1-15", nil, nil}}, test: testSyncContent,