mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
Merge pull request #11992 from zexi/automated-cherry-pick-of-#11991-upstream-release-3.8
Automated cherry pick of #11991: fix(region): try to find mediumType matched storage when create disk …
This commit is contained in:
@@ -198,7 +198,18 @@ func (self *SVirtualizedGuestDriver) ChooseHostStorage(host *models.SHost, guest
|
||||
if len(storageIds) == 0 {
|
||||
return host.GetLeastUsedStorage(diskConfig.Backend), nil
|
||||
}
|
||||
return models.StorageManager.FetchStorageById(storageIds[0]), nil
|
||||
ss, err := models.StorageManager.FetchStorageByIds(storageIds)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "fetch storages by ids: %v", storageIds)
|
||||
}
|
||||
// try to find mediumType matched storage
|
||||
for _, s := range ss {
|
||||
tmp := s
|
||||
if s.MediumType == diskConfig.Medium {
|
||||
return &tmp, nil
|
||||
}
|
||||
}
|
||||
return &ss[0], nil
|
||||
}
|
||||
|
||||
func (self *SVirtualizedGuestDriver) RequestGuestCreateInsertIso(ctx context.Context, imageId string, guest *models.SGuest, task taskman.ITask) error {
|
||||
|
||||
@@ -1334,6 +1334,15 @@ func (manager *SStorageManager) FetchStorageById(storageId string) *SStorage {
|
||||
return obj.(*SStorage)
|
||||
}
|
||||
|
||||
func (manager *SStorageManager) FetchStorageByIds(ids []string) ([]SStorage, error) {
|
||||
objs := make([]SStorage, 0)
|
||||
q := manager.Query().In("id", ids)
|
||||
if err := db.FetchModelObjects(manager, q, &objs); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return objs, nil
|
||||
}
|
||||
|
||||
func (manager *SStorageManager) InitializeData() error {
|
||||
storages := make([]SStorage, 0)
|
||||
q := manager.Query()
|
||||
|
||||
Reference in New Issue
Block a user