package org.ovirt.engine.core.vdsbroker.vdsbroker;
import org.ovirt.engine.core.common.errors.EngineError;
import org.ovirt.engine.core.common.vdscommands.HSMTaskGuidBaseVDSCommandParameters;
import org.ovirt.engine.core.utils.log.Logged;
import org.ovirt.engine.core.utils.log.Logged.LogLevel;
@Logged(executionLevel = LogLevel.TRACE)
public class HSMGetTaskStatusVDSCommand<P extends HSMTaskGuidBaseVDSCommandParameters>
extends HSMGetAllTasksStatusesVDSCommand<P> {
private TaskStatusReturn _result;
public HSMGetTaskStatusVDSCommand(P parameters) {
super(parameters);
}
@Override
protected void executeVdsBrokerCommand() {
_result = getBroker().getTaskStatus(getParameters().getTaskId().toString());
proceedProxyReturnValue();
setReturnValue(parseTaskStatus(_result.taskStatus));
}
@Override
protected void proceedProxyReturnValue() {
EngineError returnStatus = getReturnValueFromStatus(getReturnStatus());
switch (returnStatus) {
case UnknownTask:
// ignore this, the parser can handle the empty result.
break;
default:
super.proceedProxyReturnValue();
initializeVdsError(returnStatus);
break;
}
}
@Override
protected Status getReturnStatus() {
return _result.getStatus();
}
@Override
protected void updateReturnStatus(Status newReturnStatus) {
_result.setStatus(newReturnStatus);
}
}