mirror of
https://github.com/vmware-tanzu/velero.git
synced 2026-09-20 06:54:32 +00:00
allow individual backup storage locations to be read-only (#1517)
* allow individual backup storage locations to be read-only Signed-off-by: Steve Kriss <krisss@vmware.com>
This commit is contained in:
committed by
Nolan Brubaker
parent
4e2e4cd5c4
commit
411d44a673
@@ -45,6 +45,7 @@ type gcController struct {
|
||||
backupLister listers.BackupLister
|
||||
deleteBackupRequestLister listers.DeleteBackupRequestLister
|
||||
deleteBackupRequestClient velerov1client.DeleteBackupRequestsGetter
|
||||
backupLocationLister listers.BackupStorageLocationLister
|
||||
|
||||
clock clock.Clock
|
||||
}
|
||||
@@ -55,6 +56,7 @@ func NewGCController(
|
||||
backupInformer informers.BackupInformer,
|
||||
deleteBackupRequestInformer informers.DeleteBackupRequestInformer,
|
||||
deleteBackupRequestClient velerov1client.DeleteBackupRequestsGetter,
|
||||
backupLocationInformer informers.BackupStorageLocationInformer,
|
||||
) Interface {
|
||||
c := &gcController{
|
||||
genericController: newGenericController("gc-controller", logger),
|
||||
@@ -62,12 +64,14 @@ func NewGCController(
|
||||
backupLister: backupInformer.Lister(),
|
||||
deleteBackupRequestLister: deleteBackupRequestInformer.Lister(),
|
||||
deleteBackupRequestClient: deleteBackupRequestClient,
|
||||
backupLocationLister: backupLocationInformer.Lister(),
|
||||
}
|
||||
|
||||
c.syncHandler = c.processQueueItem
|
||||
c.cacheSyncWaiters = append(c.cacheSyncWaiters,
|
||||
backupInformer.Informer().HasSynced,
|
||||
deleteBackupRequestInformer.Informer().HasSynced,
|
||||
backupLocationInformer.Informer().HasSynced,
|
||||
)
|
||||
|
||||
c.resyncPeriod = GCSyncPeriod
|
||||
@@ -133,6 +137,19 @@ func (c *gcController) processQueueItem(key string) error {
|
||||
|
||||
log.Info("Backup has expired")
|
||||
|
||||
loc, err := c.backupLocationLister.BackupStorageLocations(ns).Get(backup.Spec.StorageLocation)
|
||||
if apierrors.IsNotFound(err) {
|
||||
log.Warnf("Backup cannot be garbage-collected because backup storage location %s does not exist", backup.Spec.StorageLocation)
|
||||
}
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "error getting backup storage location")
|
||||
}
|
||||
|
||||
if loc.Spec.AccessMode == velerov1api.BackupStorageLocationAccessModeReadOnly {
|
||||
log.Infof("Backup cannot be garbage-collected because backup storage location %s is currently in read-only mode", loc.Name)
|
||||
return nil
|
||||
}
|
||||
|
||||
selector := labels.SelectorFromSet(labels.Set(map[string]string{
|
||||
velerov1api.BackupNameLabel: label.GetValidName(backup.Name),
|
||||
velerov1api.BackupUIDLabel: string(backup.UID),
|
||||
|
||||
Reference in New Issue
Block a user