vpc list add param vpc_usable

This commit is contained in:
TangBin
2020-02-28 11:34:49 +08:00
parent b2317f07d0
commit 48a28a6adb
2 changed files with 13 additions and 7 deletions
+1
View File
@@ -53,6 +53,7 @@ type VpcListInput struct {
ManagedResourceListInput
UsableResourceListInput
UsableVpcResourceListInput
// filter by globalvpc
Globalvpc string `json:"globalvpc"`
+12 -7
View File
@@ -794,7 +794,9 @@ func (manager *SVpcManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQue
return nil, err
}
if query.Usable != nil && *query.Usable {
usable := (query.Usable != nil && *query.Usable)
vpcUsable := (query.UsableVpc != nil && *query.UsableVpc)
if vpcUsable || usable {
regions := CloudregionManager.Query().SubQuery()
cloudproviders := CloudproviderManager.Query().SubQuery()
providerSQ := cloudproviders.Query(cloudproviders.Field("id")).Filter(
@@ -814,14 +816,17 @@ func (manager *SVpcManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQue
),
),
)
wires := WireManager.Query().SubQuery()
networks := NetworkManager.Query().SubQuery()
sq := wires.Query(wires.Field("vpc_id")).Join(networks, sqlchemy.Equals(wires.Field("id"), networks.Field("wire_id"))).Filter(
sqlchemy.Equals(networks.Field("status"), api.NETWORK_STATUS_AVAILABLE),
)
if usable {
wires := WireManager.Query().SubQuery()
networks := NetworkManager.Query().SubQuery()
q = q.In("id", sq.SubQuery())
sq := wires.Query(wires.Field("vpc_id")).Join(networks, sqlchemy.Equals(wires.Field("id"), networks.Field("wire_id"))).Filter(
sqlchemy.Equals(networks.Field("status"), api.NETWORK_STATUS_AVAILABLE),
)
q = q.In("id", sq.SubQuery())
}
}
globalVpcStr := query.Globalvpc