From 830aa07b61e8e5de0ff59e73b9769af228747d05 Mon Sep 17 00:00:00 2001 From: ioito Date: Mon, 24 Jun 2019 18:51:54 +0800 Subject: [PATCH] fix import order --- docs/network/networks.yaml | 4 ++-- docs/parameters/common.yaml | 5 ----- docs/parameters/network.yaml | 5 ----- docs/parameters/serversku.yaml | 9 +++++++-- docs/serversku/serverskus.yaml | 1 + pkg/compute/models/skus.go | 12 ++++++++++++ pkg/util/openstack/flavor.go | 3 +-- pkg/util/zstack/offering.go | 6 ++---- 8 files changed, 25 insertions(+), 20 deletions(-) diff --git a/docs/network/networks.yaml b/docs/network/networks.yaml index 5eb7eb5e15..fc9ffb4f6a 100644 --- a/docs/network/networks.yaml +++ b/docs/network/networks.yaml @@ -21,13 +21,13 @@ get: - $ref: '../parameters/common.yaml#/offset' - $ref: '../parameters/common.yaml#/zone' - $ref: '../parameters/common.yaml#/region' - - $ref: '../parameters/common.yaml#/brand' + - $ref: '../parameters/common.yaml#/brand' + - $ref: '../parameters/common.yaml#/city' - $ref: '../parameters/network.yaml#/ip' - $ref: '../parameters/network.yaml#/zone' - $ref: '../parameters/network.yaml#/wire' - $ref: '../parameters/network.yaml#/vpc' - $ref: '../parameters/network.yaml#/region' - - $ref: '../parameters/network.yaml#/city' - $ref: '../parameters/network.yaml#/server_type' responses: 200: diff --git a/docs/parameters/common.yaml b/docs/parameters/common.yaml index 1527d39234..db18389fca 100644 --- a/docs/parameters/common.yaml +++ b/docs/parameters/common.yaml @@ -78,11 +78,6 @@ region: in: query type: string description: 过滤此区域底下的资源 -cloudregion: - name: cloudregion - in: query - type: string - description: 过滤此区域底下的资源 cloud_env: name: cloud_env in: query diff --git a/docs/parameters/network.yaml b/docs/parameters/network.yaml index ca81aad894..98d10ae1bf 100644 --- a/docs/parameters/network.yaml +++ b/docs/parameters/network.yaml @@ -29,11 +29,6 @@ region: in: query type: string description: 查询在这个region中的网络 -city: - name: city - in: query - type: string - description: 查询在这个city中的网络 server_type: name: server_type in: query diff --git a/docs/parameters/serversku.yaml b/docs/parameters/serversku.yaml index ff4919983d..cf04260fa3 100644 --- a/docs/parameters/serversku.yaml +++ b/docs/parameters/serversku.yaml @@ -10,7 +10,12 @@ memory_size_mb: type: integer description: 根据内存大小过滤套餐 provider: - name: string + name: provider in: query type: string - description: 根据平台过滤套餐信息,若平台是Huawei,建议加上instance_type_family.notin(e1, e2, e3, d1, d2, i3, h2, g1, g3, p2v, p1, pi1, fp1, fp1c)过滤FPGA镜像 \ No newline at end of file + description: 根据平台过滤套餐信息,若平台是Huawei,建议加上instance_type_family.notin(e1, e2, e3, d1, d2, i3, h2, g1, g3, p2v, p1, pi1, fp1, fp1c)过滤FPGA镜像 +usable: + name: usable + in: query + type: boolean + description: 过滤所在region底下有ip子网的套餐 \ No newline at end of file diff --git a/docs/serversku/serverskus.yaml b/docs/serversku/serverskus.yaml index a3c1545511..a4b3b1d945 100644 --- a/docs/serversku/serverskus.yaml +++ b/docs/serversku/serverskus.yaml @@ -9,6 +9,7 @@ get: - $ref: '../parameters/common.yaml#/city' - $ref: '../parameters/serversku.yaml#/provider' - $ref: '../parameters/serversku.yaml#/memory_size_mb' + - $ref: '../parameters/serversku.yaml#/usable' responses: 200: description: 实例套餐列表信息 diff --git a/pkg/compute/models/skus.go b/pkg/compute/models/skus.go index 6550bf844f..1a212d9751 100644 --- a/pkg/compute/models/skus.go +++ b/pkg/compute/models/skus.go @@ -739,14 +739,26 @@ func (manager *SServerSkuManager) ListItemFilter(ctx context.Context, q *sqlchem return nil, err } + publicCloud := false + provider, _ := query.GetString("provider") + cloudEnvStr, _ := query.GetString("cloud_env") if cloudEnvStr == api.CLOUD_ENV_PUBLIC_CLOUD || jsonutils.QueryBoolean(query, "public_cloud", false) || jsonutils.QueryBoolean(query, "is_public", false) { + publicCloud = true q = q.Filter(sqlchemy.In(q.Field("provider"), CloudproviderManager.GetPublicProviderProvidersQuery())) } if cloudEnvStr == api.CLOUD_ENV_PRIVATE_CLOUD || jsonutils.QueryBoolean(query, "private_cloud", false) || jsonutils.QueryBoolean(query, "is_private", false) { q = q.Filter(sqlchemy.In(q.Field("provider"), CloudproviderManager.GetPrivateProviderProvidersQuery())) } + if utils.IsInStringArray(provider, cloudprovider.GetPublicProviders()) { + publicCloud = true + } + + if usable, _ := query.Bool("usable"); usable { + q = providerFilter(q, provider, publicCloud) + } + data := query.(*jsonutils.JSONDict) q, err = validators.ApplyModelFilters(q, data, []*validators.ModelFilterOptions{ {Key: "zone", ModelKeyword: "zone", OwnerId: userCred}, diff --git a/pkg/util/openstack/flavor.go b/pkg/util/openstack/flavor.go index 226c5f3f1f..1ebb427813 100644 --- a/pkg/util/openstack/flavor.go +++ b/pkg/util/openstack/flavor.go @@ -18,11 +18,10 @@ import ( "fmt" "github.com/pkg/errors" - "yunion.io/x/onecloud/pkg/cloudprovider" - "yunion.io/x/jsonutils" api "yunion.io/x/onecloud/pkg/apis/compute" + "yunion.io/x/onecloud/pkg/cloudprovider" "yunion.io/x/onecloud/pkg/multicloud" ) diff --git a/pkg/util/zstack/offering.go b/pkg/util/zstack/offering.go index d492913693..35d9b1e9dd 100644 --- a/pkg/util/zstack/offering.go +++ b/pkg/util/zstack/offering.go @@ -18,13 +18,11 @@ import ( "fmt" "github.com/pkg/errors" - "yunion.io/x/onecloud/pkg/cloudprovider" - - "yunion.io/x/onecloud/pkg/multicloud" "yunion.io/x/jsonutils" - api "yunion.io/x/onecloud/pkg/apis/compute" + "yunion.io/x/onecloud/pkg/cloudprovider" + "yunion.io/x/onecloud/pkg/multicloud" ) type SInstanceOffering struct {