mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-19 02:37:24 +08:00
vpc list add param vpc_usable
This commit is contained in:
@@ -53,6 +53,7 @@ type VpcListInput struct {
|
||||
|
||||
ManagedResourceListInput
|
||||
UsableResourceListInput
|
||||
UsableVpcResourceListInput
|
||||
|
||||
// filter by globalvpc
|
||||
Globalvpc string `json:"globalvpc"`
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user