From 02fff6e9831a53d96d03eeab9fa1b74ffd2e9853 Mon Sep 17 00:00:00 2001 From: BornChanger Date: Fri, 21 Jul 2023 19:29:47 +0800 Subject: [PATCH] *: pass region name for aws EBS volume operation Signed-off-by: BornChanger --- cmd/backup-manager/app/clean/clean.go | 2 +- pkg/backup/restore/restore_manager.go | 4 +++- pkg/backup/snapshotter/snapshotter.go | 2 +- pkg/backup/snapshotter/snapshotter_aws.go | 4 ++-- pkg/backup/snapshotter/snapshotter_gcp.go | 2 +- pkg/backup/snapshotter/snapshotter_none.go | 2 +- pkg/backup/util/aws_ebs.go | 4 ++-- 7 files changed, 11 insertions(+), 9 deletions(-) diff --git a/cmd/backup-manager/app/clean/clean.go b/cmd/backup-manager/app/clean/clean.go index 7fb588c7d07..6de76279353 100644 --- a/cmd/backup-manager/app/clean/clean.go +++ b/cmd/backup-manager/app/clean/clean.go @@ -122,7 +122,7 @@ func (bo *Options) deleteVolumeSnapshots(meta *bkutil.EBSBasedBRMeta) error { } } - ec2Session, err := bkutil.NewEC2Session(CloudAPIConcurrency) + ec2Session, err := bkutil.NewEC2Session(CloudAPIConcurrency, meta.Region) if err != nil { klog.Errorf("new a ec2 session failure.") return err diff --git a/pkg/backup/restore/restore_manager.go b/pkg/backup/restore/restore_manager.go index 7d6fc9db6c3..44b52b0680e 100644 --- a/pkg/backup/restore/restore_manager.go +++ b/pkg/backup/restore/restore_manager.go @@ -172,7 +172,9 @@ func (rm *restoreManager) syncRestoreJob(restore *v1alpha1.Restore) error { return err } - err = s.AddVolumeTags(pvs) + if restore.Spec.S3 != nil { + err = s.AddVolumeTags(pvs, restore.Spec.S3.Region) + } if err != nil { rm.statusUpdater.Update(restore, &v1alpha1.RestoreCondition{ Type: v1alpha1.RestoreRetryFailed, diff --git a/pkg/backup/snapshotter/snapshotter.go b/pkg/backup/snapshotter/snapshotter.go index 5ec67df43f0..beee09588d3 100644 --- a/pkg/backup/snapshotter/snapshotter.go +++ b/pkg/backup/snapshotter/snapshotter.go @@ -58,7 +58,7 @@ type Snapshotter interface { ResetPvAvailableZone(r *v1alpha1.Restore, pv *corev1.PersistentVolume) // AddVolumeTags add operator related tags to volumes - AddVolumeTags(pvs []*corev1.PersistentVolume) error + AddVolumeTags(pvs []*corev1.PersistentVolume, regionName string) error } type BaseSnapshotter struct { diff --git a/pkg/backup/snapshotter/snapshotter_aws.go b/pkg/backup/snapshotter/snapshotter_aws.go index 5877e3dc454..f56fbbcbb5f 100644 --- a/pkg/backup/snapshotter/snapshotter_aws.go +++ b/pkg/backup/snapshotter/snapshotter_aws.go @@ -98,7 +98,7 @@ func (s *AWSSnapshotter) PrepareRestoreMetadata(r *v1alpha1.Restore, csb *CloudS return s.BaseSnapshotter.prepareRestoreMetadata(r, csb, s) } -func (s *AWSSnapshotter) AddVolumeTags(pvs []*corev1.PersistentVolume) error { +func (s *AWSSnapshotter) AddVolumeTags(pvs []*corev1.PersistentVolume, regionName string) error { resourcesTags := make(map[string]util.TagMap) for _, pv := range pvs { @@ -112,7 +112,7 @@ func (s *AWSSnapshotter) AddVolumeTags(pvs []*corev1.PersistentVolume) error { resourcesTags[volId] = tags } - ec2Session, err := util.NewEC2Session(CloudAPIConcurrency) + ec2Session, err := util.NewEC2Session(CloudAPIConcurrency, regionName) if err != nil { return err } diff --git a/pkg/backup/snapshotter/snapshotter_gcp.go b/pkg/backup/snapshotter/snapshotter_gcp.go index 79049aea242..2c0b264f44b 100644 --- a/pkg/backup/snapshotter/snapshotter_gcp.go +++ b/pkg/backup/snapshotter/snapshotter_gcp.go @@ -103,7 +103,7 @@ func (s *GCPSnapshotter) ResetPvAvailableZone(r *v1alpha1.Restore, pv *corev1.Pe // TODO implement it if support to restore snapshots to another az on GCP } -func (s *GCPSnapshotter) AddVolumeTags(pvs []*corev1.PersistentVolume) error { +func (s *GCPSnapshotter) AddVolumeTags(pvs []*corev1.PersistentVolume, regionName string) error { // TODO implement it if support to restore snapshots to another az on GCP return nil } diff --git a/pkg/backup/snapshotter/snapshotter_none.go b/pkg/backup/snapshotter/snapshotter_none.go index 28e55d7b3cb..631a8f2beac 100644 --- a/pkg/backup/snapshotter/snapshotter_none.go +++ b/pkg/backup/snapshotter/snapshotter_none.go @@ -44,7 +44,7 @@ func (s *NoneSnapshotter) PrepareRestoreMetadata(r *v1alpha1.Restore, csb *Cloud func (s *NoneSnapshotter) ResetPvAvailableZone(r *v1alpha1.Restore, pv *corev1.PersistentVolume) {} -func (s *NoneSnapshotter) AddVolumeTags(pvs []*corev1.PersistentVolume) error { +func (s *NoneSnapshotter) AddVolumeTags(pvs []*corev1.PersistentVolume, regionName string) error { // TODO implement it if support to restore snapshots to another az on GCP return nil } diff --git a/pkg/backup/util/aws_ebs.go b/pkg/backup/util/aws_ebs.go index 8656987ab6f..739039a7dea 100644 --- a/pkg/backup/util/aws_ebs.go +++ b/pkg/backup/util/aws_ebs.go @@ -107,11 +107,11 @@ type EC2Session struct { type TagMap map[string]string -func NewEC2Session(concurrency uint) (*EC2Session, error) { +func NewEC2Session(concurrency uint, region string) (*EC2Session, error) { // aws-sdk has builtin exponential backoff retry mechanism, see: // https://github.com/aws/aws-sdk-go/blob/db4388e8b9b19d34dcde76c492b17607cd5651e2/aws/client/default_retryer.go#L12-L16 // with default retryer & max-retry=9, we will wait for at least 30s in total - awsConfig := aws.NewConfig().WithMaxRetries(9) + awsConfig := aws.NewConfig().WithMaxRetries(9).WithRegion(region) // TiDB Operator need make sure we have the correct permission to call aws api(through aws env variables) // we may change this behaviour in the future. sessionOptions := session.Options{Config: *awsConfig}