package org.ovirt.engine.core.vdsbroker.monitoring; import org.ovirt.engine.core.common.businessentities.VmDynamic; import org.ovirt.engine.core.common.utils.Pair; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector; import org.ovirt.engine.core.dao.VdsDynamicDao; import org.ovirt.engine.core.dao.VmDynamicDao; import org.ovirt.engine.core.dao.network.VmNetworkInterfaceDao; import org.ovirt.engine.core.vdsbroker.ResourceManager; import org.ovirt.engine.core.vdsbroker.VdsManager; public class VmAnalyzerFactory { private final VdsManager vdsManager; private final boolean updateStatistics; private AuditLogDirector auditLogDirector; private ResourceManager resourceManager; private VmDynamicDao vmDynamicDao; private VmNetworkInterfaceDao vmNetworkInterfaceDao; private VdsDynamicDao vdsDynamicDao; public VmAnalyzerFactory( VdsManager vdsManager, boolean updateStatistics, AuditLogDirector auditLogDirector, ResourceManager resourceManager, VmDynamicDao vmDynamicDao, VmNetworkInterfaceDao vmNetworkInterfaceDao, VdsDynamicDao vdsDynamicDao) { this.vdsManager = vdsManager; this.updateStatistics = updateStatistics; this.auditLogDirector = auditLogDirector; this.resourceManager = resourceManager; this.vmDynamicDao = vmDynamicDao; this.vmNetworkInterfaceDao = vmNetworkInterfaceDao; this.vdsDynamicDao = vdsDynamicDao; } protected VmAnalyzer getVmAnalyzer(Pair<VmDynamic, VdsmVm> monitoredVm) { // the VM that was reported by vdsm VdsmVm vdsmVm = monitoredVm.getSecond(); // VM from the database running on the monitored host, might be null VmDynamic dbVmOnMonitoredHost = monitoredVm.getFirst(); VmDynamic dbVm = dbVmOnMonitoredHost != null ? dbVmOnMonitoredHost : vmDynamicDao.get(vdsmVm.getVmDynamic().getId()); return new VmAnalyzer( dbVm, vdsmVm, updateStatistics, vdsManager, auditLogDirector, resourceManager, vdsDynamicDao, vmNetworkInterfaceDao); } }