diff --git a/pkg/compute/hostdrivers/kvm.go b/pkg/compute/hostdrivers/kvm.go index be1ce2180a..cc14d9cd0b 100644 --- a/pkg/compute/hostdrivers/kvm.go +++ b/pkg/compute/hostdrivers/kvm.go @@ -46,7 +46,7 @@ func (self *SKVMHostDriver) CheckAndSetCacheImage(ctx context.Context, host *mod return err } cacheImage := obj.(*models.SCachedimage) - srcHostCacheImage, err := cacheImage.ChooseSourceStoragecacheInRange(models.HOST_TYPE_HYPERVISOR, []string{host.Id}, []*models.SZone{host.GetZone()}) + srcHostCacheImage, err := cacheImage.ChooseSourceStoragecacheInRange(models.HOST_TYPE_HYPERVISOR, []string{host.Id}, []interface{}{host.GetZone()}) if err != nil { return err } diff --git a/pkg/compute/models/cachedimages.go b/pkg/compute/models/cachedimages.go index 10ff08b712..a68a53c093 100644 --- a/pkg/compute/models/cachedimages.go +++ b/pkg/compute/models/cachedimages.go @@ -322,7 +322,7 @@ func (self *SCachedimage) addRefCount() { } } -func (self *SCachedimage) ChooseSourceStoragecacheInRange(hostType string, excludes []string, rangeObjs interface{}) (*SStoragecachedimage, error) { +func (self *SCachedimage) ChooseSourceStoragecacheInRange(hostType string, excludes []string, rangeObjs []interface{}) (*SStoragecachedimage, error) { storageCachedImage := StoragecachedimageManager.Query().SubQuery() storage := StorageManager.Query().SubQuery() hostStorage := HoststorageManager.Query().SubQuery() @@ -346,16 +346,15 @@ func (self *SCachedimage) ChooseSourceStoragecacheInRange(hostType string, exclu q = q.Filter(sqlchemy.Equals(host.Field("host_type"), hostType)) } - switch v := rangeObjs.(type) { - case []*SZone: - for _, obj := range v { - q = q.Filter(sqlchemy.Equals(host.Field("zone_id"), obj.Id)) - } - case []*SCloudprovider: - for _, obj := range v { - q = q.Filter(sqlchemy.Equals(host.Field("manager_id"), obj.Id)) + for _, rangeObj := range rangeObjs { + switch v := rangeObj.(type) { + case *SZone: + q = q.Filter(sqlchemy.Equals(host.Field("zone_id"), v.Id)) + case *SCloudprovider: + q = q.Filter(sqlchemy.Equals(host.Field("manager_id"), v.Id)) } } + err := db.FetchModelObjects(StoragecachedimageManager, q, &scimgs) if err != nil { return nil, err