package org.ovirt.engine.core.bll.storage.domain; import org.ovirt.engine.core.bll.InternalCommandAttribute; import org.ovirt.engine.core.bll.NonTransactiveCommandAttribute; import org.ovirt.engine.core.bll.context.CommandContext; import org.ovirt.engine.core.bll.storage.StorageJobCommand; import org.ovirt.engine.core.bll.storage.utils.VdsCommandsHelper; import org.ovirt.engine.core.common.action.MoveStorageDomainDeviceCommandParameters; import org.ovirt.engine.core.common.businessentities.HostJobInfo.HostJobStatus; import org.ovirt.engine.core.common.errors.EngineError; import org.ovirt.engine.core.common.vdscommands.MoveStorageDomainDeviceVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; @NonTransactiveCommandAttribute @InternalCommandAttribute public class MoveStorageDomainDeviceCommand<T extends MoveStorageDomainDeviceCommandParameters> extends StorageJobCommand<T> { public MoveStorageDomainDeviceCommand(T parameters, CommandContext cmdContext) { super(parameters, cmdContext); } @Override protected void executeCommand() { MoveStorageDomainDeviceVDSCommandParameters p = new MoveStorageDomainDeviceVDSCommandParameters(getParameters().getStorageJobId(), getParameters().getStorageDomainId(), getParameters().getSrcDeviceId(), getParameters().getDstDevicesIds()); p.setVdsId(getParameters().getVdsRunningOn()); VdsCommandsHelper.runVdsCommandWithoutFailover(VDSCommandType.MoveStorageDomainDevice, p, getParameters().getStoragePoolId(), this); setSucceeded(true); } @Override public HostJobStatus handleJobError(EngineError error) { if (error == EngineError.NoSuchPhysicalVolume) { return HostJobStatus.done; } return HostJobStatus.failed; } }