Piotr Kliczewski has uploaded a new change for review. Change subject: events: sending stats with vm status change event ......................................................................
events: sending stats with vm status change event Change-Id: Ib15df9ce78bbb86c9284bdd6b772d0e6801db765 Signed-off-by: pkliczew <piotr.kliczew...@gmail.com> --- M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/PollVMStatsRefresher.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/EventVMStatsRefresher.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetAllVmStatsVDSCommand.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVmStatsVDSCommand.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmStatsVdsBrokerCommand.java 5 files changed, 21 insertions(+), 35 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/05/40205/1 diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/PollVMStatsRefresher.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/PollVMStatsRefresher.java index 7bff015..ad85a5e 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/PollVMStatsRefresher.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/PollVMStatsRefresher.java @@ -11,7 +11,7 @@ public class PollVMStatsRefresher implements VMStatsRefresher { - protected VdsManager manager; + protected final VdsManager manager; private SchedulerUtil sched; private String vmsMonitoringJobId; private int refreshIteration = 1; diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/EventVMStatsRefresher.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/EventVMStatsRefresher.java index 27a526b..829d3fd 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/EventVMStatsRefresher.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/EventVMStatsRefresher.java @@ -7,12 +7,10 @@ import java.util.List; import java.util.Map; +import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VmDynamic; import org.ovirt.engine.core.common.utils.Pair; -import org.ovirt.engine.core.common.vdscommands.GetVmStatsVDSCommandParameters; -import org.ovirt.engine.core.common.vdscommands.VDSCommandType; -import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector; @@ -23,6 +21,7 @@ import org.ovirt.engine.core.vdsbroker.VmsListFetcher; import org.ovirt.engine.core.vdsbroker.VmsMonitoring; import org.ovirt.engine.core.vdsbroker.VmsStatisticsFetcher; +import org.ovirt.engine.core.vdsbroker.vdsbroker.VmStatsVdsBrokerCommand; import org.ovirt.engine.core.vdsbroker.vdsbroker.entities.VmInternalData; import org.ovirt.vdsm.jsonrpc.client.events.EventSubscriber; import org.reactivestreams.Subscription; @@ -59,7 +58,7 @@ List<Pair<VM, VmInternalData>> devicesChangedVms = new ArrayList<>(); List<VmInternalData> vms = convertEvent(map); - prepareChanges(vms, changedVms, devicesChangedVms); + prepareChanges(vms, changedVms, devicesChangedVms, map); new VmsMonitoring(manager, changedVms, devicesChangedVms, auditLogDirector).perform(); } finally { @@ -67,12 +66,14 @@ } } + @SuppressWarnings("unchecked") private List<VmInternalData> convertEvent(Map<String, Object> map) { List<VmInternalData> returnVMs = new ArrayList<VmInternalData>(); for (String vmid : map.keySet()) { VmDynamic vmdynamic = new VmDynamic(); vmdynamic.setId(new Guid((String) vmid)); - vmdynamic.setStatus(convertToVmStatus((String) map.get(vmid))); + Map<String, Object> attributes = (Map<String, Object>) map.get(vmid); + vmdynamic.setStatus(convertToVmStatus((String) attributes.get("status"))); VmInternalData vmData = new VmInternalData(vmdynamic, null, null, null); returnVMs.add(vmData); @@ -80,13 +81,19 @@ return returnVMs; } + @SuppressWarnings("unchecked") private void prepareChanges(List<VmInternalData> vms, List<Pair<VM, VmInternalData>> changedVms, - List<Pair<VM, VmInternalData>> devicesChangedVms) { + List<Pair<VM, VmInternalData>> devicesChangedVms, Map<String, Object> map) { Map<Guid, VM> dbVms = dbFacade.getVmDao().getAllRunningByVds(manager.getVdsId()); for (VmInternalData vdsmVm : vms) { - VM dbVm = dbVms.get(vdsmVm.getVmDynamic().getId()); + Guid vmid = vdsmVm.getVmDynamic().getId(); + VM dbVm = dbVms.get(vmid); - VmInternalData vmData = fetchStats(dbVm, vdsmVm); + VDS host = dbFacade.getVdsDao().get(manager.getVdsId()); + Map<String, Object> attributes = (Map<String, Object>) map.get(vmid.toString()); + VmInternalData vmData = + VmStatsVdsBrokerCommand.createVmInternalData((Map<String, Object>) attributes.get("stats"), + host); if (vmData != null) { changedVms.add(new Pair<>(dbVm, vmData)); } @@ -94,25 +101,6 @@ devicesChangedVms.add(new Pair<>(dbVm, vdsmVm)); } } - } - - private VmInternalData fetchStats(VM dbVm, VmInternalData vdsmVm) { - // TODO move VmStats to be part of an event - VDSReturnValue vmStats = - resourceManager.runVdsCommand( - VDSCommandType.GetVmStats, - new GetVmStatsVDSCommandParameters(manager.getCopyVds(), vdsmVm.getVmDynamic().getId())); - if (vmStats.getSucceeded()) { - return (VmInternalData) vmStats.getReturnValue(); - } else { - if (dbVm != null) { - log.error( - "failed to fetch VM '{}' stats. status remain unchanged ({})", - dbVm.getName(), - dbVm.getStatus()); - } - } - return null; } @Override diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetAllVmStatsVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetAllVmStatsVDSCommand.java index d99ce56..81d8b45 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetAllVmStatsVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetAllVmStatsVDSCommand.java @@ -21,7 +21,7 @@ proceedProxyReturnValue(); Map<Guid, VmInternalData> returnVMs = new HashMap<Guid, VmInternalData>(); for (int idx = 0; idx < mVmListReturn.mInfoList.length; ++idx) { - VmInternalData vmInternalData = createVmInternalData(mVmListReturn.mInfoList[idx]); + VmInternalData vmInternalData = createVmInternalData(mVmListReturn.mInfoList[idx], getVds()); returnVMs.put(vmInternalData.getVmDynamic().getId(), vmInternalData); } setReturnValue(returnVMs); diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVmStatsVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVmStatsVDSCommand.java index 6251507..061b899 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVmStatsVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVmStatsVDSCommand.java @@ -14,6 +14,6 @@ protected void executeVdsBrokerCommand() { mVmListReturn = getBroker().getVmStats(getParameters().getVmId().toString()); proceedProxyReturnValue(); - setReturnValue(createVmInternalData(mVmListReturn.mInfoList[0])); + setReturnValue(createVmInternalData(mVmListReturn.mInfoList[0], getVds())); } } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmStatsVdsBrokerCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmStatsVdsBrokerCommand.java index 6d77898..df1f63e 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmStatsVdsBrokerCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmStatsVdsBrokerCommand.java @@ -26,10 +26,10 @@ return mVmListReturn; } - protected VmInternalData createVmInternalData(Map<String, Object> xmlRpcStruct) { + public static VmInternalData createVmInternalData(Map<String, Object> xmlRpcStruct, VDS host) { VmDynamic vmDynamic = new VmDynamic(); VdsBrokerObjectsBuilder.updateVMDynamicData(vmDynamic, xmlRpcStruct); - adjustDisplayIp(vmDynamic.getGraphicsInfos()); + adjustDisplayIp(vmDynamic.getGraphicsInfos(), host); return new VmInternalData(vmDynamic, VdsBrokerObjectsBuilder.buildVMStatisticsData(xmlRpcStruct), VdsBrokerObjectsBuilder.buildVmGuestAgentInterfacesData(vmDynamic.getId(), xmlRpcStruct), @@ -44,9 +44,7 @@ * * @param graphicsInfos - graphicsInfo to adjust */ - private void adjustDisplayIp(Map<GraphicsType, GraphicsInfo> graphicsInfos) { - VDS host = getVds(); - + private static void adjustDisplayIp(Map<GraphicsType, GraphicsInfo> graphicsInfos, VDS host) { for (GraphicsInfo graphicsInfo : graphicsInfos.values()) { if (graphicsInfo == null) { continue; -- To view, visit https://gerrit.ovirt.org/40205 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib15df9ce78bbb86c9284bdd6b772d0e6801db765 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Piotr Kliczewski <piotr.kliczew...@gmail.com> Gerrit-Reviewer: automat...@ovirt.org Gerrit-Reviewer: oVirt Jenkins CI Server _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches