Merge pull request #47 in YUNIONIO/onecloud from ~QUXUAN/onecloud:hotfix/qx-disk-filter to release/2.1.0

* commit 'cb62883e5da15475de7097d958ed5044ec291d27':
  添加disk provider过滤参数
This commit is contained in:
邱剑
2018-08-13 20:23:45 +08:00
2 changed files with 17 additions and 5 deletions
+9 -5
View File
@@ -10,11 +10,12 @@ import (
func init() {
type DiskListOptions struct {
BaseListOptions
Unused bool `help:"Show unused disks"`
Share bool `help:"Show Share storage disks"`
Local bool `help:"Show Local storage disks"`
Guest string `help:"Guest ID or name"`
Storage string `help:"Storage ID or name"`
Unused bool `help:"Show unused disks"`
Share bool `help:"Show Share storage disks"`
Local bool `help:"Show Local storage disks"`
Guest string `help:"Guest ID or name"`
Storage string `help:"Storage ID or name"`
Provider string `help:"Provider for disk" choices:"Aliyun|VMware"`
}
R(&DiskListOptions{}, "disk-list", "List virtual disks", func(s *mcclient.ClientSession, suboptions *DiskListOptions) error {
params := FetchPagingParams(suboptions.BaseListOptions)
@@ -33,6 +34,9 @@ func init() {
if len(suboptions.Storage) > 0 {
params.Add(jsonutils.NewString(suboptions.Storage), "storage")
}
if len(suboptions.Provider) > 0 {
params.Add(jsonutils.NewString(suboptions.Provider), "provider")
}
result, err := modules.Disks.List(s, params)
if err != nil {
return err
+8
View File
@@ -115,6 +115,14 @@ func (manager *SDiskManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu
sq := storages.Query(storages.Field("id")).Filter(sqlchemy.In(storages.Field("storage_type"), STORAGE_LOCAL_TYPES))
q = q.Filter(sqlchemy.In(q.Field("storage_id"), sq))
}
if provier, _ := queryDict.GetString("provider"); len(provier) > 0 {
cloudprovider := CloudproviderManager.Query().SubQuery()
sq := storages.Query(storages.Field("id")).Join(cloudprovider,
sqlchemy.AND(
sqlchemy.Equals(cloudprovider.Field("id"), storages.Field("manager_id")),
sqlchemy.Equals(cloudprovider.Field("provider"), provier)))
q = q.Filter(sqlchemy.In(q.Field("storage_id"), sq))
}
guestId, _ := queryDict.GetString("guest")
if len(guestId) != 0 {
guest := GuestManager.FetchGuestById(guestId)