package org.ovirt.engine.core.bll.storage.lsm; import java.util.Collections; import java.util.List; import javax.inject.Inject; import org.ovirt.engine.core.bll.CommandBase; 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.utils.PermissionSubject; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.CreateImagePlaceholderCommandParameters; import org.ovirt.engine.core.common.asynctasks.AsyncTaskType; import org.ovirt.engine.core.common.businessentities.storage.DiskImage; import org.ovirt.engine.core.common.vdscommands.TargetDomainImageGroupVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.DiskDao; @NonTransactiveCommandAttribute @InternalCommandAttribute public class CreateImagePlaceholderCommand<T extends CreateImagePlaceholderCommandParameters> extends CommandBase<T> { @Inject private DiskDao diskDao; public CreateImagePlaceholderCommand(T parameters, CommandContext cmdContext) { super(parameters, cmdContext); setStoragePoolId(getParameters().getStoragePoolId()); setStorageDomainId(getParameters().getStorageDomainId()); } @Override protected void executeCommand() { Guid taskId = persistAsyncTaskPlaceHolder(getParameters().getParentCommand()); VDSReturnValue vdsReturnValue = runVdsCommand(VDSCommandType.CloneImageGroupStructure, new TargetDomainImageGroupVDSCommandParameters( getParameters().getStoragePoolId(), getParameters().getStorageDomainId(), getParameters().getImageGroup(), getParameters().getDstStorageDomain())); if (vdsReturnValue.getSucceeded()) { getTaskIdList().add( createTask(taskId, vdsReturnValue.getCreationInfo(), getParameters().getParentCommand(), VdcObjectType.Storage, getParameters().getStorageDomainId())); } setSucceeded(true); } @Override public List<PermissionSubject> getPermissionCheckSubjects() { return Collections.emptyList(); } @Override public AsyncTaskType getTaskType() { return AsyncTaskType.cloneImageStructure; } @Override protected void endWithFailure() { setSucceeded(true); } private DiskImage getDiskImage() { return (DiskImage) diskDao.get(getParameters().getImageGroup()); } }