diff --git a/pkg/compute/hostdrivers/kvm.go b/pkg/compute/hostdrivers/kvm.go index bb050254b2..ed9047dde1 100644 --- a/pkg/compute/hostdrivers/kvm.go +++ b/pkg/compute/hostdrivers/kvm.go @@ -45,7 +45,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 6b77db2a71..652701c9c8 100644 --- a/pkg/compute/models/cachedimages.go +++ b/pkg/compute/models/cachedimages.go @@ -283,7 +283,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() @@ -307,16 +307,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