allow snapshot-list --manager <cloud-provider-id-or-name>

This commit is contained in:
Qiu Jian
2018-10-22 12:04:55 +08:00
parent b27be13cc3
commit 46a39b5612
4 changed files with 23 additions and 2 deletions
+5
View File
@@ -16,6 +16,8 @@ func init() {
Share bool `help:"Show shared snapshots"`
DiskType string `help: "Filter by disk type" choices:"sys|data"`
Provider string `help: "Cloud provider" choices:"Aliyun|VMware|Azure"`
Manager string `help:"Show snapshots belongs to a specific cloud provider"`
}
R(&SnapshotsListOptions{}, "snapshot-list", "Show snapshots", func(s *mcclient.ClientSession, args *SnapshotsListOptions) error {
params, err := args.BaseListOptions.Params()
@@ -41,6 +43,9 @@ func init() {
if len(args.Provider) > 0 {
params.Add(jsonutils.NewString(args.Provider), "provider")
}
if len(args.Manager) > 0 {
params.Add(jsonutils.NewString(args.Manager), "manager")
}
result, err := modules.Snapshots.List(s, params)
if err != nil {
return err
+1 -1
View File
@@ -11,7 +11,7 @@ func init() {
type VpcListOptions struct {
options.BaseListOptions
Region string `help:"ID or Name of region"`
Manager string `help:"Show regions belongs to the cloud provider"`
Manager string `help:"Show vpcs belongs to the cloud provider"`
}
R(&VpcListOptions{}, "vpc-list", "List VPCs", func(s *mcclient.ClientSession, args *VpcListOptions) error {
var params *jsonutils.JSONDict
+12
View File
@@ -112,6 +112,18 @@ func (manager *SSnapshotManager) ListItemFilter(ctx context.Context, q *sqlchemy
sq := cloudproviderTbl.Query(cloudproviderTbl.Field("id")).Equals("provider", provider)
q = q.In("manager_id", sq)
}
if managerStr := jsonutils.GetAnyString(query, []string{"manager", "manager_id"}); len(managerStr) > 0 {
managerObj, err := CloudproviderManager.FetchByIdOrName("", managerStr)
if err != nil {
if err == sql.ErrNoRows {
return nil, httperrors.NewNotFoundError("manager %s not found", managerStr)
}
return nil, httperrors.NewGeneralError(err)
}
q = q.Equals("manager_id", managerObj.GetId())
}
return q, nil
}
+5 -1
View File
@@ -83,7 +83,7 @@ func (manager *SStorageManager) GetContextManager() []db.IModelManager {
}
func (self *SStorage) ValidateDeleteCondition(ctx context.Context) error {
if self.GetHostCount() > 0 || self.GetDiskCount() > 0 {
if self.GetHostCount() > 0 || self.GetDiskCount() > 0 || self.GetSnapshotCount() > 0 {
return httperrors.NewNotEmptyError("Not an empty storage provider")
}
return self.SEnabledStatusStandaloneResourceBase.ValidateDeleteCondition(ctx)
@@ -97,6 +97,10 @@ func (self *SStorage) GetDiskCount() int {
return DiskManager.Query().Equals("storage_id", self.Id).Count()
}
func (self *SStorage) GetSnapshotCount() int {
return SnapshotManager.Query().Equals("storage_id", self.Id).Count()
}
func (self *SStorage) IsLocal() bool {
return self.StorageType == STORAGE_LOCAL || self.StorageType == STORAGE_BAREMETAL
}