Skip to content

Commit 50ac4af

Browse files
committed
Honor migrate.vm.across.clusters when migrate vm without destination
1 parent 2def001 commit 50ac4af

3 files changed

Lines changed: 8 additions & 2 deletions

File tree

engine/api/src/main/java/com/cloud/vm/VirtualMachineManager.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,18 @@
2626

2727
import com.cloud.agent.api.to.NicTO;
2828
import com.cloud.agent.api.to.VirtualMachineTO;
29+
import com.cloud.deploy.DataCenterDeployment;
2930
import com.cloud.deploy.DeployDestination;
3031
import com.cloud.deploy.DeploymentPlan;
3132
import com.cloud.deploy.DeploymentPlanner;
33+
import com.cloud.deploy.DeploymentPlanner.ExcludeList;
3234
import com.cloud.exception.AgentUnavailableException;
3335
import com.cloud.exception.ConcurrentOperationException;
3436
import com.cloud.exception.InsufficientCapacityException;
3537
import com.cloud.exception.InsufficientServerCapacityException;
3638
import com.cloud.exception.OperationTimedoutException;
3739
import com.cloud.exception.ResourceUnavailableException;
40+
import com.cloud.host.Host;
3841
import com.cloud.hypervisor.Hypervisor.HypervisorType;
3942
import com.cloud.network.Network;
4043
import com.cloud.offering.DiskOffering;
@@ -257,4 +260,6 @@ static String getHypervisorHostname(String name) {
257260
UserVm restoreVirtualMachine(long vmId, Long newTemplateId) throws ResourceUnavailableException, InsufficientCapacityException;
258261

259262
boolean checkIfVmHasClusterWideVolumes(Long vmId);
263+
264+
DataCenterDeployment getMigrationDeployment(Long vmId, Host host, Long poolId, ExcludeList excludes);
260265
}

engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3226,7 +3226,8 @@ public boolean checkIfVmHasClusterWideVolumes(Long vmId) {
32263226

32273227
}
32283228

3229-
private DataCenterDeployment getMigrationDeployment(final Long vmId, final Host host, final Long poolId, final ExcludeList excludes) {
3229+
@Override
3230+
public DataCenterDeployment getMigrationDeployment(final Long vmId, final Host host, final Long poolId, final ExcludeList excludes) {
32303231
if (MIGRATE_VM_ACROSS_CLUSTERS.value() && !checkIfVmHasClusterWideVolumes(vmId)) {
32313232
s_logger.info("Searching for hosts in the zone for vm migration");
32323233
List<Long> clustersToExcluded = _clusterDao.listAllClusters(host.getDataCenterId());

server/src/main/java/com/cloud/vm/UserVmManagerImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5796,9 +5796,9 @@ public VirtualMachine migrateVirtualMachine(Long vmId, Host destinationHost) thr
57965796
final ServiceOfferingVO offering = _offeringDao.findById(vm.getId(), vm.getServiceOfferingId());
57975797
final VirtualMachineProfile profile = new VirtualMachineProfileImpl(vm, null, offering, null, null);
57985798
final Host host = _hostDao.findById(srcHostId);
5799-
final DataCenterDeployment plan = new DataCenterDeployment(host.getDataCenterId(), host.getPodId(), host.getClusterId(), null, null, null);
58005799
ExcludeList excludes = new ExcludeList();
58015800
excludes.addHost(srcHostId);
5801+
final DataCenterDeployment plan = _itMgr.getMigrationDeployment(vm.getId(), host, null, excludes);
58025802
try {
58035803
dest = _planningMgr.planDeployment(profile, plan, excludes, null);
58045804
} catch (final AffinityConflictException e2) {

0 commit comments

Comments
 (0)