mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
Merge pull request #490 from swordqiu/hotfix/qj-cloud-env-filter-for-private_or_onpremise
fix: add cloud_env filter of private_or_onpremise
This commit is contained in:
@@ -50,4 +50,6 @@ const (
|
||||
CLOUD_ENV_PUBLIC_CLOUD = "public"
|
||||
CLOUD_ENV_PRIVATE_CLOUD = "private"
|
||||
CLOUD_ENV_ON_PREMISE = "onpremise"
|
||||
|
||||
CLOUD_ENV_PRIVATE_ON_PREMISE = "private_or_onpremise"
|
||||
)
|
||||
|
||||
@@ -431,6 +431,14 @@ func (manager *SCloudregionManager) ListItemFilter(ctx context.Context, q *sqlch
|
||||
))
|
||||
}
|
||||
|
||||
if cloudEnvStr == api.CLOUD_ENV_PRIVATE_ON_PREMISE {
|
||||
q = q.Filter(sqlchemy.OR(
|
||||
sqlchemy.In(q.Field("provider"), cloudprovider.GetPrivateProviders()),
|
||||
sqlchemy.In(q.Field("provider"), cloudprovider.GetOnPremiseProviders()),
|
||||
sqlchemy.IsNullOrEmpty(q.Field("provider")),
|
||||
))
|
||||
}
|
||||
|
||||
if jsonutils.QueryBoolean(query, "is_managed", false) {
|
||||
q = q.IsNotEmpty("external_id")
|
||||
}
|
||||
|
||||
@@ -547,6 +547,16 @@ func (manager *SZoneManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu
|
||||
))
|
||||
q = q.In("cloudregion_id", subq.SubQuery())
|
||||
}
|
||||
if cloudEnvStr == api.CLOUD_ENV_PRIVATE_ON_PREMISE {
|
||||
regions := CloudregionManager.Query().SubQuery()
|
||||
subq := regions.Query(regions.Field("id"))
|
||||
subq = subq.Filter(sqlchemy.OR(
|
||||
sqlchemy.In(regions.Field("provider"), cloudprovider.GetPrivateProviders()),
|
||||
sqlchemy.In(regions.Field("provider"), cloudprovider.GetOnPremiseProviders()),
|
||||
sqlchemy.IsNullOrEmpty(regions.Field("provider")),
|
||||
))
|
||||
q = q.In("cloudregion_id", subq.SubQuery())
|
||||
}
|
||||
if jsonutils.QueryBoolean(query, "is_managed", false) {
|
||||
q = q.IsNotEmpty("external_id")
|
||||
}
|
||||
|
||||
@@ -207,7 +207,7 @@ type BaseListOptions struct {
|
||||
Manager string `help:"List objects belonging to the cloud provider" json:"manager,omitempty"`
|
||||
Account string `help:"List objects belonging to the cloud account" json:"account,omitempty"`
|
||||
Provider string `help:"List objects from the provider" choices:"OneCloud|VMware|Aliyun|Qcloud|Azure|Aws|Huawei|Openstack|Ucloud" json:"provider,omitempty"`
|
||||
CloudEnv string `help:"Cloud environment" choices:"public|private|onpremise" json:"cloud_env,omitempty"`
|
||||
CloudEnv string `help:"Cloud environment" choices:"public|private|onpremise|private_or_onpremise" json:"cloud_env,omitempty"`
|
||||
PublicCloud *bool `help:"List objects belonging to public cloud" json:"public_cloud"`
|
||||
PrivateCloud *bool `help:"List objects belonging to private cloud" json:"private_cloud"`
|
||||
IsOnPremise *bool `help:"List objects belonging to on premise infrastructures" token:"on-premise" json:"is_on_premise"`
|
||||
|
||||
Reference in New Issue
Block a user