package org.ovirt.engine.core.bll.interfaces;
import org.ovirt.engine.core.bll.CommandBase;
import org.ovirt.engine.core.bll.context.CommandContext;
import org.ovirt.engine.core.bll.job.ExecutionContext;
import org.ovirt.engine.core.common.action.VdcActionParametersBase;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.action.VdcReturnValueBase;
/**
* Interface for direct operations on {@link CommandBase} objects The reason for introducing this interface is that it
* is desired that in case a command should be created it should be still done by {@link CommandsFactory} at the
* {@link Backend} bean code.
*/
public interface BackendCommandObjectsHandler {
/**
* Creates an instance of the action. This should be used by {@code CommandBase} to insert place holders for tasks
*
* @param actionType
* the type of the command to run
* @param parameters
* parameters of the command
* @return object of the created command
*/
CommandBase<?> createAction(VdcActionType actionType, VdcActionParametersBase parameters, CommandContext context);
/**
* Executes the instance of the action. This should be used by parent/root commands in order to execute child
* commands that place holders were created for them.
*/
VdcReturnValueBase runAction(CommandBase<?> action, ExecutionContext executionContext);
}