mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
fix(region): 增加配置项,支持标签不再同步至云上功能 (#18837)
This commit is contained in:
@@ -33,6 +33,7 @@ import (
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/db/lockman"
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/db/taskman"
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/notifyclient"
|
||||
"yunion.io/x/onecloud/pkg/compute/options"
|
||||
"yunion.io/x/onecloud/pkg/httperrors"
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/util/stringutils2"
|
||||
@@ -447,7 +448,7 @@ func (self *SApp) StartRemoteUpdateTask(ctx context.Context, userCred mcclient.T
|
||||
}
|
||||
|
||||
func (self *SApp) OnMetadataUpdated(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
if len(self.ExternalId) == 0 {
|
||||
if len(self.ExternalId) == 0 || options.Options.KeepTagLocalization {
|
||||
return
|
||||
}
|
||||
if account := self.GetCloudaccount(); account != nil && account.ReadOnly {
|
||||
|
||||
@@ -1737,7 +1737,7 @@ func (bucket *SBucket) processObjectsActionInput(ctx context.Context, input api.
|
||||
}
|
||||
|
||||
func (bucket *SBucket) OnMetadataUpdated(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
if len(bucket.ExternalId) == 0 {
|
||||
if len(bucket.ExternalId) == 0 || options.Options.KeepTagLocalization {
|
||||
return
|
||||
}
|
||||
if account := bucket.GetCloudaccount(); account != nil && account.ReadOnly {
|
||||
|
||||
@@ -551,7 +551,7 @@ func (self *SCDNDomain) StartRemoteUpdateTask(ctx context.Context, userCred mccl
|
||||
}
|
||||
|
||||
func (self *SCDNDomain) OnMetadataUpdated(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
if len(self.ExternalId) == 0 {
|
||||
if len(self.ExternalId) == 0 || options.Options.KeepTagLocalization {
|
||||
return
|
||||
}
|
||||
err := self.StartRemoteUpdateTask(ctx, userCred, true, "")
|
||||
|
||||
@@ -2087,7 +2087,7 @@ func (self *SDBInstance) StartRemoteUpdateTask(ctx context.Context, userCred mcc
|
||||
}
|
||||
|
||||
func (self *SDBInstance) OnMetadataUpdated(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
if len(self.ExternalId) == 0 {
|
||||
if len(self.ExternalId) == 0 || options.Options.KeepTagLocalization {
|
||||
return
|
||||
}
|
||||
if account := self.GetCloudaccount(); account != nil && account.ReadOnly {
|
||||
|
||||
@@ -696,7 +696,7 @@ func (self *SElasticSearch) StartRemoteUpdateTask(ctx context.Context, userCred
|
||||
}
|
||||
|
||||
func (self *SElasticSearch) OnMetadataUpdated(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
if len(self.ExternalId) == 0 {
|
||||
if len(self.ExternalId) == 0 || options.Options.KeepTagLocalization {
|
||||
return
|
||||
}
|
||||
if account := self.GetCloudaccount(); account != nil && account.ReadOnly {
|
||||
|
||||
@@ -1717,7 +1717,7 @@ func (self *SElasticcache) StartRemoteUpdateTask(ctx context.Context, userCred m
|
||||
}
|
||||
|
||||
func (self *SElasticcache) OnMetadataUpdated(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
if len(self.ExternalId) == 0 {
|
||||
if len(self.ExternalId) == 0 || options.Options.KeepTagLocalization {
|
||||
return
|
||||
}
|
||||
if account := self.GetCloudaccount(); account != nil && account.ReadOnly {
|
||||
|
||||
@@ -1957,7 +1957,7 @@ func (self *SElasticip) StartRemoteUpdateTask(ctx context.Context, userCred mccl
|
||||
}
|
||||
|
||||
func (self *SElasticip) OnMetadataUpdated(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
if len(self.ExternalId) == 0 {
|
||||
if len(self.ExternalId) == 0 || options.Options.KeepTagLocalization {
|
||||
return
|
||||
}
|
||||
if account := self.GetCloudaccount(); account != nil && account.ReadOnly {
|
||||
|
||||
@@ -644,7 +644,7 @@ func (fileSystem *SFileSystem) StartRemoteUpdateTask(ctx context.Context, userCr
|
||||
}
|
||||
|
||||
func (fileSystem *SFileSystem) OnMetadataUpdated(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
if len(fileSystem.ExternalId) == 0 {
|
||||
if len(fileSystem.ExternalId) == 0 || options.Options.KeepTagLocalization {
|
||||
return
|
||||
}
|
||||
if account := fileSystem.GetCloudaccount(); account != nil && account.ReadOnly {
|
||||
|
||||
@@ -6535,7 +6535,7 @@ func (guest *SGuest) StartRemoteUpdateTask(ctx context.Context, userCred mcclien
|
||||
}
|
||||
|
||||
func (guest *SGuest) OnMetadataUpdated(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
if len(guest.ExternalId) == 0 {
|
||||
if len(guest.ExternalId) == 0 || options.Options.KeepTagLocalization {
|
||||
return
|
||||
}
|
||||
host, err := guest.GetHost()
|
||||
|
||||
@@ -689,7 +689,7 @@ func (self *SKafka) StartRemoteUpdateTask(ctx context.Context, userCred mcclient
|
||||
}
|
||||
|
||||
func (self *SKafka) OnMetadataUpdated(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
if len(self.ExternalId) == 0 {
|
||||
if len(self.ExternalId) == 0 || options.Options.KeepTagLocalization {
|
||||
return
|
||||
}
|
||||
if account := self.GetCloudaccount(); account != nil && account.ReadOnly {
|
||||
|
||||
@@ -1498,7 +1498,7 @@ func (self *SLoadbalancer) StartRemoteUpdateTask(ctx context.Context, userCred m
|
||||
}
|
||||
|
||||
func (self *SLoadbalancer) OnMetadataUpdated(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
if len(self.ExternalId) == 0 {
|
||||
if len(self.ExternalId) == 0 || options.Options.KeepTagLocalization {
|
||||
return
|
||||
}
|
||||
if account := self.GetCloudaccount(); account != nil && account.ReadOnly {
|
||||
|
||||
@@ -834,7 +834,7 @@ func (self *SMongoDB) StartRemoteUpdateTask(ctx context.Context, userCred mcclie
|
||||
}
|
||||
|
||||
func (self *SMongoDB) OnMetadataUpdated(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
if len(self.ExternalId) == 0 {
|
||||
if len(self.ExternalId) == 0 || options.Options.KeepTagLocalization {
|
||||
return
|
||||
}
|
||||
if account := self.GetCloudaccount(); account != nil && account.ReadOnly {
|
||||
|
||||
@@ -1112,7 +1112,7 @@ func (self *SNatGateway) StartRemoteUpdateTask(ctx context.Context, userCred mcc
|
||||
}
|
||||
|
||||
func (self *SNatGateway) OnMetadataUpdated(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
if len(self.ExternalId) == 0 {
|
||||
if len(self.ExternalId) == 0 || options.Options.KeepTagLocalization {
|
||||
return
|
||||
}
|
||||
vpc, err := self.GetVpc()
|
||||
|
||||
@@ -1057,7 +1057,7 @@ func (self *SSecurityGroup) Delete(ctx context.Context, userCred mcclient.TokenC
|
||||
}
|
||||
|
||||
func (self *SSecurityGroup) OnMetadataUpdated(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
if len(self.ExternalId) == 0 {
|
||||
if len(self.ExternalId) == 0 || options.Options.KeepTagLocalization {
|
||||
return
|
||||
}
|
||||
if account := self.GetCloudaccount(); account != nil && account.ReadOnly {
|
||||
|
||||
@@ -22,6 +22,7 @@ import (
|
||||
|
||||
"yunion.io/x/onecloud/pkg/apis"
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/db"
|
||||
"yunion.io/x/onecloud/pkg/compute/options"
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
)
|
||||
|
||||
@@ -44,6 +45,9 @@ func syncMetadata(ctx context.Context, userCred mcclient.TokenCredential, model
|
||||
for key, value := range sysTags {
|
||||
sysStore[db.SYS_CLOUD_TAG_PREFIX+key] = value
|
||||
}
|
||||
if options.Options.KeepTagLocalization {
|
||||
readOnly = true
|
||||
}
|
||||
model.SetSysCloudMetadataAll(ctx, sysStore, userCred, readOnly)
|
||||
|
||||
tags, err := remote.GetTags()
|
||||
@@ -75,6 +79,9 @@ func syncVirtualResourceMetadata(ctx context.Context, userCred mcclient.TokenCre
|
||||
sysStore[db.SYS_CLOUD_TAG_PREFIX+"project"] = extProject.Name
|
||||
}
|
||||
}
|
||||
if options.Options.KeepTagLocalization {
|
||||
readOnly = true
|
||||
}
|
||||
|
||||
model.SetSysCloudMetadataAll(ctx, sysStore, userCred, readOnly)
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ import (
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/db/taskman"
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/notifyclient"
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/validators"
|
||||
"yunion.io/x/onecloud/pkg/compute/options"
|
||||
"yunion.io/x/onecloud/pkg/httperrors"
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/util/stringutils2"
|
||||
@@ -518,7 +519,7 @@ func (self *SWafInstance) StartRemoteUpdateTask(ctx context.Context, userCred mc
|
||||
}
|
||||
|
||||
func (self *SWafInstance) OnMetadataUpdated(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
if len(self.ExternalId) == 0 {
|
||||
if len(self.ExternalId) == 0 || options.Options.KeepTagLocalization {
|
||||
return
|
||||
}
|
||||
if account := self.GetCloudaccount(); account != nil && account.ReadOnly {
|
||||
|
||||
@@ -196,6 +196,8 @@ type ComputeOptions struct {
|
||||
// 弹性伸缩中的ecs一般会有特殊的系统标签,通过指定这些标签可以忽略这部分ecs的同步, 指定多个key需要以 ',' 分隔
|
||||
SkipServerBySysTagKeys string `help:"skip server,disk sync and create with system tags" default:""`
|
||||
SkipServerByUserTagKeys string `help:"skip server,disk sync and create with user tags" default:""`
|
||||
// 修改标签时不再同步至云上, 云账号同步资源时不会冲掉本地打的标签(key相同的会覆盖), 云账号开启只读同步和此参数效果相同,且仅影响开启只读同步的账号
|
||||
KeepTagLocalization bool `help:"keep tag localization, not synchronized to the cloud" default:"false"`
|
||||
|
||||
EnableMonitorAgent bool `help:"enable public cloud vm monitor agent" default:"false"`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user