Skip to content

Commit 0d5ba7b

Browse files
authored
Add support for legacy aws plugin (#1565)
1 parent 20d8c61 commit 0d5ba7b

18 files changed

+256
-43
lines changed

README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ Periodic AWS E2E Virtualization Tests in OpenShift 4.17
2525
[![VM tests](https://prow.ci.openshift.org/badge.svg?jobs=periodic-ci-openshift-oadp-operator-master-4.17-e2e-test-kubevirt-aws-periodic)](https://prow.ci.openshift.org/job-history/gs/origin-ci-test/logs/periodic-ci-openshift-oadp-operator-master-4.17-e2e-test-kubevirt-aws-periodic)
2626

2727
OADP repositories images job
28-
| OADP | OpenShift Velero plugin | Velero | Velero plugin for AWS | Velero plugin for GCP | Velero plugin for Microsoft Azure | Non Admin |
29-
| ---------- | ---------- | ---------- | ---------- | ---------- | ---------- | ---------- |
30-
| [![OADP repository](https://prow.ci.openshift.org/badge.svg?jobs=branch-ci-openshift-oadp-operator-master-images)](https://prow.ci.openshift.org/job-history/gs/test-platform-results/logs/branch-ci-openshift-oadp-operator-master-images) | [![OpenShift Velero plugin repository](https://prow.ci.openshift.org/badge.svg?jobs=branch-ci-openshift-openshift-velero-plugin-master-images)](https://prow.ci.openshift.org/job-history/gs/test-platform-results/logs/branch-ci-openshift-openshift-velero-plugin-master-images) | [![OADP's Velero repository](https://prow.ci.openshift.org/badge.svg?jobs=branch-ci-openshift-velero-konveyor-dev-images)](https://prow.ci.openshift.org/job-history/gs/test-platform-results/logs/branch-ci-openshift-velero-konveyor-dev-images) | [![OADP's Velero plugin for AWS repository](https://prow.ci.openshift.org/badge.svg?jobs=branch-ci-openshift-velero-plugin-for-aws-konveyor-dev-images)](https://prow.ci.openshift.org/job-history/gs/test-platform-results/logs/branch-ci-openshift-velero-plugin-for-aws-konveyor-dev-images) | [![OADP's Velero plugin for GCP repository](https://prow.ci.openshift.org/badge.svg?jobs=branch-ci-openshift-velero-plugin-for-gcp-konveyor-dev-images)](https://prow.ci.openshift.org/job-history/gs/test-platform-results/logs/branch-ci-openshift-velero-plugin-for-gcp-konveyor-dev-images) | [![OADP's Velero plugin for Microsoft Azure repository](https://prow.ci.openshift.org/badge.svg?jobs=branch-ci-openshift-velero-plugin-for-microsoft-azure-konveyor-dev-images)](https://prow.ci.openshift.org/job-history/gs/test-platform-results/logs/branch-ci-openshift-velero-plugin-for-microsoft-azure-konveyor-dev-images) | [![Non Admin repository](https://prow.ci.openshift.org/badge.svg?jobs=branch-ci-migtools-oadp-non-admin-master-images)](https://prow.ci.openshift.org/job-history/gs/test-platform-results/logs/branch-ci-migtools-oadp-non-admin-master-images) |
28+
| OADP | OpenShift Velero plugin | Velero | Velero plugin for AWS | Velero plugin for Legacy AWS | Velero plugin for GCP | Velero plugin for Microsoft Azure | Non Admin |
29+
| ---------- | ---------- | ---------- | ---------- | ---------- | ---------- | ---------- | ---------- |
30+
| [![OADP repository](https://prow.ci.openshift.org/badge.svg?jobs=branch-ci-openshift-oadp-operator-master-images)](https://prow.ci.openshift.org/job-history/gs/test-platform-results/logs/branch-ci-openshift-oadp-operator-master-images) | [![OpenShift Velero plugin repository](https://prow.ci.openshift.org/badge.svg?jobs=branch-ci-openshift-openshift-velero-plugin-master-images)](https://prow.ci.openshift.org/job-history/gs/test-platform-results/logs/branch-ci-openshift-openshift-velero-plugin-master-images) | [![OADP's Velero repository](https://prow.ci.openshift.org/badge.svg?jobs=branch-ci-openshift-velero-konveyor-dev-images)](https://prow.ci.openshift.org/job-history/gs/test-platform-results/logs/branch-ci-openshift-velero-konveyor-dev-images) | [![OADP's Velero plugin for AWS repository](https://prow.ci.openshift.org/badge.svg?jobs=branch-ci-openshift-velero-plugin-for-aws-konveyor-dev-images)](https://prow.ci.openshift.org/job-history/gs/test-platform-results/logs/branch-ci-openshift-velero-plugin-for-aws-konveyor-dev-images) | [![OADP's Velero plugin for Legacy AWS repository](https://prow.ci.openshift.org/badge.svg?jobs=branch-ci-openshift-velero-plugin-for-legacy-aws-konveyor-dev-images)](https://prow.ci.openshift.org/job-history/gs/test-platform-results/logs/branch-ci-openshift-velero-plugin-for-legacy-aws-konveyor-dev-images) | [![OADP's Velero plugin for GCP repository](https://prow.ci.openshift.org/badge.svg?jobs=branch-ci-openshift-velero-plugin-for-gcp-konveyor-dev-images)](https://prow.ci.openshift.org/job-history/gs/test-platform-results/logs/branch-ci-openshift-velero-plugin-for-gcp-konveyor-dev-images) | [![OADP's Velero plugin for Microsoft Azure repository](https://prow.ci.openshift.org/badge.svg?jobs=branch-ci-openshift-velero-plugin-for-microsoft-azure-konveyor-dev-images)](https://prow.ci.openshift.org/job-history/gs/test-platform-results/logs/branch-ci-openshift-velero-plugin-for-microsoft-azure-konveyor-dev-images) | [![Non Admin repository](https://prow.ci.openshift.org/badge.svg?jobs=branch-ci-migtools-oadp-non-admin-master-images)](https://prow.ci.openshift.org/job-history/gs/test-platform-results/logs/branch-ci-migtools-oadp-non-admin-master-images) |
3131

3232
Mirroring images to quay.io [![Mirror images](https://prow.ci.openshift.org/badge.svg?jobs=periodic-image-mirroring-konveyor)](https://prow.ci.openshift.org/job-history/gs/origin-ci-test/logs/periodic-image-mirroring-konveyor)
3333
</div>

api/v1alpha1/oadp_types.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,11 @@ const ReconcileCompleteMessage = "Reconcile complete"
3535
const OadpOperatorLabel = "openshift.io/oadp"
3636
const RegistryDeploymentLabel = "openshift.io/oadp-registry"
3737

38-
// +kubebuilder:validation:Enum=aws;gcp;azure;csi;vsm;openshift;kubevirt
38+
// +kubebuilder:validation:Enum=aws;legacy-aws;gcp;azure;csi;vsm;openshift;kubevirt
3939
type DefaultPlugin string
4040

4141
const DefaultPluginAWS DefaultPlugin = "aws"
42+
const DefaultPluginLegacyAWS DefaultPlugin = "legacy-aws"
4243
const DefaultPluginGCP DefaultPlugin = "gcp"
4344
const DefaultPluginMicrosoftAzure DefaultPlugin = "azure"
4445
const DefaultPluginCSI DefaultPlugin = "csi"
@@ -56,6 +57,7 @@ type UnsupportedImageKey string
5657

5758
const VeleroImageKey UnsupportedImageKey = "veleroImageFqin"
5859
const AWSPluginImageKey UnsupportedImageKey = "awsPluginImageFqin"
60+
const LegacyAWSPluginImageKey UnsupportedImageKey = "legacyAWSPluginImageFqin"
5961
const OpenShiftPluginImageKey UnsupportedImageKey = "openshiftPluginImageFqin"
6062
const AzurePluginImageKey UnsupportedImageKey = "azurePluginImageFqin"
6163
const GCPPluginImageKey UnsupportedImageKey = "gcpPluginImageFqin"
@@ -544,6 +546,7 @@ type DataProtectionApplicationSpec struct {
544546
// Available keys are:
545547
// - veleroImageFqin
546548
// - awsPluginImageFqin
549+
// - legacyAWSPluginImageFqin
547550
// - openshiftPluginImageFqin
548551
// - azurePluginImageFqin
549552
// - gcpPluginImageFqin

bundle/manifests/oadp-operator.clusterserviceversion.yaml

+4
Original file line numberDiff line numberDiff line change
@@ -917,6 +917,8 @@ spec:
917917
value: quay.io/konveyor/openshift-velero-plugin:latest
918918
- name: RELATED_IMAGE_VELERO_PLUGIN_FOR_AWS
919919
value: quay.io/konveyor/velero-plugin-for-aws:latest
920+
- name: RELATED_IMAGE_VELERO_PLUGIN_FOR_LEGACY_AWS
921+
value: quay.io/konveyor/velero-plugin-for-legacy-aws:latest
920922
- name: RELATED_IMAGE_VELERO_PLUGIN_FOR_MICROSOFT_AZURE
921923
value: quay.io/konveyor/velero-plugin-for-microsoft-azure:latest
922924
- name: RELATED_IMAGE_VELERO_PLUGIN_FOR_GCP
@@ -1068,6 +1070,8 @@ spec:
10681070
name: openshift-velero-plugin
10691071
- image: quay.io/konveyor/velero-plugin-for-aws:latest
10701072
name: velero-plugin-for-aws
1073+
- image: quay.io/konveyor/velero-plugin-for-legacy-aws:latest
1074+
name: velero-plugin-for-legacy-aws
10711075
- image: quay.io/konveyor/velero-plugin-for-microsoft-azure:latest
10721076
name: velero-plugin-for-microsoft-azure
10731077
- image: quay.io/konveyor/velero-plugin-for-gcp:latest

bundle/manifests/oadp.openshift.io_dataprotectionapplications.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -824,6 +824,7 @@ spec:
824824
items:
825825
enum:
826826
- aws
827+
- legacy-aws
827828
- gcp
828829
- azure
829830
- csi
@@ -1324,6 +1325,7 @@ spec:
13241325
Available keys are:
13251326
- veleroImageFqin
13261327
- awsPluginImageFqin
1328+
- legacyAWSPluginImageFqin
13271329
- openshiftPluginImageFqin
13281330
- azurePluginImageFqin
13291331
- gcpPluginImageFqin

config/crd/bases/oadp.openshift.io_dataprotectionapplications.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -824,6 +824,7 @@ spec:
824824
items:
825825
enum:
826826
- aws
827+
- legacy-aws
827828
- gcp
828829
- azure
829830
- csi
@@ -1324,6 +1325,7 @@ spec:
13241325
Available keys are:
13251326
- veleroImageFqin
13261327
- awsPluginImageFqin
1328+
- legacyAWSPluginImageFqin
13271329
- openshiftPluginImageFqin
13281330
- azurePluginImageFqin
13291331
- gcpPluginImageFqin

config/manager/manager.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ spec:
5050
value: quay.io/konveyor/openshift-velero-plugin:latest
5151
- name: RELATED_IMAGE_VELERO_PLUGIN_FOR_AWS
5252
value: quay.io/konveyor/velero-plugin-for-aws:latest
53+
- name: RELATED_IMAGE_VELERO_PLUGIN_FOR_LEGACY_AWS
54+
value: quay.io/konveyor/velero-plugin-for-legacy-aws:latest
5355
- name: RELATED_IMAGE_VELERO_PLUGIN_FOR_MICROSOFT_AZURE
5456
value: quay.io/konveyor/velero-plugin-for-microsoft-azure:latest
5557
- name: RELATED_IMAGE_VELERO_PLUGIN_FOR_GCP

controllers/bsl.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414

1515
oadpv1alpha1 "github.com/openshift/oadp-operator/api/v1alpha1"
1616
"github.com/openshift/oadp-operator/pkg/common"
17+
"github.com/openshift/oadp-operator/pkg/credentials"
1718
"github.com/openshift/oadp-operator/pkg/storage/aws"
1819
)
1920

@@ -398,9 +399,9 @@ func (r *DPAReconciler) validateGCPBackupStorageLocation(bslSpec velerov1.Backup
398399
return nil
399400
}
400401

401-
func pluginExistsInVeleroCR(configuredPlugins []oadpv1alpha1.DefaultPlugin, expectedPlugin oadpv1alpha1.DefaultPlugin) bool {
402+
func pluginExistsInVeleroCR(configuredPlugins []oadpv1alpha1.DefaultPlugin, expectedProvider string) bool {
402403
for _, plugin := range configuredPlugins {
403-
if plugin == expectedPlugin {
404+
if credentials.PluginSpecificFields[plugin].ProviderName == expectedProvider {
404405
return true
405406
}
406407
}
@@ -412,7 +413,7 @@ func (r *DPAReconciler) validateProviderPluginAndSecret(bslSpec velerov1.BackupS
412413
return nil
413414
}
414415
// check for existence of provider plugin and warn if the plugin is absent
415-
if !pluginExistsInVeleroCR(r.dpa.Spec.Configuration.Velero.DefaultPlugins, oadpv1alpha1.DefaultPlugin(bslSpec.Provider)) {
416+
if !pluginExistsInVeleroCR(r.dpa.Spec.Configuration.Velero.DefaultPlugins, bslSpec.Provider) {
416417
r.Log.Info(fmt.Sprintf("%s backupstoragelocation is configured but velero plugin for %s is not present", bslSpec.Provider, bslSpec.Provider))
417418
//TODO: set warning condition on Velero CR
418419
}

controllers/validator.go

+16-1
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,19 @@ func (r *DPAReconciler) ValidateVeleroPlugins(log logr.Logger) (bool, error) {
104104
}
105105
}
106106

107+
foundAWSPlugin := false
108+
foundLegacyAWSPlugin := false
107109
for _, plugin := range dpa.Spec.Configuration.Velero.DefaultPlugins {
108110
pluginSpecificMap, ok := credentials.PluginSpecificFields[plugin]
109-
pluginNeedsCheck, foundInBSLorVSL := providerNeedsDefaultCreds[string(plugin)]
111+
pluginNeedsCheck, foundInBSLorVSL := providerNeedsDefaultCreds[pluginSpecificMap.ProviderName]
112+
113+
// "aws" and "legacy-aws" cannot both be specified
114+
if plugin == oadpv1alpha1.DefaultPluginAWS {
115+
foundAWSPlugin = true
116+
}
117+
if plugin == oadpv1alpha1.DefaultPluginLegacyAWS {
118+
foundLegacyAWSPlugin = true
119+
}
110120

111121
// check for VSM/Volsync DataMover (OADP 1.2 or below) syntax
112122
if plugin == oadpv1alpha1.DefaultPluginVSM {
@@ -155,5 +165,10 @@ func (r *DPAReconciler) ValidateVeleroPlugins(log logr.Logger) (bool, error) {
155165
}
156166
}
157167
}
168+
169+
if foundAWSPlugin && foundLegacyAWSPlugin {
170+
return false, fmt.Errorf("%s and %s can not be both specified in DPA spec.configuration.velero.defaultPlugins", oadpv1alpha1.DefaultPluginAWS, oadpv1alpha1.DefaultPluginLegacyAWS)
171+
}
172+
158173
return true, nil
159174
}

controllers/validator_test.go

+25-1
Original file line numberDiff line numberDiff line change
@@ -1396,6 +1396,30 @@ func TestDPAReconciler_ValidateDataProtectionCR(t *testing.T) {
13961396
wantErr: true,
13971397
messageErr: "in order to enable/disable the non-admin feature please set dpa.spec.unsupportedOverrides[tech-preview-ack]: 'true'",
13981398
},
1399+
{
1400+
name: "given invalid DPA CR aws and legacy-aws plugins both specified",
1401+
dpa: &oadpv1alpha1.DataProtectionApplication{
1402+
ObjectMeta: metav1.ObjectMeta{
1403+
Name: "test-DPA-CR",
1404+
Namespace: "test-ns",
1405+
},
1406+
Spec: oadpv1alpha1.DataProtectionApplicationSpec{
1407+
Configuration: &oadpv1alpha1.ApplicationConfig{
1408+
Velero: &oadpv1alpha1.VeleroConfig{
1409+
DefaultPlugins: []oadpv1alpha1.DefaultPlugin{
1410+
oadpv1alpha1.DefaultPluginAWS,
1411+
oadpv1alpha1.DefaultPluginLegacyAWS,
1412+
},
1413+
NoDefaultBackupLocation: true,
1414+
},
1415+
},
1416+
BackupImages: pointer.Bool(false),
1417+
},
1418+
},
1419+
objects: []client.Object{},
1420+
wantErr: true,
1421+
messageErr: "aws and legacy-aws can not be both specified in DPA spec.configuration.velero.defaultPlugins",
1422+
},
13991423
}
14001424
for _, tt := range tests {
14011425
tt.objects = append(tt.objects, tt.dpa)
@@ -1421,7 +1445,7 @@ func TestDPAReconciler_ValidateDataProtectionCR(t *testing.T) {
14211445
t.Errorf("ValidateDataProtectionCR() error = %v, wantErr %v", err, tt.wantErr)
14221446
return
14231447
}
1424-
if tt.wantErr && err.Error() != tt.messageErr {
1448+
if tt.wantErr && err != nil && err.Error() != tt.messageErr {
14251449
t.Errorf("Error messages are not the same: got %v, expected %v", err.Error(), tt.messageErr)
14261450
return
14271451
}

controllers/velero.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -412,15 +412,15 @@ func (r *DPAReconciler) appendPluginSpecificSpecs(veleroDeployment *appsv1.Deplo
412412

413413
for _, plugin := range dpa.Spec.Configuration.Velero.DefaultPlugins {
414414
if pluginSpecificMap, ok := credentials.PluginSpecificFields[plugin]; ok {
415-
imagePullPolicy, err := common.GetImagePullPolicy(dpa.Spec.ImagePullPolicy, credentials.GetPluginImage(pluginSpecificMap.PluginName, dpa))
415+
imagePullPolicy, err := common.GetImagePullPolicy(dpa.Spec.ImagePullPolicy, credentials.GetPluginImage(plugin, dpa))
416416
if err != nil {
417417
r.Log.Error(err, "imagePullPolicy regex failed")
418418
}
419419

420420
veleroDeployment.Spec.Template.Spec.InitContainers = append(
421421
veleroDeployment.Spec.Template.Spec.InitContainers,
422422
corev1.Container{
423-
Image: credentials.GetPluginImage(pluginSpecificMap.PluginName, dpa),
423+
Image: credentials.GetPluginImage(plugin, dpa),
424424
Name: pluginSpecificMap.PluginName,
425425
ImagePullPolicy: imagePullPolicy,
426426
Resources: init_container_resources,
@@ -434,7 +434,7 @@ func (r *DPAReconciler) appendPluginSpecificSpecs(veleroDeployment *appsv1.Deplo
434434
},
435435
})
436436

437-
pluginNeedsCheck, foundInBSLorVSL := providerNeedsDefaultCreds[string(plugin)]
437+
pluginNeedsCheck, foundInBSLorVSL := providerNeedsDefaultCreds[pluginSpecificMap.ProviderName]
438438

439439
if !foundInBSLorVSL && !hasCloudStorage {
440440
pluginNeedsCheck = true
@@ -762,7 +762,7 @@ func (r DPAReconciler) noDefaultCredentials() (map[string]bool, bool, error) {
762762
}
763763
for _, provider := range dpa.Spec.Configuration.Velero.DefaultPlugins {
764764
if psf, ok := credentials.PluginSpecificFields[provider]; ok && psf.IsCloudProvider {
765-
providerNeedsDefaultCreds[psf.PluginName] = needDefaultCred
765+
providerNeedsDefaultCreds[psf.ProviderName] = needDefaultCred
766766
}
767767
}
768768
} else {

controllers/velero_test.go

+35-4
Original file line numberDiff line numberDiff line change
@@ -1365,6 +1365,37 @@ func TestDPAReconciler_buildVeleroDeployment(t *testing.T) {
13651365
},
13661366
}),
13671367
},
1368+
{
1369+
name: "valid DPA CR with legacy aws plugin, Velero Deployment is built with legacy aws plugin",
1370+
dpa: createTestDpaWith(
1371+
nil,
1372+
oadpv1alpha1.DataProtectionApplicationSpec{
1373+
Configuration: &oadpv1alpha1.ApplicationConfig{
1374+
Velero: &oadpv1alpha1.VeleroConfig{
1375+
DefaultPlugins: []oadpv1alpha1.DefaultPlugin{
1376+
oadpv1alpha1.DefaultPluginLegacyAWS,
1377+
},
1378+
},
1379+
},
1380+
},
1381+
),
1382+
veleroDeployment: testVeleroDeployment.DeepCopy(),
1383+
wantVeleroDeployment: createTestBuiltVeleroDeployment(TestBuiltVeleroDeploymentOptions{
1384+
initContainers: []corev1.Container{pluginContainer(common.VeleroPluginForLegacyAWS, common.LegacyAWSPluginImage)},
1385+
volumes: []corev1.Volume{deploymentVolumeSecret("cloud-credentials")},
1386+
volumeMounts: []corev1.VolumeMount{
1387+
{Name: "cloud-credentials", MountPath: "/credentials"},
1388+
},
1389+
env: append(baseEnvVars, []corev1.EnvVar{
1390+
{Name: common.AWSSharedCredentialsFileEnvKey, Value: "/credentials/cloud"},
1391+
}...),
1392+
args: []string{
1393+
defaultFileSystemBackupTimeout,
1394+
defaultRestoreResourcePriorities,
1395+
defaultDisableInformerCache,
1396+
},
1397+
}),
1398+
},
13681399
{
13691400
name: "valid DPA CR with aws and kubevirt plugin, Velero Deployment is built with aws and kubevirt plugin",
13701401
dpa: createTestDpaWith(
@@ -1984,7 +2015,7 @@ func TestDPAReconciler_noDefaultCredentials(t *testing.T) {
19842015
wantErr bool
19852016
}{
19862017
{
1987-
name: "dpa with all plugins but with noDefualtBackupLocation should not require default credentials",
2018+
name: "dpa with all plugins but with noDefaultBackupLocation should not require default credentials",
19882019
args: args{
19892020
dpa: oadpv1alpha1.DataProtectionApplication{
19902021
ObjectMeta: metav1.ObjectMeta{
@@ -2002,9 +2033,9 @@ func TestDPAReconciler_noDefaultCredentials(t *testing.T) {
20022033
},
20032034
},
20042035
want: map[string]bool{
2005-
"velero-plugin-for-aws": false,
2006-
"velero-plugin-for-gcp": false,
2007-
"velero-plugin-for-microsoft-azure": false,
2036+
"aws": false,
2037+
"gcp": false,
2038+
"azure": false,
20082039
},
20092040
wantHasCloudStorage: false,
20102041
wantErr: false,

controllers/vsl.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ func (r *DPAReconciler) ReconcileVolumeSnapshotLocations(log logr.Logger) (bool,
276276

277277
func containsPlugin(d []oadpv1alpha1.DefaultPlugin, value string) bool {
278278
for _, elem := range d {
279-
if string(elem) == value {
279+
if credentials.PluginSpecificFields[elem].ProviderName == value {
280280
return true
281281
}
282282
}

docs/config/plugins.md

+20-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ There are mainly two categories of Velero plugins that can be specified while
88
installing Velero:
99

1010
1. `defaultPlugins`:<br>
11-
There are six types of default Velero plugins can be installed:
11+
There are several types of default Velero plugins can be installed:
1212
- `AWS` [Plugins for AWS
13+
](https://github.com/vmware-tanzu/velero-plugin-for-aws)
14+
- `Legacy AWS` [Plugins for Legacy AWS
1315
](https://github.com/vmware-tanzu/velero-plugin-for-aws)
1416
- `GCP` [Plugins for Google Cloud Platform](https://github.com/vmware-tanzu/velero-plugin-for-gcp)
1517
- `Azure` [Plugins for Microsoft Azure](https://github.com/vmware-tanzu/velero-plugin-for-microsoft-azure)
@@ -18,6 +20,8 @@ installing Velero:
1820
- `kubevirt` [Plugins for Kubevirt](https://github.com/kubevirt/kubevirt-velero-plugin)
1921
- `VSM (OADP 1.2 or below)` [Plugin for Volume-Snapshot-Mover](https://github.com/migtools/velero-plugin-for-vsm)
2022

23+
Note that only one of `AWS` and `Legacy AWS` may be installed at the same time. `Legacy AWS` is intended for use with certain S3 providers that do not support the V2 AWS SDK APIs used in the `AWS` plugin.
24+
2125
For installation,
2226
you need to specify them in the `oadp_v1alpha1_dpa.yaml` file
2327
during deployment.
@@ -37,7 +41,21 @@ installing Velero:
3741
- gcp
3842
```
3943
The above specification will install Velero with four of the default plugins.
40-
44+
45+
```
46+
apiVersion: oadp.openshift.io/v1alpha1
47+
kind: DataProtectionApplication
48+
metadata:
49+
name: dpa-sample
50+
spec:
51+
configuration:
52+
velero:
53+
defaultPlugins:
54+
- openshift
55+
- legacy-aws
56+
```
57+
The above specification will install Velero with two of the default plugins.
58+
4159
2. `customPlugins`:<br>
4260
For installation of custom Velero plugins, you need to specify the plugin
4361
`image` and plugin `name` in the `oadp_v1alpha1_dpa.yaml` file during

0 commit comments

Comments
 (0)