mirror of
https://github.com/vmware-tanzu/velero.git
synced 2026-01-06 13:26:26 +00:00
Backup entire v1beta1 CRD instead of just changing version string (#2478)
* Switch to backing up v1beta1 CRDs from API server Instead of simply switching out the APIVersion string on a v1 CustomResourceDefinition object, re-download the object from the API server entirely to get the correct fields. This should fix validation errors upon restore. Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Fix existing tests Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Add full example CRDs to automated tests Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Move beta CRD lookup into helper function Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Add case for preserveUnknownFields CRDs Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Add PreserveUnknownFields case and refactor execute Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Add older prometheus CRD test cases Signed-off-by: Nolan Brubaker <brubakern@vmware.com> * Add changelog Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
This commit is contained in:
@@ -20,6 +20,8 @@ import (
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
apiextensions "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
|
||||
|
||||
"github.com/vmware-tanzu/velero/pkg/backup"
|
||||
"github.com/vmware-tanzu/velero/pkg/client"
|
||||
velerodiscovery "github.com/vmware-tanzu/velero/pkg/discovery"
|
||||
@@ -38,7 +40,7 @@ func NewCommand(f client.Factory) *cobra.Command {
|
||||
RegisterBackupItemAction("velero.io/pv", newPVBackupItemAction).
|
||||
RegisterBackupItemAction("velero.io/pod", newPodBackupItemAction).
|
||||
RegisterBackupItemAction("velero.io/service-account", newServiceAccountBackupItemAction(f)).
|
||||
RegisterBackupItemAction("velero.io/crd-remap-version", newRemapCRDVersionAction).
|
||||
RegisterBackupItemAction("velero.io/crd-remap-version", newRemapCRDVersionAction(f)).
|
||||
RegisterRestoreItemAction("velero.io/job", newJobRestoreItemAction).
|
||||
RegisterRestoreItemAction("velero.io/pod", newPodRestoreItemAction).
|
||||
RegisterRestoreItemAction("velero.io/restic", newResticRestoreItemAction(f)).
|
||||
@@ -93,8 +95,20 @@ func newServiceAccountBackupItemAction(f client.Factory) veleroplugin.HandlerIni
|
||||
}
|
||||
}
|
||||
|
||||
func newRemapCRDVersionAction(logger logrus.FieldLogger) (interface{}, error) {
|
||||
return backup.NewRemapCRDVersionAction(logger), nil
|
||||
func newRemapCRDVersionAction(f client.Factory) veleroplugin.HandlerInitializer {
|
||||
return func(logger logrus.FieldLogger) (interface{}, error) {
|
||||
config, err := f.ClientConfig()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
client, err := apiextensions.NewForConfig(config)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return backup.NewRemapCRDVersionAction(logger, client.ApiextensionsV1beta1().CustomResourceDefinitions()), nil
|
||||
}
|
||||
}
|
||||
|
||||
func newJobRestoreItemAction(logger logrus.FieldLogger) (interface{}, error) {
|
||||
|
||||
Reference in New Issue
Block a user