From a19af739bd86c4d42c94c9910b13a6fbfa8aaeb8 Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Fri, 15 Mar 2024 16:40:26 +0800 Subject: [PATCH] Code refactor. 1. use function passed-in context. 2. replace the depracated apimachinery/pkg/util/wait method and variable. 3. remove unneeded function parameter. Signed-off-by: Xun Jiang --- internal/backup/pvc_action.go | 10 +++++----- internal/restore/pvc_action.go | 7 +++++-- internal/util/util.go | 12 ++++++------ 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/internal/backup/pvc_action.go b/internal/backup/pvc_action.go index 11b02218..3339cf02 100644 --- a/internal/backup/pvc_action.go +++ b/internal/backup/pvc_action.go @@ -253,7 +253,7 @@ func (p *PVCBackupItemAction) Progress(operationID string, backup *velerov1api.B return progress, biav2.InvalidOperationIDError(operationID) } - dataUpload, err := getDataUpload(context.Background(), backup, p.CRClient, operationID) + dataUpload, err := getDataUpload(context.Background(), p.CRClient, operationID) if err != nil { p.Log.Errorf("fail to get DataUpload for backup %s/%s: %s", backup.Namespace, backup.Name, err.Error()) return progress, err @@ -294,7 +294,7 @@ func (p *PVCBackupItemAction) Cancel(operationID string, backup *velerov1api.Bac return biav2.InvalidOperationIDError(operationID) } - dataUpload, err := getDataUpload(context.Background(), backup, p.CRClient, operationID) + dataUpload, err := getDataUpload(context.Background(), p.CRClient, operationID) if err != nil { p.Log.Errorf("fail to get DataUpload for backup %s/%s: %s", backup.Namespace, backup.Name, err.Error()) return err @@ -365,10 +365,10 @@ func createDataUpload(ctx context.Context, backup *velerov1api.Backup, crClient return dataUpload, err } -func getDataUpload(ctx context.Context, backup *velerov1api.Backup, +func getDataUpload(ctx context.Context, crClient crclient.Client, operationID string) (*velerov2alpha1.DataUpload, error) { dataUploadList := new(velerov2alpha1.DataUploadList) - err := crClient.List(context.Background(), dataUploadList, &crclient.ListOptions{ + err := crClient.List(ctx, dataUploadList, &crclient.ListOptions{ LabelSelector: labels.SelectorFromSet(map[string]string{velerov1api.AsyncOperationIDLabel: operationID}), }) if err != nil { @@ -392,7 +392,7 @@ func cancelDataUpload(ctx context.Context, crClient crclient.Client, updatedDataUpload := dataUpload.DeepCopy() updatedDataUpload.Spec.Cancel = true - err := crClient.Patch(context.Background(), updatedDataUpload, crclient.MergeFrom(dataUpload)) + err := crClient.Patch(ctx, updatedDataUpload, crclient.MergeFrom(dataUpload)) if err != nil { return errors.Wrap(err, "error patch DataUpload") } diff --git a/internal/restore/pvc_action.go b/internal/restore/pvc_action.go index c8f7e670..130bd96b 100644 --- a/internal/restore/pvc_action.go +++ b/internal/restore/pvc_action.go @@ -334,7 +334,10 @@ func getDataUploadResult(ctx context.Context, restore *velerov1api.Restore, pvc func getDataDownload(ctx context.Context, namespace string, operationID string, crClient crclient.Client) (*velerov2alpha1.DataDownload, error) { dataDownloadList := new(velerov2alpha1.DataDownloadList) - err := crClient.List(ctx, dataDownloadList, &crclient.ListOptions{LabelSelector: labels.SelectorFromSet(map[string]string{velerov1api.AsyncOperationIDLabel: operationID})}) + err := crClient.List(ctx, dataDownloadList, &crclient.ListOptions{ + LabelSelector: labels.SelectorFromSet(map[string]string{velerov1api.AsyncOperationIDLabel: operationID}), + Namespace: namespace, + }) if err != nil { return nil, errors.Wrap(err, "fail to list DataDownload") } @@ -356,7 +359,7 @@ func cancelDataDownload(ctx context.Context, crClient crclient.Client, updatedDataDownload := dataDownload.DeepCopy() updatedDataDownload.Spec.Cancel = true - err := crClient.Patch(context.Background(), updatedDataDownload, crclient.MergeFrom(dataDownload)) + err := crClient.Patch(ctx, updatedDataDownload, crclient.MergeFrom(dataDownload)) return err } diff --git a/internal/util/util.go b/internal/util/util.go index a96e7c84..5b99fc34 100644 --- a/internal/util/util.go +++ b/internal/util/util.go @@ -236,8 +236,8 @@ func GetVolumeSnapshotContentForVolumeSnapshot(volSnap *snapshotv1api.VolumeSnap interval := 5 * time.Second var snapshotContent *snapshotv1api.VolumeSnapshotContent - err := wait.PollImmediate(interval, timeout, func() (bool, error) { - vs, err := snapshotClient.VolumeSnapshots(volSnap.Namespace).Get(context.TODO(), volSnap.Name, metav1.GetOptions{}) + err := wait.PollUntilContextTimeout(context.Background(), interval, timeout, true, func(ctx context.Context) (bool, error) { + vs, err := snapshotClient.VolumeSnapshots(volSnap.Namespace).Get(ctx, volSnap.Name, metav1.GetOptions{}) if err != nil { return false, errors.Wrapf(err, fmt.Sprintf("failed to get volumesnapshot %s/%s", volSnap.Namespace, volSnap.Name)) } @@ -247,7 +247,7 @@ func GetVolumeSnapshotContentForVolumeSnapshot(volSnap *snapshotv1api.VolumeSnap return false, nil } - snapshotContent, err = snapshotClient.VolumeSnapshotContents().Get(context.TODO(), *vs.Status.BoundVolumeSnapshotContentName, metav1.GetOptions{}) + snapshotContent, err = snapshotClient.VolumeSnapshotContents().Get(ctx, *vs.Status.BoundVolumeSnapshotContentName, metav1.GetOptions{}) if err != nil { return false, errors.Wrapf(err, fmt.Sprintf("failed to get volumesnapshotcontent %s for volumesnapshot %s/%s", *vs.Status.BoundVolumeSnapshotContentName, vs.Namespace, vs.Name)) } @@ -267,7 +267,7 @@ func GetVolumeSnapshotContentForVolumeSnapshot(volSnap *snapshotv1api.VolumeSnap }) if err != nil { - if err == wait.ErrWaitTimeout { + if err == wait.ErrorInterrupted(errors.New("timed out waiting for the condition")) { if snapshotContent != nil && snapshotContent.Status != nil && snapshotContent.Status.Error != nil { log.Errorf("Timed out awaiting reconciliation of volumesnapshot, Volumesnapshotcontent %s has error: %v", snapshotContent.Name, *snapshotContent.Status.Error.Message) return nil, errors.Errorf("CSI got timed out with error: %v", *snapshotContent.Status.Error.Message) @@ -483,8 +483,8 @@ func recreateVolumeSnapshotContent(vsc snapshotv1api.VolumeSnapshotContent, back } // Check VolumeSnapshotContents is already deleted, before re-creating it. - err = wait.PollImmediate(interval, timeout, func() (bool, error) { - _, err := snapshotClient.VolumeSnapshotContents().Get(context.TODO(), vsc.Name, metav1.GetOptions{}) + err = wait.PollUntilContextTimeout(context.Background(), interval, timeout, true, func(ctx context.Context) (bool, error) { + _, err := snapshotClient.VolumeSnapshotContents().Get(ctx, vsc.Name, metav1.GetOptions{}) if err != nil { if apierrors.IsNotFound(err) { return true, nil