diff --git a/pkg/compute/models/isolated_devices.go b/pkg/compute/models/isolated_devices.go index fb4da3514a..1c5d8af1f2 100644 --- a/pkg/compute/models/isolated_devices.go +++ b/pkg/compute/models/isolated_devices.go @@ -303,8 +303,13 @@ func (manager *SIsolatedDeviceManager) fuzzyMatchModel(fuzzyStr string) *SIsolat dev := SIsolatedDevice{} dev.SetModelManager(manager, &dev) - q := manager.Query().Contains("model", fuzzyStr) - err := q.First(&dev) + q := manager.Query().Equals("model", fuzzyStr) + cnt, err := q.CountWithError() + if err != nil || cnt == 0 { + q = manager.Query().Contains("model", fuzzyStr) + } + + err = q.First(&dev) if err == nil { return &dev } @@ -354,7 +359,6 @@ func (manager *SIsolatedDeviceManager) parseDeviceInfo(userCred mcclient.TokenCr } else { devConfig.Vendor = matchDev.getVendorId() } - } else { devObj, err := manager.FetchById(devId) if err != nil {