package org.ovirt.engine.core.bll.snapshots;
import org.ovirt.engine.core.bll.InternalCommandAttribute;
import org.ovirt.engine.core.bll.context.CommandContext;
import org.ovirt.engine.core.common.action.ImagesContainterParametersBase;
import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotType;
/**
* This command responsible to creating new snapshot from non leaf snapshot. Its
* makes currently active snapshot to be inactive and makes new created snapshot
* active.
*
* Parameters: Guid snapshotId - id of source snapshot Guid containerId - id of
* container VM string drive - mapping of new snapshot in Vm
*/
@InternalCommandAttribute
public class TryBackToSnapshotCommand<T extends ImagesContainterParametersBase> extends CreateSnapshotCommand<T> {
public TryBackToSnapshotCommand(T parameters, CommandContext cmdContext) {
super(parameters, cmdContext);
super.setVmId(parameters.getContainerId());
}
/**
* Remove old image vm map.
*/
@Override
protected void processOldImageFromDb() {
updateOldImageAsActive(SnapshotType.PREVIEW, false);
}
@Override
protected void executeCommand() {
super.executeCommand();
setSucceeded(true);
}
@Override
protected void endWithFailure() {
updateOldImageAsActive(SnapshotType.ACTIVE, true);
// Remove destination, unlock source:
undoActionOnSourceAndDestination();
setSucceeded(true);
}
}