mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-21 14:19:49 +08:00
添加disk provider过滤参数
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user