use of org.ovirt.engine.core.common.action.ActionParametersBase in project ovirt-engine by oVirt.
the class Frontend method runAction.
/**
* Run an action of the specified action type using the passed in parameters, also pass in a state object.
* @param actionType The action type of the action to perform.
* @param parameters The parameters of the action.
* @param callback The callback to call when the action is completed.
* @param state The state object.
* @param showErrorDialog Whether to show a pop-up dialog with the error or not.
*/
public void runAction(final ActionType actionType, final ActionParametersBase parameters, final IFrontendActionAsyncCallback callback, final Object state, final boolean showErrorDialog) {
VdcOperation<ActionType, ActionParametersBase> operation = new VdcOperation<>(actionType, parameters, new VdcOperationCallback<VdcOperation<ActionType, ActionParametersBase>, ActionReturnValue>() {
@Override
public void onSuccess(final VdcOperation<ActionType, ActionParametersBase> operation, final ActionReturnValue result) {
// $NON-NLS-1$
logger.finer("Frontend: sucessfully executed runAction, determining result!");
handleActionResult(actionType, parameters, result, callback != null ? callback : NULLABLE_ASYNC_CALLBACK, state, showErrorDialog);
fireAsyncActionSucceededEvent(state);
}
@Override
public void onFailure(final VdcOperation<ActionType, ActionParametersBase> operation, final Throwable caught) {
if (ignoreFailure(caught)) {
return;
}
// $NON-NLS-1$
logger.log(Level.SEVERE, "Failed to execute runAction: " + caught, caught);
failureEventHandler(caught);
FrontendActionAsyncResult f = new FrontendActionAsyncResult(actionType, parameters, null, state);
if (callback != null) {
callback.executed(f);
}
fireAsyncActionFailedEvent(state);
}
});
fireAsyncOperationStartedEvent(state);
getOperationManager().addOperation(operation);
}
use of org.ovirt.engine.core.common.action.ActionParametersBase in project ovirt-engine by oVirt.
the class Frontend method runMultipleAction.
/**
* Run multiple actions using the same {@code ActionType}.
* @param actionType The action type.
* @param parameters The list of parameters.
* @param isRunOnlyIfAllValidationPass A flag to only run the actions if all can be completed.
* @param callback The callback to call when the operation completes.
* @param state The state.
* @param showErrorDialog Should we show an error dialog?
* @param waitForResult a flag to return the result after running the whole action and not just the can do actions.
*/
public void runMultipleAction(final ActionType actionType, final List<ActionParametersBase> parameters, final boolean isRunOnlyIfAllValidationPass, final IFrontendMultipleActionAsyncCallback callback, final Object state, final boolean showErrorDialog, final boolean waitForResult) {
VdcOperationCallbackList<VdcOperation<ActionType, ActionParametersBase>, List<ActionReturnValue>> multiCallback = new VdcOperationCallbackList<VdcOperation<ActionType, ActionParametersBase>, List<ActionReturnValue>>() {
@Override
public void onSuccess(final List<VdcOperation<ActionType, ActionParametersBase>> operationList, final List<ActionReturnValue> resultObject) {
// $NON-NLS-1$
logger.finer("Frontend: successfully executed runMultipleAction, determining result!");
List<ActionReturnValue> failed = resultObject.stream().filter(v -> !v.isValid()).collect(Collectors.toList());
if (showErrorDialog && !failed.isEmpty()) {
translateErrors(failed);
getEventsHandler().runMultipleActionFailed(actionType, failed);
}
if (callback != null) {
callback.executed(new FrontendMultipleActionAsyncResult(actionType, parameters, resultObject, state));
}
fireAsyncActionSucceededEvent(state);
}
@Override
public void onFailure(final List<VdcOperation<ActionType, ActionParametersBase>> operation, final Throwable caught) {
if (ignoreFailure(caught)) {
return;
}
// $NON-NLS-1$
logger.log(Level.SEVERE, "Failed to execute runMultipleAction: " + caught, caught);
failureEventHandler(caught);
if (callback != null) {
callback.executed(new FrontendMultipleActionAsyncResult(actionType, parameters, null, state));
}
fireAsyncActionFailedEvent(state);
}
};
List<VdcOperation<?, ?>> operationList = parameters.stream().map(p -> new VdcOperation<>(actionType, p, !waitForResult, multiCallback, isRunOnlyIfAllValidationPass)).collect(Collectors.toList());
fireAsyncOperationStartedEvent(state);
if (operationList.isEmpty()) {
// it ourselves.
if (scheduler == null) {
scheduler = Scheduler.get();
}
scheduler.scheduleDeferred(() -> {
if (callback != null) {
List<ActionReturnValue> emptyResult = new ArrayList<>();
callback.executed(new FrontendMultipleActionAsyncResult(actionType, parameters, emptyResult, state));
}
});
} else {
getOperationManager().addOperationList(operationList);
}
}
use of org.ovirt.engine.core.common.action.ActionParametersBase in project ovirt-engine by oVirt.
the class HostListModel method onSshStop.
public void onSshStop() {
ConfirmationModel model = (ConfirmationModel) getConfirmWindow();
if (model.getProgress() != null) {
return;
}
ArrayList<ActionParametersBase> list = new ArrayList<>();
for (Object item : getSelectedItems()) {
VDS vds = (VDS) item;
VdsPowerDownParameters param = new VdsPowerDownParameters(vds.getId());
param.setFallbackToPowerManagement(false);
param.setKeepPolicyPMEnabled(true);
list.add(param);
}
model.startProgress();
Frontend.getInstance().runMultipleAction(ActionType.VdsPowerDown, list, result -> {
ConfirmationModel localModel = (ConfirmationModel) result.getState();
localModel.stopProgress();
cancelConfirm();
}, model);
}
use of org.ovirt.engine.core.common.action.ActionParametersBase in project ovirt-engine by oVirt.
the class HostListModel method postOnAssignTags.
@Override
public void postOnAssignTags(Map<Guid, Boolean> attachedTags) {
TagListModel model = (TagListModel) getWindow();
ArrayList<Guid> hostIds = new ArrayList<>();
for (Object item : getSelectedItems()) {
VDS vds = (VDS) item;
hostIds.add(vds.getId());
}
// prepare attach/detach lists
ArrayList<Guid> tagsToAttach = new ArrayList<>();
ArrayList<Guid> tagsToDetach = new ArrayList<>();
if (model.getItems() != null && model.getItems().size() > 0) {
ArrayList<TagModel> tags = (ArrayList<TagModel>) model.getItems();
TagModel rootTag = tags.get(0);
TagModel.recursiveEditAttachDetachLists(rootTag, attachedTags, tagsToAttach, tagsToDetach);
}
ArrayList<ActionParametersBase> prmsToAttach = new ArrayList<>();
for (Guid tag_id : tagsToAttach) {
prmsToAttach.add(new AttachEntityToTagParameters(tag_id, hostIds));
}
Frontend.getInstance().runMultipleAction(ActionType.AttachVdsToTag, prmsToAttach);
ArrayList<ActionParametersBase> prmsToDetach = new ArrayList<>();
for (Guid tag_id : tagsToDetach) {
prmsToDetach.add(new AttachEntityToTagParameters(tag_id, hostIds));
}
Frontend.getInstance().runMultipleAction(ActionType.DetachVdsFromTag, prmsToDetach);
cancel();
}
use of org.ovirt.engine.core.common.action.ActionParametersBase in project ovirt-engine by oVirt.
the class HostListModel method onSshRestart.
public void onSshRestart() {
ConfirmationModel model = (ConfirmationModel) getConfirmWindow();
if (model.getProgress() != null) {
return;
}
ArrayList<ActionParametersBase> list = new ArrayList<>();
for (Object item : getSelectedItems()) {
VDS vds = (VDS) item;
VdsActionParameters params = new VdsActionParameters(vds.getId());
params.setPrevVdsStatus(vds.getStatus());
list.add(params);
}
model.startProgress();
Frontend.getInstance().runMultipleAction(ActionType.SshHostReboot, list, result -> {
ConfirmationModel localModel = (ConfirmationModel) result.getState();
localModel.stopProgress();
cancelConfirm();
}, model);
}
Aggregations