mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
fix: cloud-provider-list support filter by cloudregion
This commit is contained in:
@@ -222,6 +222,8 @@ type CloudproviderListInput struct {
|
||||
|
||||
UsableResourceListInput
|
||||
|
||||
CloudregionResourceInput
|
||||
|
||||
CapabilityListInput
|
||||
|
||||
SyncableBaseResourceListInput
|
||||
|
||||
@@ -1030,7 +1030,7 @@ func (manager *SCloudproviderManager) ListItemFilter(
|
||||
accountObj, err := CloudaccountManager.FetchByIdOrName(userCred, accountStr)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2(manager.Keyword(), accountStr)
|
||||
return nil, httperrors.NewResourceNotFoundError2("cloudaccount", accountStr)
|
||||
} else {
|
||||
return nil, httperrors.NewGeneralError(err)
|
||||
}
|
||||
@@ -1063,6 +1063,19 @@ func (manager *SCloudproviderManager) ListItemFilter(
|
||||
q = q.Filter(sqlchemy.In(q.Field("id"), sq.SubQuery()))
|
||||
}
|
||||
|
||||
if len(query.Cloudregion) > 0 {
|
||||
region, err := CloudregionManager.FetchByIdOrName(userCred, query.Cloudregion)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2("cloudregion", query.Cloudregion)
|
||||
}
|
||||
return nil, httperrors.NewGeneralError(err)
|
||||
}
|
||||
pr := CloudproviderRegionManager.Query().SubQuery()
|
||||
sq := pr.Query(pr.Field("cloudprovider_id")).Equals("cloudregion_id", region.GetId()).Distinct()
|
||||
q = q.In("id", sq)
|
||||
}
|
||||
|
||||
q, err := manager.SEnabledStatusStandaloneResourceBaseManager.ListItemFilter(ctx, q, userCred, query.EnabledStatusStandaloneResourceListInput)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "SEnabledStatusStandaloneResourceBaseManager.ListItemFilter")
|
||||
|
||||
Reference in New Issue
Block a user