mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-21 06:09:39 +08:00
Merge branch 'release/2.1.0' of ssh://git.yunion.io/~quxuan/onecloud into feature/qx-disk-resize
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
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/log"
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/db/taskman"
|
||||
"yunion.io/x/onecloud/pkg/compute/models"
|
||||
)
|
||||
@@ -55,12 +56,19 @@ func (self *SAliyunHostDriver) RequestAllocateDiskOnStorage(host *models.SHost,
|
||||
return err
|
||||
} else {
|
||||
size = size >> 10
|
||||
if disk, err := iCloudStorage.CreateIDisk(disk.GetName(), int(size), ""); err != nil {
|
||||
if iDisk, err := iCloudStorage.CreateIDisk(disk.GetName(), int(size), ""); err != nil {
|
||||
return err
|
||||
} else {
|
||||
if _, err := disk.GetModelManager().TableSpec().Update(disk, func() error {
|
||||
disk.ExternalId = iDisk.GetGlobalId()
|
||||
return nil
|
||||
}); err != nil {
|
||||
log.Errorf("Update disk externalId err: %v", err)
|
||||
return err
|
||||
}
|
||||
data := jsonutils.NewDict()
|
||||
data.Add(jsonutils.NewInt(int64(disk.GetDiskSizeMB())), "disk_size")
|
||||
data.Add(jsonutils.NewString(disk.GetDiskFormat()), "disk_format")
|
||||
data.Add(jsonutils.NewInt(int64(iDisk.GetDiskSizeMB())), "disk_size")
|
||||
data.Add(jsonutils.NewString(iDisk.GetDiskFormat()), "disk_format")
|
||||
task.ScheduleRun(data)
|
||||
}
|
||||
}
|
||||
@@ -87,7 +95,7 @@ func (self *SAliyunHostDriver) RequestResizeDiskOnHost(host *models.SHost, stora
|
||||
return err
|
||||
} else if iDisk, err := iCloudStorage.GetIDisk(disk.GetExternalId()); err != nil {
|
||||
return err
|
||||
} else if err := iDisk.Resize(size); err != nil {
|
||||
} else if err := iDisk.Resize(size >> 10); err != nil {
|
||||
return err
|
||||
} else {
|
||||
task.ScheduleRun(jsonutils.Marshal(map[string]int64{"disk_size": size}))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/log"
|
||||
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/db"
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/db/taskman"
|
||||
@@ -54,9 +55,15 @@ func (self *DiskCreateTask) OnStartAllocateFailed(ctx context.Context, disk *mod
|
||||
|
||||
func (self *DiskCreateTask) OnDiskReady(ctx context.Context, disk *models.SDisk, data jsonutils.JSONObject) {
|
||||
diskSize, _ := data.Int("disk_size")
|
||||
disk.DiskSize = int(diskSize)
|
||||
disk.DiskFormat, _ = data.GetString("disk_format")
|
||||
disk.AccessPath, _ = data.GetString("disk_path")
|
||||
if _, err := disk.GetModelManager().TableSpec().Update(disk, func() error {
|
||||
disk.DiskSize = int(diskSize)
|
||||
disk.DiskFormat, _ = data.GetString("disk_format")
|
||||
disk.AccessPath, _ = data.GetString("disk_path")
|
||||
return nil
|
||||
}); err != nil {
|
||||
log.Errorf("update disk info error: %v", err)
|
||||
}
|
||||
|
||||
disk.SetStatus(self.UserCred, models.DISK_READY, "")
|
||||
self.CleanHostSchedCache(disk)
|
||||
db.OpsLog.LogEvent(disk, db.ACT_ALLOCATE, disk.GetShortDesc(), self.UserCred)
|
||||
|
||||
Reference in New Issue
Block a user