mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
Merge pull request #17519 from ioito/hotfix/qx-server-template-filter-by-cloud-env
fix(region): support filter by cloud_env for servertemplate
This commit is contained in:
@@ -28,6 +28,7 @@ import (
|
||||
"yunion.io/x/sqlchemy"
|
||||
|
||||
"yunion.io/x/onecloud/pkg/apis"
|
||||
api "yunion.io/x/onecloud/pkg/apis/compute"
|
||||
computeapis "yunion.io/x/onecloud/pkg/apis/compute"
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/cmdline"
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/db"
|
||||
@@ -644,6 +645,23 @@ func (manager *SGuestTemplateManager) ListItemFilter(
|
||||
return nil, errors.Wrap(err, "SVpcResourceBaseManager.ListItemFilter")
|
||||
}
|
||||
}
|
||||
if len(input.CloudEnv) > 0 {
|
||||
cloudregions := CloudregionManager.Query().SubQuery()
|
||||
q = q.Join(cloudregions, sqlchemy.Equals(q.Field("cloudregion_id"), cloudregions.Field("id")))
|
||||
switch input.CloudEnv {
|
||||
case api.CLOUD_ENV_PUBLIC_CLOUD:
|
||||
q = q.Filter(sqlchemy.In(cloudregions.Field("provider"), CloudproviderManager.GetPublicProviderProvidersQuery()))
|
||||
case api.CLOUD_ENV_PRIVATE_CLOUD:
|
||||
q = q.Filter(sqlchemy.In(cloudregions.Field("provider"), CloudproviderManager.GetPrivateProviderProvidersQuery()))
|
||||
case api.CLOUD_ENV_ON_PREMISE:
|
||||
q = q.Filter(sqlchemy.Equals(cloudregions.Field("provider"), api.CLOUD_PROVIDER_ONECLOUD))
|
||||
case api.CLOUD_ENV_PRIVATE_ON_PREMISE:
|
||||
q = q.Filter(sqlchemy.OR(
|
||||
sqlchemy.Equals(cloudregions.Field("provider"), api.CLOUD_PROVIDER_ONECLOUD),
|
||||
sqlchemy.In(cloudregions.Field("provider"), CloudproviderManager.GetPrivateProviderProvidersQuery()),
|
||||
))
|
||||
}
|
||||
}
|
||||
if len(input.BillingType) > 0 {
|
||||
q = q.Equals("billing_type", input.BillingType)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user