mirror of
https://github.com/vmware-tanzu/velero.git
synced 2026-09-20 23:14:17 +00:00
Merge pull request #10176 from blackpiglet/jxun/volume_policy_support_data_mover_setting
Support to set data mover for the uploader from volume policy.
This commit is contained in:
@@ -407,6 +407,8 @@ func (p *pvcBackupItemAction) Execute(
|
||||
"Backup": backup.Name,
|
||||
})
|
||||
|
||||
dataMoverFromVolumePolicy := vh.GetDataMoverFromActionParameters(item, kuberesource.PersistentVolumeClaims)
|
||||
|
||||
dataUploadLog.Info("Starting data upload of backup")
|
||||
|
||||
dataUpload, err := createDataUpload(
|
||||
@@ -418,6 +420,7 @@ func (p *pvcBackupItemAction) Execute(
|
||||
operationID,
|
||||
vsc,
|
||||
fsType,
|
||||
dataMoverFromVolumePolicy,
|
||||
)
|
||||
if err != nil {
|
||||
dataUploadLog.WithError(err).Error("failed to submit DataUpload")
|
||||
@@ -557,6 +560,7 @@ func newDataUpload(
|
||||
operationID string,
|
||||
vsc *snapshotv1api.VolumeSnapshotContent,
|
||||
fsType string,
|
||||
dataMoverFromVolumePolicy string,
|
||||
) *velerov2alpha1.DataUpload {
|
||||
parentSnapshot := ""
|
||||
|
||||
@@ -564,6 +568,11 @@ func newDataUpload(
|
||||
parentSnapshot = veleroshared.DataUploadParentSnapshotNone
|
||||
}
|
||||
|
||||
dataMover := backup.Spec.DataMover
|
||||
if dataMoverFromVolumePolicy != "" {
|
||||
dataMover = dataMoverFromVolumePolicy
|
||||
}
|
||||
|
||||
dataUpload := &velerov2alpha1.DataUpload{
|
||||
TypeMeta: metav1.TypeMeta{
|
||||
APIVersion: velerov2alpha1.SchemeGroupVersion.String(),
|
||||
@@ -596,7 +605,7 @@ func newDataUpload(
|
||||
Driver: vsc.Spec.Driver,
|
||||
},
|
||||
SourcePVC: pvc.Name,
|
||||
DataMover: backup.Spec.DataMover,
|
||||
DataMover: dataMover,
|
||||
BackupStorageLocation: backup.Spec.StorageLocation,
|
||||
SourceNamespace: pvc.Namespace,
|
||||
OperationTimeout: backup.Spec.CSISnapshotTimeout,
|
||||
@@ -627,8 +636,9 @@ func createDataUpload(
|
||||
operationID string,
|
||||
vsc *snapshotv1api.VolumeSnapshotContent,
|
||||
fsType string,
|
||||
dataMoverFromVolumePolicy string,
|
||||
) (*velerov2alpha1.DataUpload, error) {
|
||||
dataUpload := newDataUpload(backup, vs, pvc, operationID, vsc, fsType)
|
||||
dataUpload := newDataUpload(backup, vs, pvc, operationID, vsc, fsType, dataMoverFromVolumePolicy)
|
||||
|
||||
err := crClient.Create(ctx, dataUpload)
|
||||
if err != nil {
|
||||
|
||||
@@ -2229,12 +2229,13 @@ func TestGetOrCreateVolumeHelper(t *testing.T) {
|
||||
|
||||
func TestNewDataUpload(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
backupType velerov1api.BackupType
|
||||
vsClassName *string
|
||||
uploaderConfig *velerov1api.UploaderConfigForBackup
|
||||
expectedParentSnap string
|
||||
expectedDataMoverCfg map[string]string
|
||||
name string
|
||||
backupType velerov1api.BackupType
|
||||
vsClassName *string
|
||||
uploaderConfig *velerov1api.UploaderConfigForBackup
|
||||
dataMoverFromVolumePolicy string
|
||||
expectedParentSnap string
|
||||
expectedDataMoverCfg map[string]string
|
||||
}{
|
||||
{
|
||||
name: "Full backup type, no uploader config, no vs class name",
|
||||
@@ -2262,6 +2263,15 @@ func TestNewDataUpload(t *testing.T) {
|
||||
expectedParentSnap: "",
|
||||
expectedDataMoverCfg: nil,
|
||||
},
|
||||
{
|
||||
name: "Default backup type, uploader config with 0 parallel files",
|
||||
backupType: "",
|
||||
vsClassName: ptr.To("test-vs-class"),
|
||||
uploaderConfig: &velerov1api.UploaderConfigForBackup{ParallelFilesUpload: 0},
|
||||
dataMoverFromVolumePolicy: "velero-block",
|
||||
expectedParentSnap: "",
|
||||
expectedDataMoverCfg: nil,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range tests {
|
||||
@@ -2310,7 +2320,7 @@ func TestNewDataUpload(t *testing.T) {
|
||||
operationID := "test-op-id"
|
||||
fsType := "ext4"
|
||||
|
||||
du := newDataUpload(backup, vs, pvc, operationID, vsc, fsType)
|
||||
du := newDataUpload(backup, vs, pvc, operationID, vsc, fsType, tc.dataMoverFromVolumePolicy)
|
||||
|
||||
require.NotNil(t, du)
|
||||
assert.Equal(t, velerov2alpha1.SchemeGroupVersion.String(), du.APIVersion)
|
||||
@@ -2344,7 +2354,12 @@ func TestNewDataUpload(t *testing.T) {
|
||||
}
|
||||
|
||||
assert.Equal(t, pvc.Name, du.Spec.SourcePVC)
|
||||
assert.Equal(t, backup.Spec.DataMover, du.Spec.DataMover)
|
||||
if tc.dataMoverFromVolumePolicy != "" {
|
||||
assert.Equal(t, tc.dataMoverFromVolumePolicy, du.Spec.DataMover)
|
||||
} else {
|
||||
assert.Equal(t, backup.Spec.DataMover, du.Spec.DataMover)
|
||||
}
|
||||
|
||||
assert.Equal(t, backup.Spec.StorageLocation, du.Spec.BackupStorageLocation)
|
||||
assert.Equal(t, pvc.Namespace, du.Spec.SourceNamespace)
|
||||
assert.Equal(t, backup.Spec.CSISnapshotTimeout, du.Spec.OperationTimeout)
|
||||
|
||||
@@ -28,4 +28,5 @@ type VolumeHelper interface {
|
||||
ShouldPerformCustomAction(obj runtime.Unstructured, groupResource schema.GroupResource, matchParams map[string]any) (bool, error)
|
||||
GetActionParameters(obj runtime.Unstructured, groupResource schema.GroupResource) (bool, string, map[string]any, error)
|
||||
GetSnapshotClass(obj runtime.Unstructured, groupResource schema.GroupResource) (string, error)
|
||||
GetDataMoverFromActionParameters(obj runtime.Unstructured, groupResource schema.GroupResource) string
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user