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:
yunion-ci-robot
2019-04-19 12:45:10 +08:00
committed by GitHub
4 changed files with 21 additions and 1 deletions
+2
View File
@@ -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"
)
+8
View File
@@ -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")
}
+10
View File
@@ -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")
}
+1 -1
View File
@@ -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"`