package org.ovirt.engine.core.bll;
import java.util.ArrayList;
import java.util.List;
import org.ovirt.engine.core.bll.context.CommandContext;
import org.ovirt.engine.core.bll.utils.PermissionSubject;
import org.ovirt.engine.core.common.VdcObjectType;
import org.ovirt.engine.core.common.action.AddInternalJobParameters;
import org.ovirt.engine.core.common.errors.EngineMessage;
/**
*
* BLL command to create a Job for a task that's already running. This is used so that tasks
* that are started externally can be monitored from engine.
*/
@InternalCommandAttribute
public class AddInternalJobCommand<T extends AddInternalJobParameters> extends AddJobCommand<T> {
public AddInternalJobCommand(T parameters, CommandContext cmdContext) {
super(parameters, cmdContext);
}
@Override
protected boolean validate() {
boolean retValue = super.validate();
if (getParameters().getActionType() == null) {
addValidationMessage(EngineMessage.ACTION_TYPE_EMPTY_ACTION_TYPE);
retValue = false;
}
return retValue;
}
@Override
protected void executeCommand() {
createJob(getParameters().getActionType(), false);
}
@Override
public List<PermissionSubject> getPermissionCheckSubjects() {
List<PermissionSubject> permissionList = new ArrayList<>();
if (getParameters().getJobEntityType() != null && getParameters().getJobEntityId() != null) {
permissionList.add(new PermissionSubject(getParameters().getJobEntityId(),
getParameters().getJobEntityType(),
getParameters().getActionType().getActionGroup()));
} else {
permissionList.add(new PermissionSubject(MultiLevelAdministrationHandler.SYSTEM_OBJECT_ID,
VdcObjectType.System,
getParameters().getActionType().getActionGroup()));
}
return permissionList;
}
}