package org.ovirt.engine.core.bll; import java.util.Collections; import java.util.List; import org.ovirt.engine.core.bll.context.CommandContext; import org.ovirt.engine.core.common.action.MigrateVmParameters; import org.ovirt.engine.core.compat.Guid; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @NonTransactiveCommandAttribute public class BalanceVmCommand<T extends MigrateVmParameters> extends MigrateVmCommand<T> { private Logger log = LoggerFactory.getLogger(BalanceVmCommand.class); public BalanceVmCommand(T migrateVmParameters, CommandContext cmdContext) { super(migrateVmParameters, cmdContext); } @Override protected List<Guid> getVdsBlackList() { return Collections.unmodifiableList(getRunVdssList()); } @Override protected boolean perform() { // Do nothing when same host migration is detected if (getVm().getRunOnVds().equals(getDestinationVdsId())) { log.debug("Migration target host is the same as the source host, migration for VM {} will not occur.", getVm().getName()); setCommandShouldBeLogged(false); //In this case, the command should not wait for an answer from VDS //in order to release the engine lock. freeLock(); return true; } return super.perform(); } }