mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Fixed VMware import issue - check and update pools in the order of the disks (do not update by position) (#10409)
This commit is contained in:
parent
212f2a3898
commit
b6cebe22f9
@ -133,13 +133,13 @@ public interface VolumeApiService {
|
|||||||
Snapshot allocSnapshotForVm(Long vmId, Long volumeId, String snapshotName) throws ResourceAllocationException;
|
Snapshot allocSnapshotForVm(Long vmId, Long volumeId, String snapshotName) throws ResourceAllocationException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if the target storage supports the disk offering.
|
* Checks if the storage pool supports the disk offering tags.
|
||||||
* This validation is consistent with the mechanism used to select a storage pool to deploy a volume when a virtual machine is deployed or when a data disk is allocated.
|
* This validation is consistent with the mechanism used to select a storage pool to deploy a volume when a virtual machine is deployed or when a data disk is allocated.
|
||||||
*
|
*
|
||||||
* The scenarios when this method returns true or false is presented in the following table.
|
* The scenarios when this method returns true or false is presented in the following table.
|
||||||
* <table border="1">
|
* <table border="1">
|
||||||
* <tr>
|
* <tr>
|
||||||
* <th>#</th><th>Disk offering tags</th><th>Storage tags</th><th>Does the storage support the disk offering?</th>
|
* <th>#</th><th>Disk offering diskOfferingTags</th><th>Storage diskOfferingTags</th><th>Does the storage support the disk offering?</th>
|
||||||
* </tr>
|
* </tr>
|
||||||
* <body>
|
* <body>
|
||||||
* <tr>
|
* <tr>
|
||||||
@ -163,7 +163,7 @@ public interface VolumeApiService {
|
|||||||
* </body>
|
* </body>
|
||||||
* </table>
|
* </table>
|
||||||
*/
|
*/
|
||||||
boolean doesTargetStorageSupportDiskOffering(StoragePool destPool, String diskOfferingTags);
|
boolean doesStoragePoolSupportDiskOfferingTags(StoragePool destPool, String diskOfferingTags);
|
||||||
|
|
||||||
Volume destroyVolume(long volumeId, Account caller, boolean expunge, boolean forceExpunge);
|
Volume destroyVolume(long volumeId, Account caller, boolean expunge, boolean forceExpunge);
|
||||||
|
|
||||||
|
|||||||
@ -3519,7 +3519,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
|
|||||||
if ((destPool.isShared() && newDiskOffering.isUseLocalStorage()) || destPool.isLocal() && newDiskOffering.isShared()) {
|
if ((destPool.isShared() && newDiskOffering.isUseLocalStorage()) || destPool.isLocal() && newDiskOffering.isShared()) {
|
||||||
throw new InvalidParameterValueException("You cannot move the volume to a shared storage and assign a disk offering for local storage and vice versa.");
|
throw new InvalidParameterValueException("You cannot move the volume to a shared storage and assign a disk offering for local storage and vice versa.");
|
||||||
}
|
}
|
||||||
if (!doesTargetStorageSupportDiskOffering(destPool, newDiskOffering)) {
|
if (!doesStoragePoolSupportDiskOffering(destPool, newDiskOffering)) {
|
||||||
throw new InvalidParameterValueException(String.format("Migration failed: target pool [%s, tags:%s] has no matching tags for volume [%s, uuid:%s, tags:%s]", destPool.getName(),
|
throw new InvalidParameterValueException(String.format("Migration failed: target pool [%s, tags:%s] has no matching tags for volume [%s, uuid:%s, tags:%s]", destPool.getName(),
|
||||||
storagePoolTagsDao.getStoragePoolTags(destPool.getId()), volume.getName(), volume.getUuid(), newDiskOffering.getTags()));
|
storagePoolTagsDao.getStoragePoolTags(destPool.getId()), volume.getName(), volume.getUuid(), newDiskOffering.getTags()));
|
||||||
}
|
}
|
||||||
@ -3546,7 +3546,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if the target storage supports the new disk offering.
|
* Checks if the storage pool supports the new disk offering.
|
||||||
* This validation is consistent with the mechanism used to select a storage pool to deploy a volume when a virtual machine is deployed or when a new data disk is allocated.
|
* This validation is consistent with the mechanism used to select a storage pool to deploy a volume when a virtual machine is deployed or when a new data disk is allocated.
|
||||||
*
|
*
|
||||||
* The scenarios when this method returns true or false is presented in the following table.
|
* The scenarios when this method returns true or false is presented in the following table.
|
||||||
@ -3577,9 +3577,9 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
|
|||||||
* </body>
|
* </body>
|
||||||
* </table>
|
* </table>
|
||||||
*/
|
*/
|
||||||
protected boolean doesTargetStorageSupportDiskOffering(StoragePool destPool, DiskOfferingVO diskOffering) {
|
protected boolean doesStoragePoolSupportDiskOffering(StoragePool destPool, DiskOfferingVO diskOffering) {
|
||||||
String targetStoreTags = diskOffering.getTags();
|
String offeringTags = diskOffering.getTags();
|
||||||
return doesTargetStorageSupportDiskOffering(destPool, targetStoreTags);
|
return doesStoragePoolSupportDiskOfferingTags(destPool, offeringTags);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean doesNewDiskOfferingHasTagsAsOldDiskOffering(DiskOfferingVO oldDO, DiskOfferingVO newDO) {
|
public static boolean doesNewDiskOfferingHasTagsAsOldDiskOffering(DiskOfferingVO oldDO, DiskOfferingVO newDO) {
|
||||||
@ -3595,18 +3595,18 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean doesTargetStorageSupportDiskOffering(StoragePool destPool, String diskOfferingTags) {
|
public boolean doesStoragePoolSupportDiskOfferingTags(StoragePool destPool, String diskOfferingTags) {
|
||||||
Pair<List<String>, Boolean> storagePoolTags = getStoragePoolTags(destPool);
|
Pair<List<String>, Boolean> storagePoolTags = getStoragePoolTags(destPool);
|
||||||
if ((storagePoolTags == null || !storagePoolTags.second()) && org.apache.commons.lang.StringUtils.isBlank(diskOfferingTags)) {
|
if ((storagePoolTags == null || !storagePoolTags.second()) && org.apache.commons.lang.StringUtils.isBlank(diskOfferingTags)) {
|
||||||
if (storagePoolTags == null) {
|
if (storagePoolTags == null) {
|
||||||
s_logger.debug(String.format("Destination storage pool [%s] does not have any tags, and so does the disk offering. Therefore, they are compatible", destPool.getUuid()));
|
s_logger.debug(String.format("Storage pool [%s] does not have any tags, and so does the disk offering. Therefore, they are compatible", destPool.getUuid()));
|
||||||
} else {
|
} else {
|
||||||
s_logger.debug("Destination storage pool has tags [%s], and the disk offering has no tags. Therefore, they are compatible.");
|
s_logger.debug("Storage pool has tags [%s], and the disk offering has no tags. Therefore, they are compatible.");
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (storagePoolTags == null || CollectionUtils.isEmpty(storagePoolTags.first())) {
|
if (storagePoolTags == null || CollectionUtils.isEmpty(storagePoolTags.first())) {
|
||||||
s_logger.debug(String.format("Destination storage pool [%s] has no tags, while disk offering has tags [%s]. Therefore, they are not compatible", destPool.getUuid(),
|
s_logger.debug(String.format("Storage pool [%s] has no tags, while disk offering has tags [%s]. Therefore, they are not compatible", destPool.getUuid(),
|
||||||
diskOfferingTags));
|
diskOfferingTags));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -3619,7 +3619,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
|
|||||||
} else {
|
} else {
|
||||||
result = CollectionUtils.isSubCollection(Arrays.asList(newDiskOfferingTagsAsStringArray), storageTagsList);
|
result = CollectionUtils.isSubCollection(Arrays.asList(newDiskOfferingTagsAsStringArray), storageTagsList);
|
||||||
}
|
}
|
||||||
s_logger.debug(String.format("Destination storage pool [%s] accepts tags [%s]? %s", destPool.getUuid(), diskOfferingTags, result));
|
s_logger.debug(String.format("Storage pool [%s] accepts tags [%s]? %s", destPool.getUuid(), diskOfferingTags, result));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -205,7 +205,7 @@ public class VolumeImportUnmanageManagerImpl implements VolumeImportUnmanageServ
|
|||||||
if (diskOffering.isCustomized()) {
|
if (diskOffering.isCustomized()) {
|
||||||
volumeApiService.validateCustomDiskOfferingSizeRange(volume.getVirtualSize() / ByteScaleUtils.GiB);
|
volumeApiService.validateCustomDiskOfferingSizeRange(volume.getVirtualSize() / ByteScaleUtils.GiB);
|
||||||
}
|
}
|
||||||
if (!volumeApiService.doesTargetStorageSupportDiskOffering(pool, diskOffering.getTags())) {
|
if (!volumeApiService.doesStoragePoolSupportDiskOfferingTags(pool, diskOffering.getTags())) {
|
||||||
logFailureAndThrowException(String.format("Disk offering: %s storage tags are not compatible with selected storage pool: %s", diskOffering.getUuid(), pool.getUuid()));
|
logFailureAndThrowException(String.format("Disk offering: %s storage tags are not compatible with selected storage pool: %s", diskOffering.getUuid(), pool.getUuid()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -456,7 +456,7 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
|
|||||||
if (diskOffering == null) {
|
if (diskOffering == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return volumeApiService.doesTargetStorageSupportDiskOffering(pool, diskOffering.getTags());
|
return volumeApiService.doesStoragePoolSupportDiskOfferingTags(pool, diskOffering.getTags());
|
||||||
}
|
}
|
||||||
|
|
||||||
private ServiceOfferingVO getUnmanagedInstanceServiceOffering(final UnmanagedInstanceTO instance, ServiceOfferingVO serviceOffering, final Account owner, final DataCenter zone, final Map<String, String> details, Hypervisor.HypervisorType hypervisorType)
|
private ServiceOfferingVO getUnmanagedInstanceServiceOffering(final UnmanagedInstanceTO instance, ServiceOfferingVO serviceOffering, final Account owner, final DataCenter zone, final Map<String, String> details, Hypervisor.HypervisorType hypervisorType)
|
||||||
@ -547,7 +547,7 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
|
|||||||
for (StoragePool pool : pools) {
|
for (StoragePool pool : pools) {
|
||||||
if (pool.getDataCenterId() == zone.getId() &&
|
if (pool.getDataCenterId() == zone.getId() &&
|
||||||
(pool.getClusterId() == null || pool.getClusterId().equals(cluster.getId())) &&
|
(pool.getClusterId() == null || pool.getClusterId().equals(cluster.getId())) &&
|
||||||
volumeApiService.doesTargetStorageSupportDiskOffering(pool, diskOfferingTags)) {
|
volumeApiService.doesStoragePoolSupportDiskOfferingTags(pool, diskOfferingTags)) {
|
||||||
storagePool = pool;
|
storagePool = pool;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -560,7 +560,7 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
|
|||||||
for (StoragePool pool : pools) {
|
for (StoragePool pool : pools) {
|
||||||
String searchPoolParam = StringUtils.isNotBlank(dsPath) ? dsPath : dsName;
|
String searchPoolParam = StringUtils.isNotBlank(dsPath) ? dsPath : dsName;
|
||||||
if (StringUtils.contains(pool.getPath(), searchPoolParam) &&
|
if (StringUtils.contains(pool.getPath(), searchPoolParam) &&
|
||||||
volumeApiService.doesTargetStorageSupportDiskOffering(pool, diskOfferingTags)) {
|
volumeApiService.doesStoragePoolSupportDiskOfferingTags(pool, diskOfferingTags)) {
|
||||||
storagePool = pool;
|
storagePool = pool;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1732,9 +1732,9 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
|
|||||||
convertedInstance.setPowerState(UnmanagedInstanceTO.PowerState.PowerOff);
|
convertedInstance.setPowerState(UnmanagedInstanceTO.PowerState.PowerOff);
|
||||||
List<UnmanagedInstanceTO.Disk> convertedInstanceDisks = convertedInstance.getDisks();
|
List<UnmanagedInstanceTO.Disk> convertedInstanceDisks = convertedInstance.getDisks();
|
||||||
List<UnmanagedInstanceTO.Disk> sourceVMwareInstanceDisks = sourceVMwareInstance.getDisks();
|
List<UnmanagedInstanceTO.Disk> sourceVMwareInstanceDisks = sourceVMwareInstance.getDisks();
|
||||||
for (UnmanagedInstanceTO.Disk sourceVMwareInstanceDisk : sourceVMwareInstanceDisks) {
|
for (int i = 0; i < convertedInstanceDisks.size(); i++) {
|
||||||
UnmanagedInstanceTO.Disk convertedDisk = convertedInstanceDisks.get(sourceVMwareInstanceDisk.getPosition());
|
UnmanagedInstanceTO.Disk disk = convertedInstanceDisks.get(i);
|
||||||
convertedDisk.setDiskId(sourceVMwareInstanceDisk.getDiskId());
|
disk.setDiskId(sourceVMwareInstanceDisks.get(i).getDiskId());
|
||||||
}
|
}
|
||||||
List<UnmanagedInstanceTO.Nic> convertedInstanceNics = convertedInstance.getNics();
|
List<UnmanagedInstanceTO.Nic> convertedInstanceNics = convertedInstance.getNics();
|
||||||
List<UnmanagedInstanceTO.Nic> sourceVMwareInstanceNics = sourceVMwareInstance.getNics();
|
List<UnmanagedInstanceTO.Nic> sourceVMwareInstanceNics = sourceVMwareInstance.getNics();
|
||||||
@ -2018,7 +2018,25 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
|
|||||||
List<StoragePoolVO> pools = new ArrayList<>();
|
List<StoragePoolVO> pools = new ArrayList<>();
|
||||||
pools.addAll(primaryDataStoreDao.findClusterWideStoragePoolsByHypervisorAndPoolType(destinationCluster.getId(), Hypervisor.HypervisorType.KVM, Storage.StoragePoolType.NetworkFilesystem));
|
pools.addAll(primaryDataStoreDao.findClusterWideStoragePoolsByHypervisorAndPoolType(destinationCluster.getId(), Hypervisor.HypervisorType.KVM, Storage.StoragePoolType.NetworkFilesystem));
|
||||||
pools.addAll(primaryDataStoreDao.findZoneWideStoragePoolsByHypervisorAndPoolType(destinationCluster.getDataCenterId(), Hypervisor.HypervisorType.KVM, Storage.StoragePoolType.NetworkFilesystem));
|
pools.addAll(primaryDataStoreDao.findZoneWideStoragePoolsByHypervisorAndPoolType(destinationCluster.getDataCenterId(), Hypervisor.HypervisorType.KVM, Storage.StoragePoolType.NetworkFilesystem));
|
||||||
List<String> diskOfferingTags = new ArrayList<>();
|
if (pools.isEmpty()) {
|
||||||
|
String msg = String.format("Cannot find suitable storage pools in the cluster %s for the conversion", destinationCluster.getName());
|
||||||
|
LOGGER.error(msg);
|
||||||
|
throw new CloudRuntimeException(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (serviceOffering.getDiskOfferingId() != null) {
|
||||||
|
DiskOfferingVO diskOffering = diskOfferingDao.findById(serviceOffering.getDiskOfferingId());
|
||||||
|
if (diskOffering == null) {
|
||||||
|
String msg = String.format("Cannot find disk offering with ID %s that belongs to the service offering %s", serviceOffering.getDiskOfferingId(), serviceOffering.getName());
|
||||||
|
LOGGER.error(msg);
|
||||||
|
throw new CloudRuntimeException(msg);
|
||||||
|
}
|
||||||
|
if (getStoragePoolWithTags(pools, diskOffering.getTags()) == null) {
|
||||||
|
String msg = String.format("Cannot find suitable storage pool for disk offering %s that belongs to the service offering %s", diskOffering.getName(), serviceOffering.getName());
|
||||||
|
LOGGER.error(msg);
|
||||||
|
throw new CloudRuntimeException(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
for (Long diskOfferingId : dataDiskOfferingMap.values()) {
|
for (Long diskOfferingId : dataDiskOfferingMap.values()) {
|
||||||
DiskOfferingVO diskOffering = diskOfferingDao.findById(diskOfferingId);
|
DiskOfferingVO diskOffering = diskOfferingDao.findById(diskOfferingId);
|
||||||
if (diskOffering == null) {
|
if (diskOffering == null) {
|
||||||
@ -2026,44 +2044,26 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
|
|||||||
LOGGER.error(msg);
|
LOGGER.error(msg);
|
||||||
throw new CloudRuntimeException(msg);
|
throw new CloudRuntimeException(msg);
|
||||||
}
|
}
|
||||||
diskOfferingTags.add(diskOffering.getTags());
|
if (getStoragePoolWithTags(pools, diskOffering.getTags()) == null) {
|
||||||
}
|
String msg = String.format("Cannot find suitable storage pool for disk offering %s", diskOffering.getName());
|
||||||
if (serviceOffering.getDiskOfferingId() != null) {
|
|
||||||
DiskOfferingVO diskOffering = diskOfferingDao.findById(serviceOffering.getDiskOfferingId());
|
|
||||||
if (diskOffering != null) {
|
|
||||||
diskOfferingTags.add(diskOffering.getTags());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pools = getPoolsWithMatchingTags(pools, diskOfferingTags);
|
|
||||||
if (pools.isEmpty()) {
|
|
||||||
String msg = String.format("Cannot find suitable storage pools in cluster %s for the conversion", destinationCluster.getName());
|
|
||||||
LOGGER.error(msg);
|
LOGGER.error(msg);
|
||||||
throw new CloudRuntimeException(msg);
|
throw new CloudRuntimeException(msg);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return pools;
|
return pools;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<StoragePoolVO> getPoolsWithMatchingTags(List<StoragePoolVO> pools, List<String> diskOfferingTags) {
|
private StoragePoolVO getStoragePoolWithTags(List<StoragePoolVO> pools, String tags) {
|
||||||
if (diskOfferingTags.isEmpty()) {
|
if (StringUtils.isEmpty(tags)) {
|
||||||
return pools;
|
return pools.get(0);
|
||||||
}
|
}
|
||||||
List<StoragePoolVO> poolsSupportingTags = new ArrayList<>(pools);
|
|
||||||
for (String tags : diskOfferingTags) {
|
|
||||||
boolean tagsMatched = false;
|
|
||||||
for (StoragePoolVO pool : pools) {
|
for (StoragePoolVO pool : pools) {
|
||||||
if (volumeApiService.doesTargetStorageSupportDiskOffering(pool, tags)) {
|
if (volumeApiService.doesStoragePoolSupportDiskOfferingTags(pool, tags)) {
|
||||||
poolsSupportingTags.add(pool);
|
return pool;
|
||||||
tagsMatched = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!tagsMatched) {
|
return null;
|
||||||
String msg = String.format("Cannot find suitable storage pools for the conversion with disk offering tags %s", tags);
|
|
||||||
LOGGER.error(msg);
|
|
||||||
throw new CloudRuntimeException(msg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return poolsSupportingTags;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<String> selectInstanceConversionStoragePools(
|
private List<String> selectInstanceConversionStoragePools(
|
||||||
@ -2071,26 +2071,22 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
|
|||||||
ServiceOfferingVO serviceOffering, Map<String, Long> dataDiskOfferingMap
|
ServiceOfferingVO serviceOffering, Map<String, Long> dataDiskOfferingMap
|
||||||
) {
|
) {
|
||||||
List<String> storagePools = new ArrayList<>(disks.size());
|
List<String> storagePools = new ArrayList<>(disks.size());
|
||||||
for (int i = 0; i < disks.size(); i++) {
|
|
||||||
storagePools.add(null);
|
|
||||||
}
|
|
||||||
Set<String> dataDiskIds = dataDiskOfferingMap.keySet();
|
Set<String> dataDiskIds = dataDiskOfferingMap.keySet();
|
||||||
for (UnmanagedInstanceTO.Disk disk : disks) {
|
for (UnmanagedInstanceTO.Disk disk : disks) {
|
||||||
Long diskOfferingId = dataDiskOfferingMap.get(disk.getDiskId());
|
Long diskOfferingId = null;
|
||||||
if (diskOfferingId == null && !dataDiskIds.contains(disk.getDiskId())) {
|
if (dataDiskIds.contains(disk.getDiskId())) {
|
||||||
|
diskOfferingId = dataDiskOfferingMap.get(disk.getDiskId());
|
||||||
|
} else {
|
||||||
diskOfferingId = serviceOffering.getDiskOfferingId();
|
diskOfferingId = serviceOffering.getDiskOfferingId();
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: Choose pools by capacity
|
//TODO: Choose pools by capacity
|
||||||
if (diskOfferingId == null) {
|
if (diskOfferingId == null) {
|
||||||
storagePools.set(disk.getPosition(), pools.get(0).getUuid());
|
storagePools.add(pools.get(0).getUuid());
|
||||||
} else {
|
} else {
|
||||||
DiskOfferingVO diskOffering = diskOfferingDao.findById(diskOfferingId);
|
DiskOfferingVO diskOffering = diskOfferingDao.findById(diskOfferingId);
|
||||||
for (StoragePoolVO pool : pools) {
|
StoragePoolVO pool = getStoragePoolWithTags(pools, diskOffering.getTags());
|
||||||
if (volumeApiService.doesTargetStorageSupportDiskOffering(pool, diskOffering.getTags())) {
|
storagePools.add(pool.getUuid());
|
||||||
storagePools.set(disk.getPosition(), pool.getUuid());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return storagePools;
|
return storagePools;
|
||||||
|
|||||||
@ -1164,7 +1164,7 @@ public class VolumeApiServiceImplTest {
|
|||||||
StoragePool storagePoolMock = Mockito.mock(StoragePool.class);
|
StoragePool storagePoolMock = Mockito.mock(StoragePool.class);
|
||||||
Mockito.doReturn(new Pair<>(List.of("A"), false)).when(volumeApiServiceImpl).getStoragePoolTags(storagePoolMock);
|
Mockito.doReturn(new Pair<>(List.of("A"), false)).when(volumeApiServiceImpl).getStoragePoolTags(storagePoolMock);
|
||||||
|
|
||||||
boolean result = volumeApiServiceImpl.doesTargetStorageSupportDiskOffering(storagePoolMock, diskOfferingVoMock);
|
boolean result = volumeApiServiceImpl.doesStoragePoolSupportDiskOffering(storagePoolMock, diskOfferingVoMock);
|
||||||
|
|
||||||
Assert.assertFalse(result);
|
Assert.assertFalse(result);
|
||||||
}
|
}
|
||||||
@ -1177,7 +1177,7 @@ public class VolumeApiServiceImplTest {
|
|||||||
StoragePool storagePoolMock = Mockito.mock(StoragePool.class);
|
StoragePool storagePoolMock = Mockito.mock(StoragePool.class);
|
||||||
Mockito.doReturn(new Pair<>(List.of("A","B","C","D","X","Y"), false)).when(volumeApiServiceImpl).getStoragePoolTags(storagePoolMock);
|
Mockito.doReturn(new Pair<>(List.of("A","B","C","D","X","Y"), false)).when(volumeApiServiceImpl).getStoragePoolTags(storagePoolMock);
|
||||||
|
|
||||||
boolean result = volumeApiServiceImpl.doesTargetStorageSupportDiskOffering(storagePoolMock, diskOfferingVoMock);
|
boolean result = volumeApiServiceImpl.doesStoragePoolSupportDiskOffering(storagePoolMock, diskOfferingVoMock);
|
||||||
|
|
||||||
Assert.assertTrue(result);
|
Assert.assertTrue(result);
|
||||||
}
|
}
|
||||||
@ -1190,7 +1190,7 @@ public class VolumeApiServiceImplTest {
|
|||||||
StoragePool storagePoolMock = Mockito.mock(StoragePool.class);
|
StoragePool storagePoolMock = Mockito.mock(StoragePool.class);
|
||||||
Mockito.lenient().doReturn(new Pair<>(List.of("A,B,C,D,X,Y"), false)).when(volumeApiServiceImpl).getStoragePoolTags(storagePoolMock);
|
Mockito.lenient().doReturn(new Pair<>(List.of("A,B,C,D,X,Y"), false)).when(volumeApiServiceImpl).getStoragePoolTags(storagePoolMock);
|
||||||
|
|
||||||
boolean result = volumeApiServiceImpl.doesTargetStorageSupportDiskOffering(storagePoolMock, diskOfferingVoMock);
|
boolean result = volumeApiServiceImpl.doesStoragePoolSupportDiskOffering(storagePoolMock, diskOfferingVoMock);
|
||||||
|
|
||||||
Assert.assertTrue(result);
|
Assert.assertTrue(result);
|
||||||
}
|
}
|
||||||
@ -1203,7 +1203,7 @@ public class VolumeApiServiceImplTest {
|
|||||||
StoragePool storagePoolMock = Mockito.mock(StoragePool.class);
|
StoragePool storagePoolMock = Mockito.mock(StoragePool.class);
|
||||||
Mockito.doReturn(new Pair<>(List.of(""), false)).when(volumeApiServiceImpl).getStoragePoolTags(storagePoolMock);
|
Mockito.doReturn(new Pair<>(List.of(""), false)).when(volumeApiServiceImpl).getStoragePoolTags(storagePoolMock);
|
||||||
|
|
||||||
boolean result = volumeApiServiceImpl.doesTargetStorageSupportDiskOffering(storagePoolMock, diskOfferingVoMock);
|
boolean result = volumeApiServiceImpl.doesStoragePoolSupportDiskOffering(storagePoolMock, diskOfferingVoMock);
|
||||||
|
|
||||||
Assert.assertFalse(result);
|
Assert.assertFalse(result);
|
||||||
}
|
}
|
||||||
@ -1216,7 +1216,7 @@ public class VolumeApiServiceImplTest {
|
|||||||
StoragePool storagePoolMock = Mockito.mock(StoragePool.class);
|
StoragePool storagePoolMock = Mockito.mock(StoragePool.class);
|
||||||
Mockito.lenient().doReturn(new Pair<>(List.of(""), false)).when(volumeApiServiceImpl).getStoragePoolTags(storagePoolMock);
|
Mockito.lenient().doReturn(new Pair<>(List.of(""), false)).when(volumeApiServiceImpl).getStoragePoolTags(storagePoolMock);
|
||||||
|
|
||||||
boolean result = volumeApiServiceImpl.doesTargetStorageSupportDiskOffering(storagePoolMock, diskOfferingVoMock);
|
boolean result = volumeApiServiceImpl.doesStoragePoolSupportDiskOffering(storagePoolMock, diskOfferingVoMock);
|
||||||
|
|
||||||
Assert.assertTrue(result);
|
Assert.assertTrue(result);
|
||||||
}
|
}
|
||||||
@ -1229,7 +1229,7 @@ public class VolumeApiServiceImplTest {
|
|||||||
StoragePool storagePoolMock = Mockito.mock(StoragePool.class);
|
StoragePool storagePoolMock = Mockito.mock(StoragePool.class);
|
||||||
Mockito.doReturn(new Pair<>(List.of("C,D"), false)).when(volumeApiServiceImpl).getStoragePoolTags(storagePoolMock);
|
Mockito.doReturn(new Pair<>(List.of("C,D"), false)).when(volumeApiServiceImpl).getStoragePoolTags(storagePoolMock);
|
||||||
|
|
||||||
boolean result = volumeApiServiceImpl.doesTargetStorageSupportDiskOffering(storagePoolMock, diskOfferingVoMock);
|
boolean result = volumeApiServiceImpl.doesStoragePoolSupportDiskOffering(storagePoolMock, diskOfferingVoMock);
|
||||||
|
|
||||||
Assert.assertFalse(result);
|
Assert.assertFalse(result);
|
||||||
}
|
}
|
||||||
@ -1242,7 +1242,7 @@ public class VolumeApiServiceImplTest {
|
|||||||
StoragePool storagePoolMock = Mockito.mock(StoragePool.class);
|
StoragePool storagePoolMock = Mockito.mock(StoragePool.class);
|
||||||
Mockito.doReturn(new Pair<>(List.of("A"), false)).when(volumeApiServiceImpl).getStoragePoolTags(storagePoolMock);
|
Mockito.doReturn(new Pair<>(List.of("A"), false)).when(volumeApiServiceImpl).getStoragePoolTags(storagePoolMock);
|
||||||
|
|
||||||
boolean result = volumeApiServiceImpl.doesTargetStorageSupportDiskOffering(storagePoolMock, diskOfferingVoMock);
|
boolean result = volumeApiServiceImpl.doesStoragePoolSupportDiskOffering(storagePoolMock, diskOfferingVoMock);
|
||||||
|
|
||||||
Assert.assertTrue(result);
|
Assert.assertTrue(result);
|
||||||
}
|
}
|
||||||
@ -1255,7 +1255,7 @@ public class VolumeApiServiceImplTest {
|
|||||||
StoragePool storagePoolMock = Mockito.mock(StoragePool.class);
|
StoragePool storagePoolMock = Mockito.mock(StoragePool.class);
|
||||||
Mockito.doReturn(new Pair<>(List.of("tags[0] == 'A'"), true)).when(volumeApiServiceImpl).getStoragePoolTags(storagePoolMock);
|
Mockito.doReturn(new Pair<>(List.of("tags[0] == 'A'"), true)).when(volumeApiServiceImpl).getStoragePoolTags(storagePoolMock);
|
||||||
|
|
||||||
boolean result = volumeApiServiceImpl.doesTargetStorageSupportDiskOffering(storagePoolMock, diskOfferingVoMock);
|
boolean result = volumeApiServiceImpl.doesStoragePoolSupportDiskOffering(storagePoolMock, diskOfferingVoMock);
|
||||||
|
|
||||||
Assert.assertTrue(result);
|
Assert.assertTrue(result);
|
||||||
}
|
}
|
||||||
@ -1268,7 +1268,7 @@ public class VolumeApiServiceImplTest {
|
|||||||
StoragePool storagePoolMock = Mockito.mock(StoragePool.class);
|
StoragePool storagePoolMock = Mockito.mock(StoragePool.class);
|
||||||
Mockito.doReturn(new Pair<>(List.of("tags[0] == 'A'"), true)).when(volumeApiServiceImpl).getStoragePoolTags(storagePoolMock);
|
Mockito.doReturn(new Pair<>(List.of("tags[0] == 'A'"), true)).when(volumeApiServiceImpl).getStoragePoolTags(storagePoolMock);
|
||||||
|
|
||||||
boolean result = volumeApiServiceImpl.doesTargetStorageSupportDiskOffering(storagePoolMock, diskOfferingVoMock);
|
boolean result = volumeApiServiceImpl.doesStoragePoolSupportDiskOffering(storagePoolMock, diskOfferingVoMock);
|
||||||
|
|
||||||
Assert.assertFalse(result);
|
Assert.assertFalse(result);
|
||||||
}
|
}
|
||||||
@ -1281,7 +1281,7 @@ public class VolumeApiServiceImplTest {
|
|||||||
StoragePool storagePoolMock = Mockito.mock(StoragePool.class);
|
StoragePool storagePoolMock = Mockito.mock(StoragePool.class);
|
||||||
Mockito.doReturn(new Pair<>(List.of("tags[0] == 'A'"), true)).when(volumeApiServiceImpl).getStoragePoolTags(storagePoolMock);
|
Mockito.doReturn(new Pair<>(List.of("tags[0] == 'A'"), true)).when(volumeApiServiceImpl).getStoragePoolTags(storagePoolMock);
|
||||||
|
|
||||||
boolean result = volumeApiServiceImpl.doesTargetStorageSupportDiskOffering(storagePoolMock, diskOfferingVoMock);
|
boolean result = volumeApiServiceImpl.doesStoragePoolSupportDiskOffering(storagePoolMock, diskOfferingVoMock);
|
||||||
|
|
||||||
Assert.assertFalse(result);
|
Assert.assertFalse(result);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -275,7 +275,7 @@ public class VolumeImportUnmanageManagerImplTest {
|
|||||||
when(diskOffering.isCustomized()).thenReturn(true);
|
when(diskOffering.isCustomized()).thenReturn(true);
|
||||||
doReturn(diskOffering).when(volumeImportUnmanageManager).getOrCreateDiskOffering(account, diskOfferingId, zoneId, isLocal);
|
doReturn(diskOffering).when(volumeImportUnmanageManager).getOrCreateDiskOffering(account, diskOfferingId, zoneId, isLocal);
|
||||||
doNothing().when(volumeApiService).validateCustomDiskOfferingSizeRange(anyLong());
|
doNothing().when(volumeApiService).validateCustomDiskOfferingSizeRange(anyLong());
|
||||||
doReturn(true).when(volumeApiService).doesTargetStorageSupportDiskOffering(any(), isNull());
|
doReturn(true).when(volumeApiService).doesStoragePoolSupportDiskOfferingTags(any(), isNull());
|
||||||
doReturn(diskProfile).when(volumeManager).importVolume(any(), anyString(), any(), eq(virtualSize), isNull(), isNull(), anyLong(),
|
doReturn(diskProfile).when(volumeManager).importVolume(any(), anyString(), any(), eq(virtualSize), isNull(), isNull(), anyLong(),
|
||||||
any(), isNull(), isNull(), any(), isNull(), anyLong(), anyString(), isNull());
|
any(), isNull(), isNull(), any(), isNull(), anyLong(), anyString(), isNull());
|
||||||
when(diskProfile.getVolumeId()).thenReturn(volumeId);
|
when(diskProfile.getVolumeId()).thenReturn(volumeId);
|
||||||
|
|||||||
@ -424,7 +424,7 @@ public class UnmanagedVMsManagerImplTest {
|
|||||||
ImportUnmanagedInstanceCmd importUnmanageInstanceCmd = Mockito.mock(ImportUnmanagedInstanceCmd.class);
|
ImportUnmanagedInstanceCmd importUnmanageInstanceCmd = Mockito.mock(ImportUnmanagedInstanceCmd.class);
|
||||||
when(importUnmanageInstanceCmd.getName()).thenReturn("TestInstance");
|
when(importUnmanageInstanceCmd.getName()).thenReturn("TestInstance");
|
||||||
when(importUnmanageInstanceCmd.getDomainId()).thenReturn(null);
|
when(importUnmanageInstanceCmd.getDomainId()).thenReturn(null);
|
||||||
when(volumeApiService.doesTargetStorageSupportDiskOffering(any(StoragePool.class), any())).thenReturn(true);
|
when(volumeApiService.doesStoragePoolSupportDiskOfferingTags(any(StoragePool.class), any())).thenReturn(true);
|
||||||
try (MockedStatic<UsageEventUtils> ignored = Mockito.mockStatic(UsageEventUtils.class)) {
|
try (MockedStatic<UsageEventUtils> ignored = Mockito.mockStatic(UsageEventUtils.class)) {
|
||||||
unmanagedVMsManager.importUnmanagedInstance(importUnmanageInstanceCmd);
|
unmanagedVMsManager.importUnmanagedInstance(importUnmanageInstanceCmd);
|
||||||
}
|
}
|
||||||
@ -704,7 +704,7 @@ public class UnmanagedVMsManagerImplTest {
|
|||||||
when(agentManager.send(Mockito.eq(convertHostId), Mockito.any(CheckConvertInstanceCommand.class))).thenReturn(checkConvertInstanceAnswer);
|
when(agentManager.send(Mockito.eq(convertHostId), Mockito.any(CheckConvertInstanceCommand.class))).thenReturn(checkConvertInstanceAnswer);
|
||||||
}
|
}
|
||||||
|
|
||||||
when(volumeApiService.doesTargetStorageSupportDiskOffering(any(StoragePool.class), any())).thenReturn(true);
|
when(volumeApiService.doesStoragePoolSupportDiskOfferingTags(any(StoragePool.class), any())).thenReturn(true);
|
||||||
|
|
||||||
ConvertInstanceAnswer convertInstanceAnswer = mock(ConvertInstanceAnswer.class);
|
ConvertInstanceAnswer convertInstanceAnswer = mock(ConvertInstanceAnswer.class);
|
||||||
ImportConvertedInstanceAnswer convertImportedInstanceAnswer = mock(ImportConvertedInstanceAnswer.class);
|
ImportConvertedInstanceAnswer convertImportedInstanceAnswer = mock(ImportConvertedInstanceAnswer.class);
|
||||||
@ -769,7 +769,7 @@ public class UnmanagedVMsManagerImplTest {
|
|||||||
storagePools.add(storagePool);
|
storagePools.add(storagePool);
|
||||||
when(primaryDataStoreDao.findLocalStoragePoolsByHostAndTags(anyLong(), any())).thenReturn(storagePools);
|
when(primaryDataStoreDao.findLocalStoragePoolsByHostAndTags(anyLong(), any())).thenReturn(storagePools);
|
||||||
when(primaryDataStoreDao.findById(anyLong())).thenReturn(storagePool);
|
when(primaryDataStoreDao.findById(anyLong())).thenReturn(storagePool);
|
||||||
when(volumeApiService.doesTargetStorageSupportDiskOffering(any(StoragePool.class), any())).thenReturn(true);
|
when(volumeApiService.doesStoragePoolSupportDiskOfferingTags(any(StoragePool.class), any())).thenReturn(true);
|
||||||
StoragePoolHostVO storagePoolHost = Mockito.mock(StoragePoolHostVO.class);
|
StoragePoolHostVO storagePoolHost = Mockito.mock(StoragePoolHostVO.class);
|
||||||
when(storagePoolHostDao.findByPoolHost(anyLong(), anyLong())).thenReturn(storagePoolHost);
|
when(storagePoolHostDao.findByPoolHost(anyLong(), anyLong())).thenReturn(storagePoolHost);
|
||||||
try (MockedStatic<UsageEventUtils> ignored = Mockito.mockStatic(UsageEventUtils.class)) {
|
try (MockedStatic<UsageEventUtils> ignored = Mockito.mockStatic(UsageEventUtils.class)) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user