package org.ovirt.engine.core.vdsbroker.vdsbroker; import java.util.HashMap; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.common.vdscommands.MigrateVDSCommandParameters; public class MigrateBrokerVDSCommand<P extends MigrateVDSCommandParameters> extends VdsBrokerCommand<P> { public MigrateBrokerVDSCommand(P parameters) { super(parameters); } @Override protected void executeVdsBrokerCommand() { status = getBroker().migrate(createMigrationInfo()); proceedProxyReturnValue(); } private Map<String, Object> createMigrationInfo() { Map<String, Object> migrationInfo = new HashMap<>(); P parameters = getParameters(); migrationInfo.put(VdsProperties.vm_guid, parameters.getVmId().toString()); migrationInfo.put(VdsProperties.src, String.format("%1$s", parameters.getSrcHost())); migrationInfo.put(VdsProperties.dst, String.format("%1$s", parameters.getDstHost())); migrationInfo.put(VdsProperties.method, parameters.getMigrationMethod().name().toLowerCase()); migrationInfo.put(VdsProperties.TUNNELED, Boolean.toString(parameters.isTunnelMigration())); migrationInfo.put("abortOnError", Boolean.TRUE.toString()); if (StringUtils.isNotBlank(parameters.getDstQemu())) { migrationInfo.put(VdsProperties.DST_QEMU, parameters.getDstQemu()); } if (parameters.getMigrationDowntime() != 0) { migrationInfo.put(VdsProperties.MIGRATION_DOWNTIME, Integer.toString(parameters.getMigrationDowntime())); } if (parameters.getAutoConverge() != null) { migrationInfo.put(VdsProperties.AUTO_CONVERGE, parameters.getAutoConverge().toString()); } if (parameters.getMigrateCompressed() != null) { migrationInfo.put(VdsProperties.MIGRATE_COMPRESSED, parameters.getMigrateCompressed().toString()); } if (parameters.getConsoleAddress() != null) { migrationInfo.put(VdsProperties.CONSOLE_ADDRESS, parameters.getConsoleAddress()); } if (parameters.getMaxBandwidth() != null) { migrationInfo.put(VdsProperties.MIGRATION_BANDWIDTH, parameters.getMaxBandwidth()); } if (parameters.getConvergenceSchedule() != null) { migrationInfo.put(VdsProperties.MIGRATION_CONVERGENCE_SCHEDULE, parameters.getConvergenceSchedule()); } if (parameters.isEnableGuestEvents() != null) { migrationInfo.put(VdsProperties.ENABLE_GUEST_EVENTS, parameters.isEnableGuestEvents()); } if (parameters.getMaxIncomingMigrations() != null) { migrationInfo.put(VdsProperties.MIGRATION_INCOMING_LIMIT, parameters.getMaxIncomingMigrations()); } if (parameters.getMaxOutgoingMigrations() != null) { migrationInfo.put(VdsProperties.MIGRATION_OUTGOING_LIMIT, parameters.getMaxOutgoingMigrations()); } return migrationInfo; } }