mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-21 06:09:39 +08:00
fix: cloud-region filter by domain not support share_mode
This commit is contained in:
@@ -126,8 +126,15 @@ func getDomainManagerSubq(domainId string) *sqlchemy.SSubQuery {
|
||||
q := providers.Query(providers.Field("id"))
|
||||
q = q.Join(accounts, sqlchemy.Equals(accounts.Field("id"), providers.Field("cloudaccount_id")))
|
||||
q = q.Filter(sqlchemy.OR(
|
||||
sqlchemy.Equals(accounts.Field("domain_id"), domainId),
|
||||
sqlchemy.AND(
|
||||
sqlchemy.Equals(providers.Field("domain_id"), domainId),
|
||||
sqlchemy.Equals(accounts.Field("share_mode"), api.CLOUD_ACCOUNT_SHARE_MODE_PROVIDER_DOMAIN),
|
||||
),
|
||||
sqlchemy.Equals(accounts.Field("share_mode"), api.CLOUD_ACCOUNT_SHARE_MODE_SYSTEM),
|
||||
sqlchemy.AND(
|
||||
sqlchemy.Equals(accounts.Field("domain_id"), domainId),
|
||||
sqlchemy.Equals(accounts.Field("share_mode"), api.CLOUD_ACCOUNT_SHARE_MODE_ACCOUNT_DOMAIN),
|
||||
),
|
||||
))
|
||||
q = q.Filter(sqlchemy.Equals(accounts.Field("status"), api.CLOUD_PROVIDER_CONNECTED))
|
||||
q = q.Filter(sqlchemy.IsTrue(accounts.Field("enabled")))
|
||||
|
||||
@@ -1311,8 +1311,15 @@ func (manager *SCloudproviderManager) FilterByOwner(q *sqlchemy.SQuery, owner mc
|
||||
cloudaccounts.Field("id"),
|
||||
))
|
||||
q = q.Filter(sqlchemy.OR(
|
||||
sqlchemy.Equals(q.Field("domain_id"), owner.GetProjectDomainId()),
|
||||
sqlchemy.AND(
|
||||
sqlchemy.Equals(q.Field("domain_id"), owner.GetProjectDomainId()),
|
||||
sqlchemy.Equals(cloudaccounts.Field("share_mode"), api.CLOUD_ACCOUNT_SHARE_MODE_PROVIDER_DOMAIN),
|
||||
),
|
||||
sqlchemy.Equals(cloudaccounts.Field("share_mode"), api.CLOUD_ACCOUNT_SHARE_MODE_SYSTEM),
|
||||
sqlchemy.AND(
|
||||
sqlchemy.Equals(cloudaccounts.Field("domain_id"), owner.GetProjectDomainId()),
|
||||
sqlchemy.Equals(cloudaccounts.Field("share_mode"), api.CLOUD_ACCOUNT_SHARE_MODE_ACCOUNT_DOMAIN),
|
||||
),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -538,8 +538,15 @@ func getCloudRegionIdByDomainId(domainId string) *sqlchemy.SSubQuery {
|
||||
q2 = q2.Join(providers, sqlchemy.Equals(providers.Field("id"), cloudproviderregions.Field("cloudprovider_id")))
|
||||
q2 = q2.Join(accounts, sqlchemy.Equals(providers.Field("cloudaccount_id"), accounts.Field("id")))
|
||||
q2 = q2.Filter(sqlchemy.OR(
|
||||
sqlchemy.Equals(accounts.Field("domain_id"), domainId),
|
||||
sqlchemy.IsTrue(accounts.Field("is_public")),
|
||||
sqlchemy.AND(
|
||||
sqlchemy.Equals(providers.Field("domain_id"), domainId),
|
||||
sqlchemy.Equals(accounts.Field("share_mode"), api.CLOUD_ACCOUNT_SHARE_MODE_PROVIDER_DOMAIN),
|
||||
),
|
||||
sqlchemy.Equals(accounts.Field("share_mode"), api.CLOUD_ACCOUNT_SHARE_MODE_SYSTEM),
|
||||
sqlchemy.AND(
|
||||
sqlchemy.Equals(accounts.Field("domain_id"), domainId),
|
||||
sqlchemy.Equals(accounts.Field("share_mode"), api.CLOUD_ACCOUNT_SHARE_MODE_ACCOUNT_DOMAIN),
|
||||
),
|
||||
))
|
||||
|
||||
return sqlchemy.Union(q1, q2).Query().SubQuery()
|
||||
|
||||
@@ -161,8 +161,15 @@ func managedResourceFilterByDomain(q *sqlchemy.SQuery, query jsonutils.JSONObjec
|
||||
subq := providers.Query(providers.Field("id"))
|
||||
subq = subq.Join(accounts, sqlchemy.Equals(providers.Field("cloudaccount_id"), accounts.Field("id")))
|
||||
subq = subq.Filter(sqlchemy.OR(
|
||||
sqlchemy.Equals(providers.Field("domain_id"), domain.GetId()),
|
||||
sqlchemy.AND(
|
||||
sqlchemy.Equals(providers.Field("domain_id"), domain.GetId()),
|
||||
sqlchemy.Equals(accounts.Field("share_mode"), api.CLOUD_ACCOUNT_SHARE_MODE_PROVIDER_DOMAIN),
|
||||
),
|
||||
sqlchemy.Equals(accounts.Field("share_mode"), api.CLOUD_ACCOUNT_SHARE_MODE_SYSTEM),
|
||||
sqlchemy.AND(
|
||||
sqlchemy.Equals(accounts.Field("domain_id"), domain.GetId()),
|
||||
sqlchemy.Equals(accounts.Field("share_mode"), api.CLOUD_ACCOUNT_SHARE_MODE_ACCOUNT_DOMAIN),
|
||||
),
|
||||
))
|
||||
if len(filterField) == 0 {
|
||||
q = q.Filter(sqlchemy.OR(
|
||||
|
||||
Reference in New Issue
Block a user