package org.ovirt.engine.core.bll.snapshots; import javax.inject.Inject; 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.disk.image.BaseImagesCommand; import org.ovirt.engine.core.bll.storage.domain.PostDeleteActionHandler; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.ImagesContainterParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.asynctasks.AsyncTaskType; import org.ovirt.engine.core.common.vdscommands.DeleteImageGroupVDSCommandParameters; 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.StorageDomainDao; /** * This command is responsible for removing a template image. */ @InternalCommandAttribute @NonTransactiveCommandAttribute public class RemoveTemplateSnapshotCommand<T extends ImagesContainterParametersBase> extends BaseImagesCommand<T> { @Inject private PostDeleteActionHandler postDeleteActionHandler; @Inject private StorageDomainDao storageDomainDao; public RemoveTemplateSnapshotCommand(T parameters, CommandContext cmdContext) { super(parameters, cmdContext); } @Override protected void executeCommand() { Guid taskId = persistAsyncTaskPlaceHolder(VdcActionType.RemoveVmTemplate); VDSReturnValue vdsReturnValue = runVdsCommand(VDSCommandType.DeleteImageGroup, postDeleteActionHandler.fixParameters( new DeleteImageGroupVDSCommandParameters(getParameters().getStoragePoolId(), getParameters().getStorageDomainId(), getParameters().getImageGroupID(), getParameters().getWipeAfterDelete(), storageDomainDao.get(getParameters().getStorageDomainId()).isDiscardAfterDelete(), false))); if (vdsReturnValue.getSucceeded()) { getReturnValue().getInternalVdsmTaskIdList().add( createTask(taskId, vdsReturnValue.getCreationInfo(), VdcActionType.RemoveVmTemplate, VdcObjectType.Storage, getParameters().getStorageDomainId())); setSucceeded(true); } } @Override protected AsyncTaskType getTaskType() { return AsyncTaskType.deleteImage; } }