From 98803068078c7013aff63dac07abfbe4ad72e0d9 Mon Sep 17 00:00:00 2001 From: ioito Date: Tue, 23 May 2023 19:41:57 +0800 Subject: [PATCH] fix(region): aws tag sync --- go.mod | 2 +- go.sum | 4 ++-- vendor/modules.txt | 2 +- .../cloudmux/pkg/multicloud/aws/dbinstance.go | 2 ++ .../multicloud/aws/elasticache_instance.go | 2 ++ .../x/cloudmux/pkg/multicloud/aws/instance.go | 21 ++++++++----------- .../x/cloudmux/pkg/multicloud/aws/utils.go | 14 +++++++++++++ .../cloudmux/pkg/multicloud/openstack/disk.go | 4 +++- 8 files changed, 34 insertions(+), 17 deletions(-) diff --git a/go.mod b/go.mod index 683d1597fb..cf23109414 100644 --- a/go.mod +++ b/go.mod @@ -84,7 +84,7 @@ require ( k8s.io/client-go v0.19.3 k8s.io/cluster-bootstrap v0.19.3 moul.io/http2curl/v2 v2.3.0 - yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230523061656-13cfa7fc15bd + yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230523113658-0669df73bac9 yunion.io/x/executor v0.0.0-20211018100936-39a2cd966656 yunion.io/x/jsonutils v1.0.1-0.20230428104347-7c2fdff8e8e7 yunion.io/x/log v1.0.1-0.20230411060016-feb3f46ab361 diff --git a/go.sum b/go.sum index 37014d5875..0026793db8 100644 --- a/go.sum +++ b/go.sum @@ -1185,8 +1185,8 @@ sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230523061656-13cfa7fc15bd h1:gAt+8sC+OlIGZWBjRDBnpVxZiSG85zEK1tBLlEaB9Ko= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230523061656-13cfa7fc15bd/go.mod h1:crMeQeaNaZefTXfXbQkoj5SStggqkSNVABHtYBFjM3Y= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230523113658-0669df73bac9 h1:3BB/EC6dSg+xP7VFTEZNAODp/oWZ7oX4DtSU4JRQDLk= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230523113658-0669df73bac9/go.mod h1:crMeQeaNaZefTXfXbQkoj5SStggqkSNVABHtYBFjM3Y= yunion.io/x/executor v0.0.0-20211018100936-39a2cd966656 h1:0zlZD5uhZoIHgLVAWCz2aHaYk2ZrNsACCYD7R6EIBII= yunion.io/x/executor v0.0.0-20211018100936-39a2cd966656/go.mod h1:Uxuou9WQIeJXNpy7t2fPLL0BYLvLiMvGQwY7Qc6aSws= yunion.io/x/jsonutils v0.0.0-20190625054549-a964e1e8a051/go.mod h1:4N0/RVzsYL3kH3WE/H1BjUQdFiWu50JGCFQuuy+Z634= diff --git a/vendor/modules.txt b/vendor/modules.txt index 3edd807bed..6a493de94b 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1457,7 +1457,7 @@ sigs.k8s.io/structured-merge-diff/v4/value # sigs.k8s.io/yaml v1.2.0 ## explicit; go 1.12 sigs.k8s.io/yaml -# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230523061656-13cfa7fc15bd +# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230523113658-0669df73bac9 ## explicit; go 1.18 yunion.io/x/cloudmux/pkg/apis yunion.io/x/cloudmux/pkg/apis/billing diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/dbinstance.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/dbinstance.go index cb91a17e4b..88c2143a06 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/dbinstance.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/dbinstance.go @@ -636,6 +636,7 @@ func (self *SRegion) AddRdsTagsToResource(arn string, tags map[string]string) er for k, v := range tags { params[fmt.Sprintf("Tags.member.%d.Key", i)] = k params[fmt.Sprintf("Tags.member.%d.Value", i)] = v + i++ } return self.rdsRequest("AddTagsToResource", params, nil) } @@ -650,6 +651,7 @@ func (self *SRegion) RemoveRdsTagsFromResource(arn string, tags map[string]strin i := 1 for k := range tags { params[fmt.Sprintf("TagKeys.member.%d", i)] = k + i++ } return self.rdsRequest("RemoveTagsFromResource", params, nil) } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/elasticache_instance.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/elasticache_instance.go index 09fe34ce79..980138cffb 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/elasticache_instance.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/elasticache_instance.go @@ -478,6 +478,7 @@ func (self *SElasticache) SetTags(tags map[string]string, replace bool) error { i := 1 for k := range tags { params[fmt.Sprintf("TagKeys.member.%d", i)] = k + i++ } return self.region.redisRequest("RemoveTagsFromResource", params, nil) } @@ -489,6 +490,7 @@ func (self *SElasticache) SetTags(tags map[string]string, replace bool) error { for k, v := range tags { params[fmt.Sprintf("Tags.member.%d.Key", i)] = k params[fmt.Sprintf("Tags.member.%d.Value", i)] = v + i++ } return self.region.redisRequest("AddTagsToResource", params, nil) } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/instance.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/instance.go index eef0f8e4e0..cc473c4de3 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/instance.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/instance.go @@ -208,10 +208,6 @@ func (self *SInstance) Refresh() error { return jsonutils.Update(self, new) } -func (self *SInstance) IsEmulated() bool { - return false -} - func (self *SInstance) GetInstanceType() string { return self.InstanceType } @@ -225,7 +221,7 @@ func (self *SInstance) GetTags() (map[string]string, error) { } func (self *SInstance) GetSysTags() map[string]string { - return map[string]string{} + return self.TagSpec.GetSysTags() } func (self *SInstance) GetBillingType() string { @@ -1284,16 +1280,17 @@ func (self *SInstance) SetTags(tags map[string]string, replace bool) error { if err != nil { return errors.Wrapf(err, "FetchTags(self.host.zone.region.ec2Client, %s)", self.InstanceId) } - oldTags := map[string]string{} - err = oldTagsJson.Unmarshal(oldTags) + _oldTags := TagSpec{} + err = oldTagsJson.Unmarshal(&_oldTags.Tags) if err != nil { return errors.Wrapf(err, "(%s).Unmarshal(oldTags)", oldTagsJson.String()) } + oldTags, err := _oldTags.GetTags() + if err != nil { + return errors.Wrapf(err, "GetTags") + } addTags := map[string]string{} for k, v := range tags { - if strings.HasPrefix(k, "aws:") { - return errors.Wrap(cloudprovider.ErrNotSupported, "The aws: prefix is reserved for AWS use") - } if _, ok := oldTags[k]; !ok { addTags[k] = v } else { @@ -1315,12 +1312,12 @@ func (self *SInstance) SetTags(tags map[string]string, replace bool) error { Arn := self.GetArn() err = self.host.zone.region.UntagResources([]string{Arn}, delTags) if err != nil { - return errors.Wrapf(err, "self.host.zone.region.UntagResources([]string{%s}, %s)", Arn, jsonutils.Marshal(delTags).String()) + return errors.Wrapf(err, "UntagResources") } delete(addTags, "Name") err = self.host.zone.region.TagResources([]string{Arn}, addTags) if err != nil { - return errors.Wrapf(err, "self.host.zone.region.TagResources([]string{%s}, %s)", Arn, jsonutils.Marshal(addTags).String()) + return errors.Wrapf(err, "TagResources") } return nil } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/utils.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/utils.go index a627d3970b..1dbc531927 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/utils.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/utils.go @@ -80,11 +80,25 @@ func (self *TagSpec) GetTags() (map[string]string, error) { if k == "Name" || k == "Description" { continue } + if strings.HasPrefix(k, "aws:") { + continue + } ret[k] = v } return ret, nil } +func (self *TagSpec) GetSysTags() map[string]string { + ret := map[string]string{} + for k, v := range self.Tags { + if !strings.HasPrefix(k, "aws:") { + continue + } + ret[k] = v + } + return ret +} + func (self *TagSpec) SetNameTag(v string) { self.SetTag("Name", v) } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/openstack/disk.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/openstack/disk.go index 6e0129e6dc..3750756c1e 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/openstack/disk.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/openstack/disk.go @@ -232,10 +232,12 @@ func (disk *SDisk) GetStatus() string { return api.DISK_DETACHING case DISK_STATUS_EXTENDING: return api.DISK_RESIZING - case DISK_STATUS_RETYPING, DISK_STATUS_AVAILABLE, DISK_STATUS_RESERVED, DISK_STATUS_IN_USE, DISK_STATUS_MAINTENANCE, DISK_STATUS_AWAITING_TRANSFER, DISK_STATUS_BACKING_UP, DISK_STATUS_RESTORING_BACKUP, DISK_STATUS_UPLOADING: + case DISK_STATUS_RETYPING, DISK_STATUS_AVAILABLE, DISK_STATUS_IN_USE, DISK_STATUS_MAINTENANCE, DISK_STATUS_AWAITING_TRANSFER, DISK_STATUS_BACKING_UP, DISK_STATUS_RESTORING_BACKUP, DISK_STATUS_UPLOADING: return api.DISK_READY case DISK_STATUS_DELETING: return api.DISK_DEALLOC + case DISK_STATUS_RESERVED: + return api.DISK_RESET case DISK_STATUS_ERROR: return api.DISK_ALLOC_FAILED default: