package org.ovirt.engine.core.bll.interfaces;
import java.util.ArrayList;
import org.ovirt.engine.core.bll.context.CommandContext;
import org.ovirt.engine.core.bll.context.EngineContext;
import org.ovirt.engine.core.common.action.VdcActionParametersBase;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.action.VdcReturnValueBase;
import org.ovirt.engine.core.common.interfaces.BackendLocal;
import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
import org.ovirt.engine.core.common.queries.VdcQueryType;
import org.ovirt.engine.core.compat.DateTime;
public interface BackendInternal extends BackendLocal {
VdcReturnValueBase runInternalAction(VdcActionType actionType, VdcActionParametersBase parameters);
/**
* Executes an action internally.
*
* @param actionType
* The type which define the action. Correlated to a concrete {@code CommandBase} instance.
* @param parameters
* The parameters which are used to create the command.
* @param context
* The context by which the command is being executed.
* @return The result of executing the action
*/
VdcReturnValueBase runInternalAction(VdcActionType actionType,
VdcActionParametersBase parameters,
CommandContext context);
/**
* End the command with the passed compensation context, so that the calling command can compensate the internal
* changes if need to.
*
* @param actionType
* The type of command to end.
* @param parameters
* The command's parameters.
* @param context
* The context by which the command should be ended
* @return The result of the command ending.
*/
VdcReturnValueBase endAction(VdcActionType actionType,
VdcActionParametersBase parameters,
CommandContext context);
VdcQueryReturnValue runInternalQuery(VdcQueryType actionType,
VdcQueryParametersBase parameters,
EngineContext context);
ArrayList<VdcReturnValueBase> runInternalMultipleActions(VdcActionType actionType,
ArrayList<VdcActionParametersBase> parameters);
/**
* Invokes multiple actions of the same action type with different parameters under a given command context which if
* contains an execution context, determines the visibility of the action
* determines the visibility of the action.<br/>
* The context determines the monitoring of the action:
* <ul>
* <li>If {@code executionContext} is null, default implementation will create {@code Job} instance to monitor a
* command for non-internal invocations.</li>
* <li>If {@code executionContext} is configured for monitoring, a {@code Job} entity will be created for each
* command which ends the validation successfully.</li>
* </ul>
*
* @param actionType
* The type of the action
* @param parameters
* A list containing the parameters for creating the command
* @param commandContext
* Determines the visibility of the actions.
* @return A collection of the results of each action validation.
*/
ArrayList<VdcReturnValueBase> runInternalMultipleActions(VdcActionType actionType,
ArrayList<VdcActionParametersBase> parameters, CommandContext commandContext);
DateTime getStartedAt();
VdcQueryReturnValue runInternalQuery(VdcQueryType queryType, VdcQueryParametersBase queryParameters);
}