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:
yunion-ci-robot
2021-08-25 08:49:05 +08:00
committed by GitHub
2 changed files with 21 additions and 1 deletions
+12 -1
View File
@@ -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 {
+9
View File
@@ -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()