fix(region): pve cdrom with host info

This commit is contained in:
ioito
2023-11-09 12:04:13 +08:00
parent 540a63afb7
commit 9c58a8f644
2 changed files with 32 additions and 0 deletions
+15
View File
@@ -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
}
+17
View File
@@ -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