package org.ovirt.engine.core.vdsbroker.vdsbroker;
import org.ovirt.engine.core.common.errors.*;
import org.ovirt.engine.core.common.vdscommands.*;
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 TaskStatusReturnForXmlRpc _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() {
VdcBllErrors 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 StatusForXmlRpc getReturnStatus() {
return _result.mStatus;
}
@Override
protected void UpdateReturnStatus(StatusForXmlRpc newReturnStatus) {
_result.mStatus = newReturnStatus;
}
}