Merge pull request #12317 from ioito/hotfix/qx-readonly-capability

fix(region): read only capability
This commit is contained in:
Zexi Li
2021-09-30 10:09:36 +08:00
committed by GitHub
12 changed files with 214 additions and 108 deletions
+2
View File
@@ -41,6 +41,8 @@ const (
)
const (
READ_ONLY_SUFFIX = ".readonly"
CLOUD_CAPABILITY_PROJECT = "project"
CLOUD_CAPABILITY_COMPUTE = "compute"
CLOUD_CAPABILITY_NETWORK = "network"
+141 -48
View File
@@ -18,6 +18,7 @@ import (
"context"
"database/sql"
"fmt"
"strings"
"yunion.io/x/jsonutils"
"yunion.io/x/log"
@@ -37,17 +38,20 @@ import (
)
type SCapabilities struct {
Hypervisors []string `json:",allowempty"`
Brands []string `json:",allowempty"`
DisabledBrands []string `json:",allowempty"`
ComputeEngineBrands []string `json:",allowempty"`
DisabledComputeEngineBrands []string `json:",allowempty"`
RdsEngineBrands []string `json:",allowempty"`
RedisEngineBrands []string `json:",allowempty"`
LoadbalancerEngineBrands []string `json:",allowempty"`
DisabledRdsEngineBrands []string `json:",allowempty"`
CloudIdBrands []string `json:",allowempty"`
DisabledCloudIdBrands []string `json:",allowempty"`
Hypervisors []string `json:",allowempty"`
Brands []string `json:",allowempty"`
DisabledBrands []string `json:",allowempty"`
ComputeEngineBrands []string `json:",allowempty"`
DisabledComputeEngineBrands []string `json:",allowempty"`
RdsEngineBrands []string `json:",allowempty"`
DisabledRdsEngineBrands []string `json:",allowempty"`
RedisEngineBrands []string `json:",allowempty"`
DisabledRedisEngineBrands []string `json:",allowempty"`
LoadbalancerEngineBrands []string `json:",allowempty"`
DisabledLoadbalancerEngineBrands []string `json:",allowempty"`
CloudIdBrands []string `json:",allowempty"`
DisabledCloudIdBrands []string `json:",allowempty"`
// 支持SAML 2.0
SamlAuthBrands []string `json:",allowempty"`
DisabledSamlAuthBrands []string `json:",allowempty"`
@@ -60,21 +64,53 @@ type SCapabilities struct {
CdnBrands []string `json:",allowempty"`
DisabledCdnBrands []string `json:",allowempty"`
PublicIpBrands []string `json:",allowempty"`
DisabledPublicIpBrands []string `json:",allowempty"`
NetworkManageBrands []string `json:",allowempty"`
DisabledNetworkManageBrands []string `json:",allowempty"`
ObjectStorageBrands []string `json:",allowempty"`
DisabledObjectStorageBrands []string `json:",allowempty"`
ResourceTypes []string `json:",allowempty"`
StorageTypes []string `json:",allowempty"` // going to remove on 2.14
DataStorageTypes []string `json:",allowempty"` // going to remove on 2.14
GPUModels []string `json:",allowempty"`
HostCpuArchs []string `json:",allowempty"` // x86_64 aarch64
MinNicCount int
MaxNicCount int
MinDataDiskCount int
MaxDataDiskCount int
SchedPolicySupport bool
Usable bool
ReadOnlyBrands []string `json:",allowempty"`
ReadOnlyDisabledBrands []string `json:",allowempty"`
ReadOnlyComputeEngineBrands []string `json:",allowempty"`
ReadOnlyDisabledComputeEngineBrands []string `json:",allowempty"`
ReadOnlyRdsEngineBrands []string `json:",allowempty"`
ReadOnlyDisabledRdsEngineBrands []string `json:",allowempty"`
ReadOnlyRedisEngineBrands []string `json:",allowempty"`
ReadOnlyDisabledRedisEngineBrands []string `json:",allowempty"`
ReadOnlyLoadbalancerEngineBrands []string `json:",allowempty"`
ReadOnlyDisabledLoadbalancerEngineBrands []string `json:",allowempty"`
ReadOnlyCloudIdBrands []string `json:",allowempty"`
ReadOnlyDisabledCloudIdBrands []string `json:",allowempty"`
// 支持SAML 2.0
ReadOnlySamlAuthBrands []string `json:",allowempty"`
ReadOnlyDisabledSamlAuthBrands []string `json:",allowempty"`
ReadOnlyNatBrands []string `json:",allowempty"`
ReadOnlyDisabledNatBrands []string `json:",allowempty"`
ReadOnlyNasBrands []string `json:",allowempty"`
ReadOnlyDisabledNasBrands []string `json:",allowempty"`
ReadOnlyWafBrands []string `json:",allowempty"`
ReadOnlyDisabledWafBrands []string `json:",allowempty"`
ReadOnlyCdnBrands []string `json:",allowempty"`
ReadOnlyDisabledCdnBrands []string `json:",allowempty"`
ReadOnlyPublicIpBrands []string `json:",allowempty"`
ReadOnlyDisabledPublicIpBrands []string `json:",allowempty"`
ReadOnlyNetworkManageBrands []string `json:",allowempty"`
ReadOnlyDisabledNetworkManageBrands []string `json:",allowempty"`
ReadOnlyObjectStorageBrands []string `json:",allowempty"`
ReadOnlyDisabledObjectStorageBrands []string `json:",allowempty"`
ResourceTypes []string `json:",allowempty"`
StorageTypes []string `json:",allowempty"` // going to remove on 2.14
DataStorageTypes []string `json:",allowempty"` // going to remove on 2.14
GPUModels []string `json:",allowempty"`
HostCpuArchs []string `json:",allowempty"` // x86_64 aarch64
MinNicCount int
MaxNicCount int
MinDataDiskCount int
MaxDataDiskCount int
SchedPolicySupport bool
Usable bool
// Deprecated
PublicNetworkCount int
@@ -295,20 +331,24 @@ func getDBInstanceInfo(region *SCloudregion, zone *SZone) map[string]map[string]
// set all brands, compute engine brands, network manage brands, object storage brands
func getBrands(region *SCloudregion, zone *SZone, domainId string, capa *SCapabilities) {
capa.Brands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.True, "")
capa.ComputeEngineBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.True, cloudprovider.CLOUD_CAPABILITY_COMPUTE)
capa.RdsEngineBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.True, cloudprovider.CLOUD_CAPABILITY_RDS)
capa.RedisEngineBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.True, cloudprovider.CLOUD_CAPABILITY_CACHE)
capa.NetworkManageBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.True, cloudprovider.CLOUD_CAPABILITY_NETWORK)
capa.ObjectStorageBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.True, cloudprovider.CLOUD_CAPABILITY_OBJECTSTORE)
capa.CloudIdBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.True, cloudprovider.CLOUD_CAPABILITY_CLOUDID)
capa.PublicIpBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.True, cloudprovider.CLOUD_CAPABILITY_PUBLIC_IP)
capa.LoadbalancerEngineBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.True, cloudprovider.CLOUD_CAPABILITY_LOADBALANCER)
capa.SamlAuthBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.True, cloudprovider.CLOUD_CAPABILITY_SAML_AUTH)
capa.NatBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.True, cloudprovider.CLOUD_CAPABILITY_NAT)
capa.NasBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.True, cloudprovider.CLOUD_CAPABILITY_NAS)
capa.WafBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.True, cloudprovider.CLOUD_CAPABILITY_WAF)
capa.CdnBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.True, cloudprovider.CLOUD_CAPABILITY_CDN)
brands, err := CloudaccountManager.getBrandsOfCapability(region, zone, domainId)
if err != nil {
log.Errorf("getBrandsOfCapability: %v", err)
}
brandMaps := map[string]map[string]bool{}
for _, brand := range brands {
_, ok := brandMaps[brand.Brand]
if !ok {
brandMaps[brand.Brand] = map[string]bool{}
}
_, ok = brandMaps[brand.Brand][brand.Capability]
if !ok {
brandMaps[brand.Brand][brand.Capability] = brand.Enabled
}
if brand.Enabled {
brandMaps[brand.Brand][brand.Capability] = true
}
}
if utils.IsInStringArray(api.HYPERVISOR_KVM, capa.Hypervisors) || utils.IsInStringArray(api.HYPERVISOR_BAREMETAL, capa.Hypervisors) {
capa.Brands = append(capa.Brands, api.ONECLOUD_BRAND_ONECLOUD)
@@ -319,19 +359,72 @@ func getBrands(region *SCloudregion, zone *SZone, domainId string, capa *SCapabi
capa.LoadbalancerEngineBrands = append(capa.LoadbalancerEngineBrands, api.ONECLOUD_BRAND_ONECLOUD)
}
capa.NetworkManageBrands = append(capa.NetworkManageBrands, api.ONECLOUD_BRAND_ONECLOUD)
var appendBrand = func(enabled *[]string, disabled *[]string, readOnlyEnabled *[]string, readOnlyDisabled *[]string, brand, capability string, isEnable, readOnly bool) {
if readOnly {
if isEnable {
*readOnlyEnabled = append(*readOnlyEnabled, brand)
if capability == cloudprovider.CLOUD_CAPABILITY_COMPUTE && !utils.IsInStringArray(brand, capa.ReadOnlyBrands) {
capa.ReadOnlyBrands = append(capa.ReadOnlyBrands, brand)
}
} else {
*readOnlyDisabled = append(*readOnlyDisabled, brand)
if capability == cloudprovider.CLOUD_CAPABILITY_COMPUTE && !utils.IsInStringArray(brand, capa.ReadOnlyDisabledBrands) {
capa.ReadOnlyDisabledBrands = append(capa.ReadOnlyDisabledBrands, brand)
}
}
} else {
if isEnable {
*enabled = append(*enabled, brand)
if capability == cloudprovider.CLOUD_CAPABILITY_COMPUTE && !utils.IsInStringArray(brand, capa.Brands) {
capa.Brands = append(capa.Brands, brand)
}
} else {
*disabled = append(*disabled, brand)
if capability == cloudprovider.CLOUD_CAPABILITY_COMPUTE && !utils.IsInStringArray(brand, capa.DisabledBrands) {
capa.DisabledBrands = append(capa.DisabledBrands, brand)
}
}
}
}
capa.DisabledBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.False, "")
capa.DisabledComputeEngineBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.False, cloudprovider.CLOUD_CAPABILITY_COMPUTE)
capa.DisabledRdsEngineBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.False, cloudprovider.CLOUD_CAPABILITY_RDS)
capa.DisabledNetworkManageBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.False, cloudprovider.CLOUD_CAPABILITY_NETWORK)
capa.DisabledObjectStorageBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.False, cloudprovider.CLOUD_CAPABILITY_OBJECTSTORE)
capa.DisabledCloudIdBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.False, cloudprovider.CLOUD_CAPABILITY_CLOUDID)
capa.DisabledSamlAuthBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.False, cloudprovider.CLOUD_CAPABILITY_SAML_AUTH)
capa.DisabledNatBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.False, cloudprovider.CLOUD_CAPABILITY_NAT)
capa.DisabledNasBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.False, cloudprovider.CLOUD_CAPABILITY_NAS)
capa.DisabledNasBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.False, cloudprovider.CLOUD_CAPABILITY_WAF)
capa.DisabledCdnBrands, _ = CloudaccountManager.getBrandsOfCapability(region, zone, domainId, tristate.False, cloudprovider.CLOUD_CAPABILITY_CDN)
for brand, info := range brandMaps {
for capability, enabled := range info {
readOnly := false
if strings.HasSuffix(capability, cloudprovider.READ_ONLY_SUFFIX) {
readOnly = true
capability = strings.TrimSuffix(capability, cloudprovider.READ_ONLY_SUFFIX)
}
switch capability {
case cloudprovider.CLOUD_CAPABILITY_COMPUTE:
appendBrand(&capa.ComputeEngineBrands, &capa.DisabledComputeEngineBrands, &capa.ReadOnlyComputeEngineBrands, &capa.ReadOnlyDisabledComputeEngineBrands, brand, capability, enabled, readOnly)
case cloudprovider.CLOUD_CAPABILITY_RDS:
appendBrand(&capa.RdsEngineBrands, &capa.DisabledRdsEngineBrands, &capa.ReadOnlyRdsEngineBrands, &capa.ReadOnlyDisabledRdsEngineBrands, brand, capability, enabled, readOnly)
case cloudprovider.CLOUD_CAPABILITY_CACHE:
appendBrand(&capa.RedisEngineBrands, &capa.DisabledRedisEngineBrands, &capa.ReadOnlyRedisEngineBrands, &capa.ReadOnlyDisabledRedisEngineBrands, brand, capability, enabled, readOnly)
case cloudprovider.CLOUD_CAPABILITY_NETWORK:
appendBrand(&capa.NetworkManageBrands, &capa.DisabledNetworkManageBrands, &capa.ReadOnlyNetworkManageBrands, &capa.ReadOnlyDisabledNetworkManageBrands, brand, capability, enabled, readOnly)
case cloudprovider.CLOUD_CAPABILITY_OBJECTSTORE:
appendBrand(&capa.ObjectStorageBrands, &capa.DisabledObjectStorageBrands, &capa.ReadOnlyObjectStorageBrands, &capa.ReadOnlyDisabledObjectStorageBrands, brand, capability, enabled, readOnly)
case cloudprovider.CLOUD_CAPABILITY_CLOUDID:
appendBrand(&capa.CloudIdBrands, &capa.DisabledCloudIdBrands, &capa.ReadOnlyCloudIdBrands, &capa.ReadOnlyDisabledCloudIdBrands, brand, capability, enabled, readOnly)
case cloudprovider.CLOUD_CAPABILITY_PUBLIC_IP:
appendBrand(&capa.PublicIpBrands, &capa.DisabledPublicIpBrands, &capa.ReadOnlyPublicIpBrands, &capa.ReadOnlyDisabledPublicIpBrands, brand, capability, enabled, readOnly)
case cloudprovider.CLOUD_CAPABILITY_LOADBALANCER:
appendBrand(&capa.LoadbalancerEngineBrands, &capa.DisabledLoadbalancerEngineBrands, &capa.ReadOnlyLoadbalancerEngineBrands, &capa.ReadOnlyDisabledLoadbalancerEngineBrands, brand, capability, enabled, readOnly)
case cloudprovider.CLOUD_CAPABILITY_SAML_AUTH:
appendBrand(&capa.SamlAuthBrands, &capa.DisabledSamlAuthBrands, &capa.ReadOnlySamlAuthBrands, &capa.ReadOnlyDisabledSamlAuthBrands, brand, capability, enabled, readOnly)
case cloudprovider.CLOUD_CAPABILITY_NAT:
appendBrand(&capa.NatBrands, &capa.DisabledNatBrands, &capa.ReadOnlyNatBrands, &capa.ReadOnlyDisabledNatBrands, brand, capability, enabled, readOnly)
case cloudprovider.CLOUD_CAPABILITY_NAS:
appendBrand(&capa.NasBrands, &capa.DisabledNasBrands, &capa.ReadOnlyNasBrands, &capa.ReadOnlyDisabledNasBrands, brand, capability, enabled, readOnly)
case cloudprovider.CLOUD_CAPABILITY_WAF:
appendBrand(&capa.WafBrands, &capa.DisabledWafBrands, &capa.ReadOnlyWafBrands, &capa.ReadOnlyDisabledWafBrands, brand, capability, enabled, readOnly)
case cloudprovider.CLOUD_CAPABILITY_CDN:
appendBrand(&capa.CdnBrands, &capa.DisabledCdnBrands, &capa.ReadOnlyCdnBrands, &capa.ReadOnlyDisabledCdnBrands, brand, capability, enabled, readOnly)
default:
}
}
}
return
}
+43 -38
View File
@@ -2509,16 +2509,9 @@ func (manager *SCloudaccountManager) queryCloudAccountByCapability(region *SClou
providers := CloudproviderManager.Query().SubQuery()
q := manager.Query()
q = q.Join(providers, sqlchemy.Equals(q.Field("id"), providers.Field("cloudaccount_id")))
if len(capability) > 0 {
cloudproviderCapabilities := CloudproviderCapabilityManager.Query().SubQuery()
q = q.Join(cloudproviderCapabilities, sqlchemy.Equals(providers.Field("id"), cloudproviderCapabilities.Field("cloudprovider_id")))
q = q.Filter(sqlchemy.Equals(cloudproviderCapabilities.Field("capability"), capability))
}
if enabled.IsTrue() {
q = q.IsTrue("enabled")
} else if enabled.IsFalse() {
q = q.IsFalse("enabled")
}
cloudproviderCapabilities := CloudproviderCapabilityManager.Query().SubQuery()
q = q.Join(cloudproviderCapabilities, sqlchemy.Equals(providers.Field("id"), cloudproviderCapabilities.Field("cloudprovider_id")))
q = q.Filter(sqlchemy.Equals(cloudproviderCapabilities.Field("capability"), capability))
if zone != nil {
region, _ = zone.GetRegion()
}
@@ -2529,42 +2522,54 @@ func (manager *SCloudaccountManager) queryCloudAccountByCapability(region *SClou
}
if len(domainId) > 0 {
q = manager.filterByDomainId(q, domainId)
/*q = q.Filter(sqlchemy.OR(
sqlchemy.AND(
sqlchemy.Equals(q.Field("share_mode"), api.CLOUD_ACCOUNT_SHARE_MODE_ACCOUNT_DOMAIN),
sqlchemy.Equals(q.Field("domain_id"), domainId),
),
sqlchemy.Equals(q.Field("share_mode"), api.CLOUD_ACCOUNT_SHARE_MODE_SYSTEM),
sqlchemy.AND(
sqlchemy.Equals(q.Field("share_mode"), api.CLOUD_ACCOUNT_SHARE_MODE_PROVIDER_DOMAIN),
sqlchemy.Equals(providers.Field("domain_id"), domainId),
),
))*/
}
return q
}
func (manager *SCloudaccountManager) getBrandsOfCapability(region *SCloudregion, zone *SZone, domainId string, enabled tristate.TriState, capability string) ([]string, error) {
subq := manager.queryCloudAccountByCapability(region, zone, domainId, enabled, capability).SubQuery()
q := subq.Query(subq.Field("brand")).Distinct()
rows, err := q.Rows()
if err != nil {
if errors.Cause(err) != sql.ErrNoRows {
return nil, errors.Wrap(err, "rows")
}
return []string{}, nil
type sBrandCapability struct {
Brand string
Enabled bool
Capability string
}
func (manager *SCloudaccountManager) getBrandsOfCapability(region *SCloudregion, zone *SZone, domainId string) ([]sBrandCapability, error) {
accounts := manager.Query("id", "enabled", "brand")
if len(domainId) > 0 {
accounts = manager.filterByDomainId(accounts, domainId)
}
ret := make([]string, 0)
defer rows.Close()
for rows.Next() {
var brand string
err := rows.Scan(&brand)
accountSQ := accounts.SubQuery()
providers := CloudproviderManager.Query().SubQuery()
q := CloudproviderCapabilityManager.Query("capability")
q.AppendField(accountSQ.Field("enabled"))
q.AppendField(accountSQ.Field("brand"))
q = q.Join(providers, sqlchemy.Equals(q.Field("cloudprovider_id"), providers.Field("id")))
q = q.Join(accountSQ, sqlchemy.Equals(providers.Field("cloudaccount_id"), accountSQ.Field("id")))
if zone != nil {
var err error
region, err = zone.GetRegion()
if err != nil {
return nil, errors.Wrap(err, "rows.Scan")
return nil, errors.Wrapf(err, "GetRegion")
}
ret = append(ret, brand)
}
return ret, nil
if region != nil {
providerregions := CloudproviderRegionManager.Query().SubQuery()
q = q.Join(providerregions, sqlchemy.Equals(q.Field("cloudprovider_id"), providerregions.Field("cloudprovider_id"))).Filter(
sqlchemy.Equals(providerregions.Field("cloudregion_id"), region.Id),
)
}
q = q.Distinct()
result := []sBrandCapability{}
err := q.All(&result)
if err != nil {
return nil, errors.Wrapf(err, "q.All")
}
return result, nil
}
func (account *SCloudaccount) getAccountShareInfo() apis.SAccountShareInfo {
@@ -70,6 +70,7 @@ func (manager *SCloudproviderCapabilityManager) setRegionCapabilities(ctx contex
if err != nil {
return errors.Wrap(err, "manager.getCapabilities")
}
oldCapas := stringutils2.NewSortedStrings(oldCapabilities)
newCapas := stringutils2.NewSortedStrings(capabilities)
deleted, _, added := stringutils2.Split(oldCapas, newCapas)
+3 -3
View File
@@ -689,9 +689,9 @@ func (region *SAliyunClient) GetCapabilities() []string {
cloudprovider.CLOUD_CAPABILITY_NAT,
cloudprovider.CLOUD_CAPABILITY_NAS,
cloudprovider.CLOUD_CAPABILITY_WAF,
cloudprovider.CLOUD_CAPABILITY_MONGO_DB,
cloudprovider.CLOUD_CAPABILITY_ES,
cloudprovider.CLOUD_CAPABILITY_KAFKA,
cloudprovider.CLOUD_CAPABILITY_MONGO_DB + cloudprovider.READ_ONLY_SUFFIX,
cloudprovider.CLOUD_CAPABILITY_ES + cloudprovider.READ_ONLY_SUFFIX,
cloudprovider.CLOUD_CAPABILITY_KAFKA + cloudprovider.READ_ONLY_SUFFIX,
}
return caps
}
+2 -2
View File
@@ -600,8 +600,8 @@ func (self *SAwsClient) GetCapabilities() []string {
cloudprovider.CLOUD_CAPABILITY_NETWORK,
cloudprovider.CLOUD_CAPABILITY_LOADBALANCER,
cloudprovider.CLOUD_CAPABILITY_OBJECTSTORE,
cloudprovider.CLOUD_CAPABILITY_RDS,
cloudprovider.CLOUD_CAPABILITY_CACHE,
cloudprovider.CLOUD_CAPABILITY_RDS + cloudprovider.READ_ONLY_SUFFIX,
cloudprovider.CLOUD_CAPABILITY_CACHE + cloudprovider.READ_ONLY_SUFFIX,
// cloudprovider.CLOUD_CAPABILITY_EVENT,
cloudprovider.CLOUD_CAPABILITY_CLOUDID,
cloudprovider.CLOUD_CAPABILITY_DNSZONE,
+5 -5
View File
@@ -985,16 +985,16 @@ func (self *SAzureClient) GetCapabilities() []string {
cloudprovider.CLOUD_CAPABILITY_PROJECT,
cloudprovider.CLOUD_CAPABILITY_COMPUTE,
cloudprovider.CLOUD_CAPABILITY_NETWORK,
cloudprovider.CLOUD_CAPABILITY_LOADBALANCER,
cloudprovider.CLOUD_CAPABILITY_LOADBALANCER + cloudprovider.READ_ONLY_SUFFIX,
cloudprovider.CLOUD_CAPABILITY_OBJECTSTORE,
cloudprovider.CLOUD_CAPABILITY_RDS,
cloudprovider.CLOUD_CAPABILITY_CACHE,
cloudprovider.CLOUD_CAPABILITY_RDS + cloudprovider.READ_ONLY_SUFFIX,
cloudprovider.CLOUD_CAPABILITY_CACHE + cloudprovider.READ_ONLY_SUFFIX,
cloudprovider.CLOUD_CAPABILITY_EVENT,
cloudprovider.CLOUD_CAPABILITY_CLOUDID,
cloudprovider.CLOUD_CAPABILITY_SAML_AUTH,
cloudprovider.CLOUD_CAPABILITY_WAF,
cloudprovider.CLOUD_CAPABILITY_CACHE,
cloudprovider.CLOUD_CAPABILITY_APP,
cloudprovider.CLOUD_CAPABILITY_CACHE + cloudprovider.READ_ONLY_SUFFIX,
cloudprovider.CLOUD_CAPABILITY_APP + cloudprovider.READ_ONLY_SUFFIX,
}
return caps
}
+1 -1
View File
@@ -237,7 +237,7 @@ func (self *SCloudpodsClient) GetRegions() ([]SRegion, error) {
func (self *SCloudpodsClient) GetCapabilities() []string {
return []string{
cloudprovider.CLOUD_CAPABILITY_PROJECT,
cloudprovider.CLOUD_CAPABILITY_PROJECT + cloudprovider.READ_ONLY_SUFFIX,
cloudprovider.CLOUD_CAPABILITY_COMPUTE,
cloudprovider.CLOUD_CAPABILITY_NETWORK,
}
+2 -2
View File
@@ -144,8 +144,8 @@ func (ec *SEcloudClient) GetRegionById(id string) (*SRegion, error) {
func (ec *SEcloudClient) GetCapabilities() []string {
caps := []string{
cloudprovider.CLOUD_CAPABILITY_COMPUTE,
cloudprovider.CLOUD_CAPABILITY_NETWORK,
cloudprovider.CLOUD_CAPABILITY_COMPUTE + cloudprovider.READ_ONLY_SUFFIX,
cloudprovider.CLOUD_CAPABILITY_NETWORK + cloudprovider.READ_ONLY_SUFFIX,
}
return caps
}
+7 -3
View File
@@ -211,10 +211,14 @@ func (p *SJdcloudProvider) GetCloudRegionExternalIdPrefix() string {
}
func (p *SJdcloudProvider) GetCapabilities() []string {
iRegions := p.GetIRegions()
if len(iRegions) > 0 {
return iRegions[0].GetCapabilities()
}
caps := []string{
cloudprovider.CLOUD_CAPABILITY_COMPUTE,
cloudprovider.CLOUD_CAPABILITY_NETWORK,
cloudprovider.CLOUD_CAPABILITY_RDS,
cloudprovider.CLOUD_CAPABILITY_COMPUTE + cloudprovider.READ_ONLY_SUFFIX,
cloudprovider.CLOUD_CAPABILITY_NETWORK + cloudprovider.READ_ONLY_SUFFIX,
cloudprovider.CLOUD_CAPABILITY_RDS + cloudprovider.READ_ONLY_SUFFIX,
}
return caps
}
+3 -2
View File
@@ -337,7 +337,8 @@ func (r *SRegion) GetProvider() string {
func (r *SRegion) GetCapabilities() []string {
return []string{
cloudprovider.CLOUD_CAPABILITY_COMPUTE,
cloudprovider.CLOUD_CAPABILITY_NETWORK,
cloudprovider.CLOUD_CAPABILITY_COMPUTE + cloudprovider.READ_ONLY_SUFFIX,
cloudprovider.CLOUD_CAPABILITY_NETWORK + cloudprovider.READ_ONLY_SUFFIX,
cloudprovider.CLOUD_CAPABILITY_RDS + cloudprovider.READ_ONLY_SUFFIX,
}
}
+4 -4
View File
@@ -1097,10 +1097,10 @@ func (self *SQcloudClient) GetCapabilities() []string {
cloudprovider.CLOUD_CAPABILITY_PUBLIC_IP,
cloudprovider.CLOUD_CAPABILITY_INTERVPCNETWORK,
cloudprovider.CLOUD_CAPABILITY_SAML_AUTH,
cloudprovider.CLOUD_CAPABILITY_MONGO_DB,
cloudprovider.CLOUD_CAPABILITY_ES,
cloudprovider.CLOUD_CAPABILITY_KAFKA,
cloudprovider.CLOUD_CAPABILITY_CDN,
cloudprovider.CLOUD_CAPABILITY_MONGO_DB + cloudprovider.READ_ONLY_SUFFIX,
cloudprovider.CLOUD_CAPABILITY_ES + cloudprovider.READ_ONLY_SUFFIX,
cloudprovider.CLOUD_CAPABILITY_KAFKA + cloudprovider.READ_ONLY_SUFFIX,
cloudprovider.CLOUD_CAPABILITY_CDN + cloudprovider.READ_ONLY_SUFFIX,
}
return caps
}