package org.ovirt.engine.core.bll;
import org.ovirt.engine.core.bll.context.CommandContext;
import org.ovirt.engine.core.common.action.VdsActionParameters;
import org.ovirt.engine.core.common.businessentities.VDSStatus;
import org.ovirt.engine.core.common.errors.EngineMessage;
public abstract class RefreshHostInfoCommandBase<T extends VdsActionParameters> extends VdsCommand<T> {
public RefreshHostInfoCommandBase(T parameters, CommandContext commandContext) {
super(parameters, commandContext);
}
@Override
protected boolean validate() {
// don't check status on internal executions
return validate(hostExists()) && (isInternalExecution() || validate(hostStatusValid()));
}
private ValidationResult hostExists() {
return getVds() == null ? new ValidationResult(EngineMessage.ACTION_TYPE_FAILED_HOST_NOT_EXIST) : ValidationResult.VALID;
}
private ValidationResult hostStatusValid() {
VDSStatus hostStatus = getVds().getStatus();
if (hostStatus != VDSStatus.Maintenance && hostStatus != VDSStatus.Up && hostStatus != VDSStatus.NonOperational) {
return new ValidationResult(EngineMessage.ACTION_TYPE_FAILED_VDS_STATUS_ILLEGAL,
EngineMessage.VAR__HOST_STATUS__UP_MAINTENANCE_OR_NON_OPERATIONAL.name());
}
return ValidationResult.VALID;
}
}