mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-21 14:19:49 +08:00
fix(region): pve cdrom with host info
This commit is contained in:
@@ -160,6 +160,21 @@ func (self *SProxmoxGuestDriver) ValidateCreateData(ctx context.Context, userCre
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
if len(input.Cdrom) > 0 {
|
||||
image, err := models.CachedimageManager.GetCachedimageById(ctx, userCred, input.Cdrom, false)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(image.ExternalId) > 0 {
|
||||
hosts, err := image.GetHosts()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(input.PreferHost) == 0 && len(hosts) == 1 {
|
||||
input.PreferHost = hosts[0].Id
|
||||
}
|
||||
}
|
||||
}
|
||||
return input, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -142,6 +142,23 @@ func (self *SCachedimage) isRefreshSessionExpire() bool {
|
||||
}
|
||||
}
|
||||
|
||||
func (self *SCachedimage) GetHosts() ([]SHost, error) {
|
||||
q := HostManager.Query().Distinct()
|
||||
hs := HoststorageManager.Query().SubQuery()
|
||||
storages := StorageManager.Query().SubQuery()
|
||||
scis := StoragecachedimageManager.Query().Equals("cachedimage_id", self.Id).Equals("status", api.CACHED_IMAGE_STATUS_ACTIVE).SubQuery()
|
||||
|
||||
q = q.Join(hs, sqlchemy.Equals(hs.Field("host_id"), q.Field("id")))
|
||||
q = q.Join(storages, sqlchemy.Equals(hs.Field("storage_id"), storages.Field("id")))
|
||||
q = q.Join(scis, sqlchemy.Equals(storages.Field("storagecache_id"), scis.Field("storagecache_id")))
|
||||
ret := []SHost{}
|
||||
err := db.FetchModelObjects(HostManager, q, &ret)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return ret, err
|
||||
}
|
||||
|
||||
func (self *SCachedimage) GetName() string {
|
||||
name, _ := self.Info.GetString("name")
|
||||
return name
|
||||
|
||||
Reference in New Issue
Block a user