package org.ovirt.engine.core.bll.storage.disk.image;
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.common.VdcObjectType;
import org.ovirt.engine.core.common.action.DownloadImageCommandParameters;
import org.ovirt.engine.core.common.asynctasks.AsyncTaskType;
import org.ovirt.engine.core.common.vdscommands.DownloadImageVDSCommandParameters;
import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
import org.ovirt.engine.core.common.vdscommands.VDSParametersBase;
import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
@NonTransactiveCommandAttribute
@InternalCommandAttribute
public class DownloadImageCommand<T extends DownloadImageCommandParameters> extends BaseImagesCommand<T> {
public DownloadImageCommand(T parameters, CommandContext commandContext) {
super(parameters, commandContext);
}
@Override
protected void executeCommand() {
persistAsyncTaskPlaceHolder(getParameters().getParentCommand());
VDSReturnValue vdsReturnValue = runVdsCommand(VDSCommandType.DownloadImage, getVDSParameters());
if (vdsReturnValue != null && vdsReturnValue.getSucceeded()) {
getTaskIdList().add(
createTask(getAsyncTaskId(),
vdsReturnValue.getCreationInfo(),
getParameters().getParentCommand(),
VdcObjectType.Disk,
getParameters().getDestinationImageId()));
}
setSucceeded(vdsReturnValue != null ? vdsReturnValue.getSucceeded() : false);
}
@Override
public AsyncTaskType getTaskType() {
return AsyncTaskType.downloadImage;
}
protected VDSParametersBase getVDSParameters() {
return new DownloadImageVDSCommandParameters(
getParameters().getStoragePoolId(),
getParameters().getStorageDomainId(),
getParameters().getImageGroupID(),
getParameters().getDestinationImageId(),
getParameters().getHttpLocationInfo());
}
}