github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/pkg/testutil/dataprotection/backuppolicy_factory.go (about)

     1  /*
     2  Copyright (C) 2022-2023 ApeCloud Co., Ltd
     3  
     4  This file is part of KubeBlocks project
     5  
     6  This program is free software: you can redistribute it and/or modify
     7  it under the terms of the GNU Affero General Public License as published by
     8  the Free Software Foundation, either version 3 of the License, or
     9  (at your option) any later version.
    10  
    11  This program is distributed in the hope that it will be useful
    12  but WITHOUT ANY WARRANTY; without even the implied warranty of
    13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    14  GNU Affero General Public License for more details.
    15  
    16  You should have received a copy of the GNU Affero General Public License
    17  along with this program.  If not, see <http://www.gnu.org/licenses/>.
    18  */
    19  
    20  package dataprotection
    21  
    22  import (
    23  	corev1 "k8s.io/api/core/v1"
    24  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    25  
    26  	dpv1alpha1 "github.com/1aal/kubeblocks/apis/dataprotection/v1alpha1"
    27  	testapps "github.com/1aal/kubeblocks/pkg/testutil/apps"
    28  )
    29  
    30  type MockBackupPolicyFactory struct {
    31  	testapps.BaseFactory[dpv1alpha1.BackupPolicy, *dpv1alpha1.BackupPolicy, MockBackupPolicyFactory]
    32  }
    33  
    34  func NewBackupPolicyFactory(namespace, name string) *MockBackupPolicyFactory {
    35  	f := &MockBackupPolicyFactory{}
    36  	f.Init(namespace, name, &dpv1alpha1.BackupPolicy{}, f)
    37  	return f
    38  }
    39  
    40  func (f *MockBackupPolicyFactory) SetBackupRepoName(backupRepoName string) *MockBackupPolicyFactory {
    41  	if backupRepoName == "" {
    42  		f.Get().Spec.BackupRepoName = nil
    43  	} else {
    44  		f.Get().Spec.BackupRepoName = &backupRepoName
    45  	}
    46  	return f
    47  }
    48  
    49  func (f *MockBackupPolicyFactory) SetPathPrefix(pathPrefix string) *MockBackupPolicyFactory {
    50  	f.Get().Spec.PathPrefix = pathPrefix
    51  	return f
    52  }
    53  
    54  func (f *MockBackupPolicyFactory) SetBackoffLimit(backoffLimit int32) *MockBackupPolicyFactory {
    55  	f.Get().Spec.BackoffLimit = &backoffLimit
    56  	return f
    57  }
    58  
    59  func (f *MockBackupPolicyFactory) AddBackupMethod(name string,
    60  	snapshotVolumes bool, actionSetName string) *MockBackupPolicyFactory {
    61  	f.Get().Spec.BackupMethods = append(f.Get().Spec.BackupMethods,
    62  		dpv1alpha1.BackupMethod{
    63  			Name:            name,
    64  			SnapshotVolumes: &snapshotVolumes,
    65  			ActionSetName:   actionSetName,
    66  			TargetVolumes:   &dpv1alpha1.TargetVolumeInfo{},
    67  		})
    68  	return f
    69  }
    70  
    71  func (f *MockBackupPolicyFactory) SetBackupMethodVolumes(names []string) *MockBackupPolicyFactory {
    72  	f.Get().Spec.BackupMethods[len(f.Get().Spec.BackupMethods)-1].TargetVolumes.Volumes = names
    73  	return f
    74  }
    75  
    76  func (f *MockBackupPolicyFactory) SetBackupMethodVolumeMounts(keyAndValues ...string) *MockBackupPolicyFactory {
    77  	var volumeMounts []corev1.VolumeMount
    78  	for k, v := range testapps.WithMap(keyAndValues...) {
    79  		volumeMounts = append(volumeMounts, corev1.VolumeMount{
    80  			Name:      k,
    81  			MountPath: v,
    82  		})
    83  	}
    84  	f.Get().Spec.BackupMethods[len(f.Get().Spec.BackupMethods)-1].TargetVolumes.VolumeMounts = volumeMounts
    85  	return f
    86  }
    87  
    88  func (f *MockBackupPolicyFactory) SetTarget(keyAndValues ...string) *MockBackupPolicyFactory {
    89  	f.Get().Spec.Target = &dpv1alpha1.BackupTarget{
    90  		PodSelector: &dpv1alpha1.PodSelector{
    91  			LabelSelector: &metav1.LabelSelector{
    92  				MatchLabels: testapps.WithMap(keyAndValues...),
    93  			},
    94  		},
    95  	}
    96  	return f
    97  }
    98  
    99  func (f *MockBackupPolicyFactory) SetTargetConnectionCredential(secretName string) *MockBackupPolicyFactory {
   100  	f.Get().Spec.Target.ConnectionCredential = &dpv1alpha1.ConnectionCredential{
   101  		SecretName:  secretName,
   102  		UsernameKey: "username",
   103  		PasswordKey: "password",
   104  	}
   105  	return f
   106  }