From a8f8ecf3631659e324ab6a0c7ae0c1bb785431d1 Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Fri, 8 Oct 2021 11:46:03 +0800 Subject: [PATCH] fix(region): sync resource by capability with read only --- pkg/cloudprovider/cloudprovider.go | 42 +++++++++++++++++++++++------- pkg/compute/models/cloudsync.go | 10 +++---- 2 files changed, 38 insertions(+), 14 deletions(-) diff --git a/pkg/cloudprovider/cloudprovider.go b/pkg/cloudprovider/cloudprovider.go index 1d907e34a0..0afc492d48 100644 --- a/pkg/cloudprovider/cloudprovider.go +++ b/pkg/cloudprovider/cloudprovider.go @@ -298,40 +298,64 @@ type ICloudProvider interface { GetICloudCDNDomainByName(name string) (ICloudCDNDomain, error) } +func IsSupportCapability(prod ICloudProvider, capa string) bool { + return utils.IsInStringArray(capa, prod.GetCapabilities()) || utils.IsInStringArray(capa+READ_ONLY_SUFFIX, prod.GetCapabilities()) +} + func IsSupportProject(prod ICloudProvider) bool { - return utils.IsInStringArray(CLOUD_CAPABILITY_PROJECT, prod.GetCapabilities()) + return IsSupportCapability(prod, CLOUD_CAPABILITY_PROJECT) } func IsSupportDnsZone(prod ICloudProvider) bool { - return utils.IsInStringArray(CLOUD_CAPABILITY_DNSZONE, prod.GetCapabilities()) + return IsSupportCapability(prod, CLOUD_CAPABILITY_DNSZONE) } func IsSupportInterVpcNetwork(prod ICloudProvider) bool { - return utils.IsInStringArray(CLOUD_CAPABILITY_INTERVPCNETWORK, prod.GetCapabilities()) + return IsSupportCapability(prod, CLOUD_CAPABILITY_INTERVPCNETWORK) } func IsSupportCompute(prod ICloudProvider) bool { - return utils.IsInStringArray(CLOUD_CAPABILITY_COMPUTE, prod.GetCapabilities()) + return IsSupportCapability(prod, CLOUD_CAPABILITY_COMPUTE) } func IsSupportLoadbalancer(prod ICloudProvider) bool { - return utils.IsInStringArray(CLOUD_CAPABILITY_LOADBALANCER, prod.GetCapabilities()) + return IsSupportCapability(prod, CLOUD_CAPABILITY_LOADBALANCER) } func IsSupportObjectstore(prod ICloudProvider) bool { - return utils.IsInStringArray(CLOUD_CAPABILITY_OBJECTSTORE, prod.GetCapabilities()) + return IsSupportCapability(prod, CLOUD_CAPABILITY_OBJECTSTORE) } func IsSupportRds(prod ICloudProvider) bool { - return utils.IsInStringArray(CLOUD_CAPABILITY_RDS, prod.GetCapabilities()) + return IsSupportCapability(prod, CLOUD_CAPABILITY_RDS) } func IsSupportNAT(prod ICloudProvider) bool { - return utils.IsInStringArray(CLOUD_CAPABILITY_NAT, prod.GetCapabilities()) + return IsSupportCapability(prod, CLOUD_CAPABILITY_NAT) } func IsSupportElasticCache(prod ICloudProvider) bool { - return utils.IsInStringArray(CLOUD_CAPABILITY_CACHE, prod.GetCapabilities()) + return IsSupportCapability(prod, CLOUD_CAPABILITY_CACHE) +} + +func IsSupportWaf(prod ICloudProvider) bool { + return IsSupportCapability(prod, CLOUD_CAPABILITY_WAF) +} + +func IsSupportMongoDB(prod ICloudProvider) bool { + return IsSupportCapability(prod, CLOUD_CAPABILITY_MONGO_DB) +} + +func IsSupportElasticSearch(prod ICloudProvider) bool { + return IsSupportCapability(prod, CLOUD_CAPABILITY_ES) +} + +func IsSupportKafka(prod ICloudProvider) bool { + return IsSupportCapability(prod, CLOUD_CAPABILITY_KAFKA) +} + +func IsSupportApp(prod ICloudProvider) bool { + return IsSupportCapability(prod, CLOUD_CAPABILITY_APP) } var providerTable map[string]ICloudProviderFactory diff --git a/pkg/compute/models/cloudsync.go b/pkg/compute/models/cloudsync.go index f70d742f8b..34774d5fad 100644 --- a/pkg/compute/models/cloudsync.go +++ b/pkg/compute/models/cloudsync.go @@ -1697,25 +1697,25 @@ func syncPublicCloudProviderInfo( syncElasticcaches(ctx, userCred, syncResults, provider, localRegion, remoteRegion, syncRange) } - if utils.IsInStringArray(cloudprovider.CLOUD_CAPABILITY_WAF, driver.GetCapabilities()) { + if cloudprovider.IsSupportWaf(driver) { syncWafIPSets(ctx, userCred, syncResults, provider, localRegion, remoteRegion) syncWafRegexSets(ctx, userCred, syncResults, provider, localRegion, remoteRegion) syncWafInstances(ctx, userCred, syncResults, provider, localRegion, remoteRegion) } - if utils.IsInStringArray(cloudprovider.CLOUD_CAPABILITY_MONGO_DB, driver.GetCapabilities()) { + if cloudprovider.IsSupportMongoDB(driver) { syncMongoDBs(ctx, userCred, syncResults, provider, localRegion, remoteRegion) } - if utils.IsInStringArray(cloudprovider.CLOUD_CAPABILITY_ES, driver.GetCapabilities()) { + if cloudprovider.IsSupportElasticSearch(driver) { syncElasticSearchs(ctx, userCred, syncResults, provider, localRegion, remoteRegion) } - if utils.IsInStringArray(cloudprovider.CLOUD_CAPABILITY_KAFKA, driver.GetCapabilities()) { + if cloudprovider.IsSupportKafka(driver) { syncKafkas(ctx, userCred, syncResults, provider, localRegion, remoteRegion) } - if utils.IsInStringArray(cloudprovider.CLOUD_CAPABILITY_APP, driver.GetCapabilities()) { + if cloudprovider.IsSupportApp(driver) { syncApps(ctx, userCred, syncResults, provider, localRegion, remoteRegion) }