package org.ovirt.engine.core.vdsbroker.vdsbroker;
import static org.ovirt.engine.core.vdsbroker.vdsbroker.VdsBrokerObjectsBuilder.buildVMDynamicDataFromList;
import static org.ovirt.engine.core.vdsbroker.vdsbroker.VdsBrokerObjectsBuilder.getVdsmCallTimestamp;
import static org.ovirt.engine.core.vdsbroker.vdsbroker.VdsBrokerObjectsBuilder.getVmDevicesHash;
import java.util.HashMap;
import java.util.Map;
import org.ovirt.engine.core.common.businessentities.VmDynamic;
import org.ovirt.engine.core.common.vdscommands.VdsIdAndVdsVDSCommandParametersBase;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.utils.log.Logged;
import org.ovirt.engine.core.utils.log.Logged.LogLevel;
import org.ovirt.engine.core.vdsbroker.monitoring.VdsmVm;
@Logged(executionLevel = LogLevel.TRACE)
public class ListVDSCommand<P extends VdsIdAndVdsVDSCommandParametersBase> extends VdsBrokerCommand<P> {
private VMListReturn vmListReturn;
public ListVDSCommand(P parameters) {
super(parameters, parameters.getVds());
}
@Override
protected void executeVdsBrokerCommand() {
vmListReturn = getBroker().list();
proceedProxyReturnValue();
Map<Guid, VdsmVm> returnVMs = new HashMap<>();
for (int idx = 0; idx < vmListReturn.vmList.length; ++idx) {
Map<String, Object> vm = vmListReturn.vmList[idx];
VmDynamic dynamicData = buildVMDynamicDataFromList(vm);
VdsmVm vdsmVm = new VdsmVm(getVdsmCallTimestamp(vm))
.setVmDynamic(dynamicData)
.setDevicesHash(getVmDevicesHash(vm));
returnVMs.put(dynamicData.getId(), vdsmVm);
}
setReturnValue(returnVMs);
}
@Override
protected Status getReturnStatus() {
return vmListReturn.status;
}
@Override
protected Object getReturnValueFromBroker() {
return vmListReturn;
}
@Override
protected boolean getIsPrintReturnValue() {
return false;
}
@Override
protected boolean shouldLogToAudit(){
return false;
}
}