mirror of
https://github.com/vmware-tanzu/velero.git
synced 2026-09-29 11:16:08 +00:00
issue 9626: let go for uninitialized repo under readonly mode
Signed-off-by: Lyndon-Li <lyonghui@vmware.com>
This commit is contained in:
@@ -208,14 +208,16 @@ func (urp *unifiedRepoProvider) PrepareRepo(ctx context.Context, param RepoParam
|
||||
return errors.Wrap(err, "error to get repo options")
|
||||
}
|
||||
|
||||
if created, err := urp.repoService.IsCreated(ctx, *repoOption); err != nil {
|
||||
readOnly := (param.BackupLocation.Spec.AccessMode == velerov1api.BackupStorageLocationAccessModeReadOnly)
|
||||
|
||||
if ready, err := urp.repoService.IsReady(ctx, *repoOption, readOnly); err != nil {
|
||||
return errors.Wrap(err, "error to check backup repo")
|
||||
} else if created {
|
||||
} else if ready {
|
||||
log.Info("Repo has already been initialized")
|
||||
return nil
|
||||
}
|
||||
|
||||
if param.BackupLocation.Spec.AccessMode == velerov1api.BackupStorageLocationAccessModeReadOnly {
|
||||
if readOnly {
|
||||
return errors.Errorf("cannot create new backup repo for read-only backup storage location %s/%s", param.BackupLocation.Namespace, param.BackupLocation.Name)
|
||||
}
|
||||
|
||||
|
||||
@@ -613,7 +613,7 @@ func TestPrepareRepo(t *testing.T) {
|
||||
getter *credmock.SecretStore
|
||||
repoService *reposervicenmocks.BackupRepoService
|
||||
retFuncCreate func(context.Context, udmrepo.RepoOptions) error
|
||||
retFuncCheck func(context.Context, udmrepo.RepoOptions) (bool, error)
|
||||
retFuncCheck func(context.Context, udmrepo.RepoOptions, bool) (bool, error)
|
||||
credStoreReturn string
|
||||
credStoreError error
|
||||
readOnlyBSL bool
|
||||
@@ -656,7 +656,7 @@ func TestPrepareRepo(t *testing.T) {
|
||||
},
|
||||
},
|
||||
repoService: new(reposervicenmocks.BackupRepoService),
|
||||
retFuncCheck: func(ctx context.Context, repoOption udmrepo.RepoOptions) (bool, error) {
|
||||
retFuncCheck: func(ctx context.Context, repoOption udmrepo.RepoOptions, readOnly bool) (bool, error) {
|
||||
return false, errors.New("fake-error")
|
||||
},
|
||||
expectedErr: "error to check backup repo: fake-error",
|
||||
@@ -674,7 +674,7 @@ func TestPrepareRepo(t *testing.T) {
|
||||
},
|
||||
},
|
||||
repoService: new(reposervicenmocks.BackupRepoService),
|
||||
retFuncCheck: func(ctx context.Context, repoOption udmrepo.RepoOptions) (bool, error) {
|
||||
retFuncCheck: func(ctx context.Context, repoOption udmrepo.RepoOptions, readOnly bool) (bool, error) {
|
||||
return true, nil
|
||||
},
|
||||
retFuncCreate: func(ctx context.Context, repoOption udmrepo.RepoOptions) error {
|
||||
@@ -695,7 +695,7 @@ func TestPrepareRepo(t *testing.T) {
|
||||
},
|
||||
},
|
||||
repoService: new(reposervicenmocks.BackupRepoService),
|
||||
retFuncCheck: func(ctx context.Context, repoOption udmrepo.RepoOptions) (bool, error) {
|
||||
retFuncCheck: func(ctx context.Context, repoOption udmrepo.RepoOptions, readOnly bool) (bool, error) {
|
||||
return false, nil
|
||||
},
|
||||
retFuncCreate: func(ctx context.Context, repoOption udmrepo.RepoOptions) error {
|
||||
@@ -716,7 +716,7 @@ func TestPrepareRepo(t *testing.T) {
|
||||
},
|
||||
},
|
||||
repoService: new(reposervicenmocks.BackupRepoService),
|
||||
retFuncCheck: func(ctx context.Context, repoOption udmrepo.RepoOptions) (bool, error) {
|
||||
retFuncCheck: func(ctx context.Context, repoOption udmrepo.RepoOptions, readOnly bool) (bool, error) {
|
||||
return false, nil
|
||||
},
|
||||
retFuncCreate: func(ctx context.Context, repoOption udmrepo.RepoOptions) error {
|
||||
@@ -737,7 +737,7 @@ func TestPrepareRepo(t *testing.T) {
|
||||
},
|
||||
},
|
||||
repoService: new(reposervicenmocks.BackupRepoService),
|
||||
retFuncCheck: func(ctx context.Context, repoOption udmrepo.RepoOptions) (bool, error) {
|
||||
retFuncCheck: func(ctx context.Context, repoOption udmrepo.RepoOptions, readOnly bool) (bool, error) {
|
||||
return false, nil
|
||||
},
|
||||
retFuncCreate: func(ctx context.Context, repoOption udmrepo.RepoOptions) error {
|
||||
@@ -758,7 +758,7 @@ func TestPrepareRepo(t *testing.T) {
|
||||
},
|
||||
},
|
||||
repoService: new(reposervicenmocks.BackupRepoService),
|
||||
retFuncCheck: func(ctx context.Context, repoOption udmrepo.RepoOptions) (bool, error) {
|
||||
retFuncCheck: func(ctx context.Context, repoOption udmrepo.RepoOptions, readOnly bool) (bool, error) {
|
||||
return false, nil
|
||||
},
|
||||
retFuncCreate: func(ctx context.Context, repoOption udmrepo.RepoOptions) error {
|
||||
@@ -785,7 +785,7 @@ func TestPrepareRepo(t *testing.T) {
|
||||
log: velerotest.NewLogger(),
|
||||
}
|
||||
|
||||
tc.repoService.On("IsCreated", mock.Anything, mock.Anything).Return(tc.retFuncCheck)
|
||||
tc.repoService.On("IsReady", mock.Anything, mock.Anything, mock.Anything).Return(tc.retFuncCheck)
|
||||
tc.repoService.On("Create", mock.Anything, mock.Anything, mock.Anything).Return(tc.retFuncCreate)
|
||||
|
||||
if tc.readOnlyBSL {
|
||||
|
||||
Reference in New Issue
Block a user