mirror of
https://github.com/vmware-tanzu/velero.git
synced 2026-09-30 19:55:36 +00:00
Fix missing gcFailureBSLUnavailable label during garbage collection (#10154)
Run the E2E test on kind / setup-test-matrix (push) Successful in 4s
e2e-test-kind.yaml / extract (push) Failing after 6s
Run the E2E test on kind / get-go-version (push) Failing after 7s
Run the E2E test on kind / build (push) Skipped
Run the E2E test on kind / run-e2e-test (push) Skipped
push.yml / extract (push) Failing after 5s
Main CI / get-go-version (push) Failing after 6s
Main CI / Build (push) Skipped
Run the E2E test on kind / setup-test-matrix (push) Successful in 4s
e2e-test-kind.yaml / extract (push) Failing after 6s
Run the E2E test on kind / get-go-version (push) Failing after 7s
Run the E2E test on kind / build (push) Skipped
Run the E2E test on kind / run-e2e-test (push) Skipped
push.yml / extract (push) Failing after 5s
Main CI / get-go-version (push) Failing after 6s
Main CI / Build (push) Skipped
* Fix gcFailureBSLUnavailable label not applied (Issue #10153) Signed-off-by: aftab <aftab123215@gmail.com> * Fix linter error: use require.NoError before checking label Signed-off-by: aftab <aftab123215@gmail.com> --------- Signed-off-by: aftab <aftab123215@gmail.com>
This commit is contained in:
@@ -156,6 +156,10 @@ func (c *gcReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Re
|
|||||||
|
|
||||||
if !veleroutil.BSLIsAvailable(*loc) {
|
if !veleroutil.BSLIsAvailable(*loc) {
|
||||||
log.Infof("BSL %s is unavailable, cannot gc backup", loc.Name)
|
log.Infof("BSL %s is unavailable, cannot gc backup", loc.Name)
|
||||||
|
backup.Labels[garbageCollectionFailure] = gcFailureBSLUnavailable
|
||||||
|
if err := c.Update(ctx, backup); err != nil {
|
||||||
|
log.WithError(err).Error("error updating backup labels")
|
||||||
|
}
|
||||||
return ctrl.Result{}, fmt.Errorf("bsl %s is unavailable, cannot gc backup", loc.Name)
|
return ctrl.Result{}, fmt.Errorf("bsl %s is unavailable, cannot gc backup", loc.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
@@ -48,11 +49,12 @@ func TestGCReconcile(t *testing.T) {
|
|||||||
defaultBackupLocation := builder.ForBackupStorageLocation(velerov1api.DefaultNamespace, "default").Phase(velerov1api.BackupStorageLocationPhaseAvailable).Result()
|
defaultBackupLocation := builder.ForBackupStorageLocation(velerov1api.DefaultNamespace, "default").Phase(velerov1api.BackupStorageLocationPhaseAvailable).Result()
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
backup *velerov1api.Backup
|
backup *velerov1api.Backup
|
||||||
deleteBackupRequests []*velerov1api.DeleteBackupRequest
|
deleteBackupRequests []*velerov1api.DeleteBackupRequest
|
||||||
backupLocation *velerov1api.BackupStorageLocation
|
backupLocation *velerov1api.BackupStorageLocation
|
||||||
expectError bool
|
expectError bool
|
||||||
|
expectedGCFailureLabel string
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "can't find backup - no error",
|
name: "can't find backup - no error",
|
||||||
@@ -118,10 +120,11 @@ func TestGCReconcile(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "BSL is unavailable",
|
name: "BSL is unavailable",
|
||||||
backup: defaultBackup().Expiration(fakeClock.Now().Add(-time.Second)).StorageLocation("default").Result(),
|
backup: defaultBackup().Expiration(fakeClock.Now().Add(-time.Second)).StorageLocation("default").Result(),
|
||||||
backupLocation: builder.ForBackupStorageLocation(velerov1api.DefaultNamespace, "default").Phase(velerov1api.BackupStorageLocationPhaseUnavailable).Result(),
|
backupLocation: builder.ForBackupStorageLocation(velerov1api.DefaultNamespace, "default").Phase(velerov1api.BackupStorageLocationPhaseUnavailable).Result(),
|
||||||
expectError: true,
|
expectError: true,
|
||||||
|
expectedGCFailureLabel: gcFailureBSLUnavailable,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -147,6 +150,12 @@ func TestGCReconcile(t *testing.T) {
|
|||||||
_, err := reconciler.Reconcile(t.Context(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: test.backup.Namespace, Name: test.backup.Name}})
|
_, err := reconciler.Reconcile(t.Context(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: test.backup.Namespace, Name: test.backup.Name}})
|
||||||
gotErr := err != nil
|
gotErr := err != nil
|
||||||
assert.Equal(t, test.expectError, gotErr)
|
assert.Equal(t, test.expectError, gotErr)
|
||||||
|
|
||||||
|
if test.expectedGCFailureLabel != "" {
|
||||||
|
updatedBackup := &velerov1api.Backup{}
|
||||||
|
require.NoError(t, fakeClient.Get(t.Context(), types.NamespacedName{Namespace: test.backup.Namespace, Name: test.backup.Name}, updatedBackup))
|
||||||
|
assert.Equal(t, test.expectedGCFailureLabel, updatedBackup.Labels[garbageCollectionFailure])
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user