diff --git a/go.mod b/go.mod index fcae130bb..f8a3bf2e0 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/openshift/hypershift/api v0.0.0-20260524140149-6d994e441608 github.com/sirupsen/logrus v1.9.4 github.com/vmware-tanzu/velero v1.18.1 - github.com/vmware-tanzu/velero/pkg/apis v0.0.0-20260713215154-c825e3c136bc + github.com/vmware-tanzu/velero/pkg/apis v0.0.0 k8s.io/api v0.36.0 k8s.io/apiextensions-apiserver v0.36.0 sigs.k8s.io/controller-runtime v0.24.0 @@ -111,6 +111,8 @@ require ( sigs.k8s.io/yaml v1.6.0 // indirect ) -replace github.com/vmware-tanzu/velero => github.com/openshift/velero v0.10.2-0.20260716151240-e2178e7e7c29 +replace github.com/vmware-tanzu/velero => github.com/openshift/velero v0.10.2-0.20260805134104-2091b09b93bb exclude github.com/kcp-dev/kcp/sdk v0.0.0-00010101000000-000000000000 + +replace github.com/vmware-tanzu/velero/pkg/apis => github.com/openshift/velero/pkg/apis v0.0.0-20260805134104-2091b09b93bb diff --git a/go.sum b/go.sum index 77d5c38b8..a73b3a871 100644 --- a/go.sum +++ b/go.sum @@ -165,8 +165,10 @@ github.com/openshift/hypershift/api v0.0.0-20260524140149-6d994e441608 h1:JxJ4x3 github.com/openshift/hypershift/api v0.0.0-20260524140149-6d994e441608/go.mod h1:ix5Gp7mQxUFIYQWrlC1o/FpXKl2oJVWOHI9UZb0hOUw= github.com/openshift/installer v1.4.22-ec5 h1:NG9X2iZG5mbUVZIBhpMtMrGNK7Tbm9dDGAI6aXh/QZc= github.com/openshift/installer v1.4.22-ec5/go.mod h1:PbGvWlLRbmmSsaTQBAjhXPzliz9XJAYUdXcY0t/3UiY= -github.com/openshift/velero v0.10.2-0.20260716151240-e2178e7e7c29 h1:csf6KeWbu01yvHl7aLjf3l0jnAmRyP+w3MveiorYnz8= -github.com/openshift/velero v0.10.2-0.20260716151240-e2178e7e7c29/go.mod h1:1CKuSsX9EmPmtkIGpjkAC4hVJ22gOCu7kdwYMjEeyOI= +github.com/openshift/velero v0.10.2-0.20260805134104-2091b09b93bb h1:FmyNqhhtdJ2vgIT6XZmIwcs9RHHKS1RuBWqI/S3nkis= +github.com/openshift/velero v0.10.2-0.20260805134104-2091b09b93bb/go.mod h1:v0uPqPhsCaBvT3ObdH07qaHRnG3bE1D8fEaAWlUtWs4= +github.com/openshift/velero/pkg/apis v0.0.0-20260805134104-2091b09b93bb h1:Wezb2zsAX8R0op1YLU0cMO78hA6ZiED4PYXMZZoadDo= +github.com/openshift/velero/pkg/apis v0.0.0-20260805134104-2091b09b93bb/go.mod h1:zxtjtSupjpT6oOO48gvFhOpTl3SOAkCwuGG7BOxN3Fk= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= @@ -205,8 +207,6 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/vmware-tanzu/velero/pkg/apis v0.0.0-20260713215154-c825e3c136bc h1:JwFvio/oC9GFNnTDf5w/Xp7dOh4iMAEQIqCaKMjv49k= -github.com/vmware-tanzu/velero/pkg/apis v0.0.0-20260713215154-c825e3c136bc/go.mod h1:zxtjtSupjpT6oOO48gvFhOpTl3SOAkCwuGG7BOxN3Fk= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= diff --git a/vendor/github.com/vmware-tanzu/velero/internal/resourcepolicies/resource_policies.go b/vendor/github.com/vmware-tanzu/velero/internal/resourcepolicies/resource_policies.go index 867efc74a..235f48ed5 100644 --- a/vendor/github.com/vmware-tanzu/velero/internal/resourcepolicies/resource_policies.go +++ b/vendor/github.com/vmware-tanzu/velero/internal/resourcepolicies/resource_policies.go @@ -30,6 +30,7 @@ import ( crclient "sigs.k8s.io/controller-runtime/pkg/client" velerov1api "github.com/vmware-tanzu/velero/pkg/apis/velero/v1" + datamover "github.com/vmware-tanzu/velero/pkg/util/datamover" "github.com/vmware-tanzu/velero/pkg/util/wildcard" ) @@ -48,6 +49,20 @@ const ( Custom VolumeActionType = "custom" ) +const ( + // DataMoverParameter is the key of the action parameter that selects the data + // mover to be used for the matched volumes when the action type is snapshot. + DataMoverParameter = "dataMover" +) + +// validDataMovers is the set of data mover values accepted in the snapshot +// action's dataMover parameter. +var validDataMovers = map[string]struct{}{ + datamover.DataMoverTypeVelero: {}, + datamover.DataMoverTypeVeleroFs: {}, + datamover.DataMoverTypeVeleroBlock: {}, +} + // Action defined as one action for a specific way of backup type Action struct { // Type defined specific type of action, currently only support 'skip' @@ -56,6 +71,35 @@ type Action struct { Parameters map[string]any `yaml:"parameters,omitempty"` } +// GetDataMover returns the data mover configured in the snapshot action's +// dataMover parameter. The dataMover parameter is only meaningful for the +// snapshot action, so it returns an error when the action is nil or its type is +// not snapshot. When the parameter is absent, it returns the default built-in +// data mover. The empty string and "velero" both denote the default built-in +// data mover and are returned unchanged; normalizing them to the concrete +// default mover is the consuming workflow's responsibility (issue #9830). +func (a *Action) GetDataMover() (string, error) { + if a == nil || a.Type != Snapshot { + return "", fmt.Errorf("the %q parameter is only supported for the %q action", DataMoverParameter, Snapshot) + } + if len(a.Parameters) == 0 { + return datamover.GetDefaultBuiltInDataMover(), nil + } + raw, ok := a.Parameters[DataMoverParameter] + if !ok { + return datamover.GetDefaultBuiltInDataMover(), nil + } + dataMover, ok := raw.(string) + if !ok { + return "", fmt.Errorf("parameter %q must be a string, got %T", DataMoverParameter, raw) + } + if _, ok := validDataMovers[dataMover]; !ok { + return "", fmt.Errorf("invalid %q value %q, valid values are %q, %q, %q", + DataMoverParameter, dataMover, datamover.DataMoverTypeVelero, datamover.DataMoverTypeVeleroFs, datamover.DataMoverTypeVeleroBlock) + } + return dataMover, nil +} + // ResourceFilter defines a filter for specific resource kinds. type ResourceFilter struct { Kinds []string `yaml:"kinds"` diff --git a/vendor/github.com/vmware-tanzu/velero/internal/resourcepolicies/volume_resources_validator.go b/vendor/github.com/vmware-tanzu/velero/internal/resourcepolicies/volume_resources_validator.go index 928e17df6..332f98d2e 100644 --- a/vendor/github.com/vmware-tanzu/velero/internal/resourcepolicies/volume_resources_validator.go +++ b/vendor/github.com/vmware-tanzu/velero/internal/resourcepolicies/volume_resources_validator.go @@ -21,6 +21,8 @@ import ( "github.com/cockroachdb/errors" "go.yaml.in/yaml/v3" + + datamover "github.com/vmware-tanzu/velero/pkg/util/datamover" ) const currentSupportDataVersion = "v1" @@ -99,6 +101,22 @@ func (a *Action) validate() error { return fmt.Errorf("invalid action type %s", a.Type) } - // TODO validate parameters + // validate parameters + if raw, ok := a.Parameters[DataMoverParameter]; ok { + // the dataMover parameter is only meaningful for the snapshot action + if a.Type != Snapshot { + return fmt.Errorf("parameter %q is only supported for the %q action, but the action type is %q", + DataMoverParameter, Snapshot, a.Type) + } + dataMover, ok := raw.(string) + if !ok { + return fmt.Errorf("parameter %q must be a string, got %T", DataMoverParameter, raw) + } + if _, ok := validDataMovers[dataMover]; !ok { + return fmt.Errorf("invalid %q value %q, valid values are %q, %q, %q", + DataMoverParameter, dataMover, datamover.DataMoverTypeVelero, datamover.DataMoverTypeVeleroFs, datamover.DataMoverTypeVeleroBlock) + } + } + return nil } diff --git a/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/backup_repository_types.go b/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/backup_repository_types.go index 8e2b3b715..7789ddd60 100644 --- a/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/backup_repository_types.go +++ b/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/backup_repository_types.go @@ -118,7 +118,7 @@ type BackupRepositoryMaintenanceStatus struct { // +kubebuilder:storageversion // +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp" // +kubebuilder:printcolumn:name="Repository Type",type="string",JSONPath=".spec.repositoryType" -// +// +kubebuilder:resource:shortName=repo type BackupRepository struct { metav1.TypeMeta `json:",inline"` diff --git a/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/backup_types.go b/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/backup_types.go index 24af8132d..e4e734279 100644 --- a/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/backup_types.go +++ b/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/backup_types.go @@ -184,6 +184,10 @@ type BackupSpec struct { // +optional // +nullable UploaderConfig *UploaderConfigForBackup `json:"uploaderConfig,omitempty"` + + // BackupType specifies how volume data is backed up, with possible values including Full and Incremental. + // +optional + BackupType BackupType `json:"backupType,omitempty"` } // UploaderConfigForBackup defines the configuration for the uploader when doing backup. @@ -357,6 +361,15 @@ const ( BackupPhaseDeleting BackupPhase = "Deleting" ) +// BackupType specifies how volume data is backed up, with possible values including Full and Incremental. +// +kubebuilder:validation:Enum=Full;Incremental +type BackupType string + +const ( + BackupTypeFull BackupType = "Full" + BackupTypeIncremental BackupType = "Incremental" +) + // BackupStatus captures the current status of a Velero backup. type BackupStatus struct { // Version is the backup format major version. @@ -503,6 +516,7 @@ type HookStatus struct { // +kubebuilder:storageversion // +kubebuilder:rbac:groups=velero.io,resources=backups,verbs=create;delete;get;list;patch;update;watch // +kubebuilder:rbac:groups=velero.io,resources=backups/status,verbs=get;update;patch +// +kubebuilder:resource:shortName=bak // Backup is a Velero resource that represents the capture of Kubernetes // cluster state at a point in time (API objects and associated volume state). diff --git a/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/delete_backup_request_types.go b/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/delete_backup_request_types.go index 8c7b1fa09..256207f18 100644 --- a/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/delete_backup_request_types.go +++ b/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/delete_backup_request_types.go @@ -58,6 +58,7 @@ type DeleteBackupRequestStatus struct { // +kubebuilder:storageversion // +kubebuilder:printcolumn:name="BackupName",type="string",JSONPath=".spec.backupName",description="The name of the backup to be deleted" // +kubebuilder:printcolumn:name="Status",type="string",JSONPath=".status.phase",description="The status of the deletion request" +// +kubebuilder:resource:shortName=dbr // DeleteBackupRequest is a request to delete one or more backups. type DeleteBackupRequest struct { diff --git a/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/download_request_types.go b/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/download_request_types.go index f23118fe5..5e93862e6 100644 --- a/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/download_request_types.go +++ b/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/download_request_types.go @@ -92,6 +92,7 @@ type DownloadRequestStatus struct { // +kubebuilder:object:root=true // +kubebuilder:object:generate=true // +kubebuilder:storageversion +// +kubebuilder:resource:shortName=dreq // DownloadRequest is a request to download an artifact from backup object storage, such as a backup // log file. diff --git a/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/pod_volume_backup_types.go b/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/pod_volume_backup_types.go index b246906fb..5ad725df1 100644 --- a/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/pod_volume_backup_types.go +++ b/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/pod_volume_backup_types.go @@ -145,6 +145,7 @@ type PodVolumeBackupStatus struct { // +kubebuilder:printcolumn:name="Uploader",type="string",JSONPath=".spec.uploaderType",description="The type of the uploader to handle data transfer" // +kubebuilder:object:root=true // +kubebuilder:object:generate=true +// +kubebuilder:resource:shortName=pvb type PodVolumeBackup struct { metav1.TypeMeta `json:",inline"` diff --git a/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/pod_volume_restore_type.go b/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/pod_volume_restore_type.go index c1d75b71c..96c1a1e4b 100644 --- a/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/pod_volume_restore_type.go +++ b/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/pod_volume_restore_type.go @@ -133,6 +133,7 @@ type PodVolumeRestoreStatus struct { // +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp",description="Time duration since this PodVolumeRestore was created" // +kubebuilder:printcolumn:name="Node",type="string",JSONPath=".status.node",description="Name of the node where the PodVolumeRestore is processed" // +kubebuilder:printcolumn:name="Uploader Type",type="string",JSONPath=".spec.uploaderType",description="The type of the uploader to handle data transfer" +// +kubebuilder:resource:shortName=pvr type PodVolumeRestore struct { metav1.TypeMeta `json:",inline"` diff --git a/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/restore_types.go b/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/restore_types.go index f6e6bf9cf..c01686241 100644 --- a/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/restore_types.go +++ b/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/restore_types.go @@ -411,6 +411,7 @@ type RestoreProgress struct { // +kubebuilder:storageversion // +kubebuilder:rbac:groups=velero.io,resources=restores,verbs=create;delete;get;list;patch;update;watch // +kubebuilder:rbac:groups=velero.io,resources=restores/status,verbs=get;update;patch +// +kubebuilder:resource:shortName=rst // Restore is a Velero resource that represents the application of // resources from a Velero backup to a target Kubernetes cluster. diff --git a/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/schedule_types.go b/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/schedule_types.go index 6a5f885ab..c5248a861 100644 --- a/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/schedule_types.go +++ b/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v1/schedule_types.go @@ -104,6 +104,7 @@ type ScheduleStatus struct { // +kubebuilder:printcolumn:name="LastBackup",type="date",JSONPath=".status.lastBackup",description="The last time a Backup was run for this schedule" // +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp" // +kubebuilder:printcolumn:name="Paused",type="boolean",JSONPath=".spec.paused" +// +kubebuilder:resource:shortName=sched // Schedule is a Velero resource that represents a pre-scheduled or // periodic Backup that should be run. diff --git a/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v2alpha1/data_download_types.go b/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v2alpha1/data_download_types.go index 616876563..220bd382b 100644 --- a/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v2alpha1/data_download_types.go +++ b/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v2alpha1/data_download_types.go @@ -152,6 +152,7 @@ type DataDownloadStatus struct { // +kubebuilder:printcolumn:name="Storage Location",type="string",JSONPath=".spec.backupStorageLocation",description="Name of the Backup Storage Location where the backup data is stored" // +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp",description="Time duration since this DataDownload was created" // +kubebuilder:printcolumn:name="Node",type="string",JSONPath=".status.node",description="Name of the node where the DataDownload is processed" +// +kubebuilder:resource:shortName=dd // DataDownload acts as the protocol between data mover plugins and data mover controller for the datamover restore operation type DataDownload struct { diff --git a/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v2alpha1/data_upload_types.go b/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v2alpha1/data_upload_types.go index 39ae349d6..ac57ad89d 100644 --- a/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v2alpha1/data_upload_types.go +++ b/vendor/github.com/vmware-tanzu/velero/pkg/apis/velero/v2alpha1/data_upload_types.go @@ -197,6 +197,7 @@ type DataUploadStatus struct { // +kubebuilder:printcolumn:name="Storage Location",type="string",JSONPath=".spec.backupStorageLocation",description="Name of the Backup Storage Location where this backup should be stored" // +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp",description="Time duration since this DataUpload was created" // +kubebuilder:printcolumn:name="Node",type="string",JSONPath=".status.node",description="Name of the node where the DataUpload is processed" +// +kubebuilder:resource:shortName=du // DataUpload acts as the protocol between data mover plugins and data mover controller for the datamover backup operation type DataUpload struct { diff --git a/vendor/github.com/vmware-tanzu/velero/pkg/util/datamover/datamover.go b/vendor/github.com/vmware-tanzu/velero/pkg/util/datamover/datamover.go new file mode 100644 index 000000000..59dd1499b --- /dev/null +++ b/vendor/github.com/vmware-tanzu/velero/pkg/util/datamover/datamover.go @@ -0,0 +1,43 @@ +/* +Copyright The Velero Contributors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package datamover holds the shared data mover type identifiers and helpers. +// It must remain a leaf package (stdlib-only imports) so it can be referenced +// from anywhere in the codebase without introducing import cycles. +package datamover + +const ( + // DataMoverTypeVelero refers to the default built-in data mover. The default + // data mover may change among releases; see GetDefaultBuiltInDataMover. + DataMoverTypeVelero = "velero" + // DataMoverTypeVeleroFs refers to the Velero file system data mover. + DataMoverTypeVeleroFs = "velero-fs" + // DataMoverTypeVeleroBlock refers to the Velero block data mover. + DataMoverTypeVeleroBlock = "velero-block" +) + +// IsBuiltInDataMover reports whether the given data mover value refers to a +// Velero built-in data mover (an empty value or the default "velero" alias). +func IsBuiltInDataMover(dataMover string) bool { + return dataMover == "" || dataMover == DataMoverTypeVelero +} + +// GetDefaultBuiltInDataMover returns the data mover used when the default +// built-in data mover ("velero"/empty) is selected. The default may change +// between releases; currently it is the file system data mover. +func GetDefaultBuiltInDataMover() string { + return DataMoverTypeVeleroFs +} diff --git a/vendor/modules.txt b/vendor/modules.txt index 3539b22aa..d379877cb 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -356,7 +356,7 @@ github.com/spf13/cobra # github.com/spf13/pflag v1.0.10 ## explicit; go 1.12 github.com/spf13/pflag -# github.com/vmware-tanzu/velero v1.18.1 => github.com/openshift/velero v0.10.2-0.20260716151240-e2178e7e7c29 +# github.com/vmware-tanzu/velero v1.18.1 => github.com/openshift/velero v0.10.2-0.20260805134104-2091b09b93bb ## explicit; go 1.26.0 github.com/vmware-tanzu/velero/internal/credentials github.com/vmware-tanzu/velero/internal/resourcepolicies @@ -390,13 +390,14 @@ github.com/vmware-tanzu/velero/pkg/types github.com/vmware-tanzu/velero/pkg/uploader github.com/vmware-tanzu/velero/pkg/util/boolptr github.com/vmware-tanzu/velero/pkg/util/collections +github.com/vmware-tanzu/velero/pkg/util/datamover github.com/vmware-tanzu/velero/pkg/util/filesystem github.com/vmware-tanzu/velero/pkg/util/kube github.com/vmware-tanzu/velero/pkg/util/logging github.com/vmware-tanzu/velero/pkg/util/results github.com/vmware-tanzu/velero/pkg/util/wildcard github.com/vmware-tanzu/velero/third_party/kubernetes/pkg/kubectl/cmd/util -# github.com/vmware-tanzu/velero/pkg/apis v0.0.0-20260713215154-c825e3c136bc +# github.com/vmware-tanzu/velero/pkg/apis v0.0.0 => github.com/openshift/velero/pkg/apis v0.0.0-20260805134104-2091b09b93bb ## explicit; go 1.26.0 github.com/vmware-tanzu/velero/pkg/apis/velero/shared github.com/vmware-tanzu/velero/pkg/apis/velero/v1 @@ -1099,4 +1100,5 @@ sigs.k8s.io/structured-merge-diff/v6/value # sigs.k8s.io/yaml v1.6.0 ## explicit; go 1.22 sigs.k8s.io/yaml -# github.com/vmware-tanzu/velero => github.com/openshift/velero v0.10.2-0.20260716151240-e2178e7e7c29 +# github.com/vmware-tanzu/velero => github.com/openshift/velero v0.10.2-0.20260805134104-2091b09b93bb +# github.com/vmware-tanzu/velero/pkg/apis => github.com/openshift/velero/pkg/apis v0.0.0-20260805134104-2091b09b93bb