-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix issue#2413: treat namespaces with exclude label as excludedNamespaces #5178
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
Treat namespaces with exclude label as excludedNamespaces | ||
Related issue: #2413 |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -70,6 +70,7 @@ import ( | |
"github.com/vmware-tanzu/velero/pkg/util/logging" | ||
"github.com/vmware-tanzu/velero/pkg/volume" | ||
|
||
corev1api "k8s.io/api/core/v1" | ||
kbclient "sigs.k8s.io/controller-runtime/pkg/client" | ||
) | ||
|
||
|
@@ -257,7 +258,6 @@ func (c *backupController) processBackup(key string) error { | |
|
||
log.Debug("Preparing backup request") | ||
request := c.prepareBackupRequest(original) | ||
|
||
if len(request.Status.ValidationErrors) > 0 { | ||
request.Status.Phase = velerov1api.BackupPhaseFailedValidation | ||
} else { | ||
|
@@ -436,6 +436,15 @@ func (c *backupController) prepareBackupRequest(backup *velerov1api.Backup) *pkg | |
request.Annotations[velerov1api.SourceClusterK8sMajorVersionAnnotation] = c.discoveryHelper.ServerVersion().Major | ||
request.Annotations[velerov1api.SourceClusterK8sMinorVersionAnnotation] = c.discoveryHelper.ServerVersion().Minor | ||
|
||
// Add namespaces with label velero.io/exclude-from-backup=true into request.Spec.ExcludedNamespaces | ||
// Essentially, adding the label velero.io/exclude-from-backup=true to a namespace would be equivalent to setting spec.ExcludedNamespaces | ||
namespaces, excludeLabel := corev1api.NamespaceList{}, "velero.io/exclude-from-backup" | ||
if err := c.kbClient.List(context.Background(), &namespaces, kbclient.MatchingLabels{excludeLabel: "true"}); err == nil { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is not a validation error strictly speaking but I don't think it's right to eat the error. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Seems it's better to append the potential err into request.Status.ValidationErrors with explicit err message. |
||
for _, ns := range namespaces.Items { | ||
request.Spec.ExcludedNamespaces = append(request.Spec.ExcludedNamespaces, ns.Name) | ||
} | ||
} | ||
|
||
// validate the included/excluded resources | ||
for _, err := range collections.ValidateIncludesExcludes(request.Spec.IncludedResources, request.Spec.ExcludedResources) { | ||
request.Status.ValidationErrors = append(request.Status.ValidationErrors, fmt.Sprintf("Invalid included/excluded resource lists: %v", err)) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is trivial but it seems we don't need
excludeLabel
as a variable.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would it be better if I move excludeLabel to pkg/controller/constants.go as a const or simply define it as const on the top of the code?