Skip to content

Commit

Permalink
Merge branch 'main' into update_golang_version_new
Browse files Browse the repository at this point in the history
Signed-off-by: Xun Jiang/Bruce Jiang <59276555+blackpiglet@users.noreply.github.com>
Signed-off-by: Xun Jiang <blackpiglet@gmail.com>
  • Loading branch information
blackpiglet authored and Xun Jiang committed Apr 4, 2023
2 parents fc692c4 + 491664e commit 4dbffa4
Show file tree
Hide file tree
Showing 23 changed files with 209 additions and 26 deletions.
1 change: 1 addition & 0 deletions changelogs/unreleased/6041-sseago
@@ -0,0 +1 @@
Fixed backup deletion bug related to async operations
1 change: 1 addition & 0 deletions changelogs/unreleased/6057-ywk253100
@@ -0,0 +1 @@
Restore Services before Clusters
1 change: 0 additions & 1 deletion hack/update-3generated-crd-code.sh
Expand Up @@ -33,7 +33,6 @@ fi
# get code-generation tools (for now keep in GOPATH since they're not fully modules-compatible yet)
mkdir -p ${GOPATH}/src/k8s.io
pushd ${GOPATH}/src/k8s.io
git config --global advice.detachedHead false
git clone -b v0.25.6 https://github.com/kubernetes/code-generator
popd

Expand Down
6 changes: 3 additions & 3 deletions pkg/backup/item_backupper.go
Expand Up @@ -323,11 +323,11 @@ func (ib *itemBackupper) executeActions(
continue
}
log.Info("Executing custom action")

if act, err := ib.getMatchAction(obj, groupResource, action.Name()); err != nil {
actionName := action.Name()
if act, err := ib.getMatchAction(obj, groupResource, actionName); err != nil {
return nil, itemFiles, errors.WithStack(err)
} else if act != nil && act.Type == resourcepolicies.Skip {
log.Infof("skip snapshot of pvc %s/%s bound pv for the matched resource policies", namespace, name)
log.Infof("Skip executing Backup Item Action: %s of resource %s: %s/%s for the matched resource policies", actionName, groupResource, namespace, name)
continue
}

Expand Down
2 changes: 2 additions & 0 deletions pkg/cmd/server/server.go
Expand Up @@ -543,6 +543,7 @@ var defaultRestorePriorities = restore.Priorities{
// in the backup.
"replicasets.apps",
"clusterclasses.cluster.x-k8s.io",
"services",
},
LowPriorities: []string{
"clusterbootstraps.run.tanzu.vmware.com",
Expand Down Expand Up @@ -805,6 +806,7 @@ func (s *server) runControllers(defaultVolumeSnapshotLocations map[string]string
clock.RealClock{},
backupper,
newPluginManager,
backupTracker,
backupStoreGetter,
s.logger,
s.metrics,
Expand Down
7 changes: 6 additions & 1 deletion pkg/controller/backup_controller.go
Expand Up @@ -267,7 +267,12 @@ func (b *backupReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr
}

b.backupTracker.Add(request.Namespace, request.Name)
defer b.backupTracker.Delete(request.Namespace, request.Name)
defer func() {
switch request.Status.Phase {
case velerov1api.BackupPhaseCompleted, velerov1api.BackupPhasePartiallyFailed, velerov1api.BackupPhaseFailed, velerov1api.BackupPhaseFailedValidation:
b.backupTracker.Delete(request.Namespace, request.Name)
}
}()

log.Debug("Running backup")

Expand Down
7 changes: 7 additions & 0 deletions pkg/controller/backup_finalizer_controller.go
Expand Up @@ -44,6 +44,7 @@ type backupFinalizerReconciler struct {
clock clocks.WithTickerAndDelayedExecution
backupper pkgbackup.Backupper
newPluginManager func(logrus.FieldLogger) clientmgmt.Manager
backupTracker BackupTracker
metrics *metrics.ServerMetrics
backupStoreGetter persistence.ObjectBackupStoreGetter
log logrus.FieldLogger
Expand All @@ -55,6 +56,7 @@ func NewBackupFinalizerReconciler(
clock clocks.WithTickerAndDelayedExecution,
backupper pkgbackup.Backupper,
newPluginManager func(logrus.FieldLogger) clientmgmt.Manager,
backupTracker BackupTracker,
backupStoreGetter persistence.ObjectBackupStoreGetter,
log logrus.FieldLogger,
metrics *metrics.ServerMetrics,
Expand All @@ -64,6 +66,7 @@ func NewBackupFinalizerReconciler(
clock: clock,
backupper: backupper,
newPluginManager: newPluginManager,
backupTracker: backupTracker,
backupStoreGetter: backupStoreGetter,
log: log,
metrics: metrics,
Expand Down Expand Up @@ -102,6 +105,10 @@ func (r *backupFinalizerReconciler) Reconcile(ctx context.Context, req ctrl.Requ

original := backup.DeepCopy()
defer func() {
switch backup.Status.Phase {
case velerov1api.BackupPhaseCompleted, velerov1api.BackupPhasePartiallyFailed, velerov1api.BackupPhaseFailed, velerov1api.BackupPhaseFailedValidation:
r.backupTracker.Delete(backup.Namespace, backup.Name)
}
// Always attempt to Patch the backup object and status after each reconciliation.
if err := r.client.Patch(ctx, backup, kbclient.MergeFrom(original)); err != nil {
log.WithError(err).Error("Error updating backup")
Expand Down
1 change: 1 addition & 0 deletions pkg/controller/backup_finalizer_controller_test.go
Expand Up @@ -52,6 +52,7 @@ func mockBackupFinalizerReconciler(fakeClient kbclient.Client, fakeClock *testcl
fakeClock,
backupper,
func(logrus.FieldLogger) clientmgmt.Manager { return pluginManager },
NewBackupTracker(),
NewFakeSingleObjectBackupStoreGetter(backupStore),
logrus.StandardLogger(),
metrics.NewServerMetrics(),
Expand Down
38 changes: 31 additions & 7 deletions pkg/generated/clientset/versioned/clientset.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions site/content/docs/main/api-types/backup.md
Expand Up @@ -37,6 +37,11 @@ spec:
# asynchronous BackupItemAction operations
# The default value is 1 hour.
itemOperationTimeout: 1h
# resourcePolicy specifies the referenced resource policies that backup should follow
# optional
resourcePolicy:
kind: configmap
name: resource-policy-configmap
# Array of namespaces to include in the backup. If unspecified, all namespaces are included.
# Optional.
includedNamespaces:
Expand Down

0 comments on commit 4dbffa4

Please sign in to comment.