Martin Mucha has uploaded a new change for review.

Change subject: core: introducing QosDaoCache
......................................................................

core: introducing QosDaoCache

Class which caches already queried HostNetworkQos instances loading
missing ones as needed.

Code was extracted from HostSetupNetworksCommand, because it will be
also needed on other locations.

Change-Id: Iac75ac3a09cce8790b454178f2d3f7ceda534649
Signed-off-by: Martin Mucha <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostSetupNetworksCommand.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/QosDaoCache.java
2 files changed, 36 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/71/37871/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostSetupNetworksCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostSetupNetworksCommand.java
index 5522e3f..c7a5682 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostSetupNetworksCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostSetupNetworksCommand.java
@@ -25,6 +25,7 @@
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSStatus;
 import org.ovirt.engine.core.common.businessentities.network.Bond;
+import org.ovirt.engine.core.common.businessentities.network.HostNetworkQos;
 import org.ovirt.engine.core.common.businessentities.network.IpConfiguration;
 import org.ovirt.engine.core.common.businessentities.network.Network;
 import org.ovirt.engine.core.common.businessentities.network.NetworkAttachment;
@@ -44,7 +45,6 @@
 import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
 import 
org.ovirt.engine.core.common.vdscommands.VdsIdAndVdsVDSCommandParametersBase;
 import org.ovirt.engine.core.compat.Version;
-import org.ovirt.engine.core.dao.network.HostNetworkQosDao;
 import org.ovirt.engine.core.utils.NetworkUtils;
 import org.ovirt.engine.core.utils.transaction.TransactionMethod;
 import org.ovirt.engine.core.utils.transaction.TransactionSupport;
@@ -66,6 +66,7 @@
     private List<VdsNetworkInterface> existingNics;
     private List<NetworkAttachment> existingAttachments;
     private List<HostNetwork> networksToConfigure;
+    private final QosDaoCache qosDaoCache = new 
QosDaoCache(getDbFacade().getHostNetworkQosDao());
 
     public HostSetupNetworksCommand(T parameters) {
         this(parameters, null);
@@ -227,13 +228,13 @@
     private List<VdsNetworkInterface> getExistingNics() {
         if (existingNics == null) {
             existingNics = 
getDbFacade().getInterfaceDao().getAllInterfacesForVds(getVdsId());
-            HostNetworkQosDao qosDao = getDbFacade().getHostNetworkQosDao();
 
             for (VdsNetworkInterface iface : existingNics) {
                 Network network = 
getNetworkBusinessEntityMap().get(iface.getNetworkName());
-                
iface.setNetworkImplementationDetails(NetworkUtils.calculateNetworkImplementationDetails(network,
-                        network == null ? null : 
qosDao.get(network.getQosId()),
-                        iface));
+                HostNetworkQos hostNetworkQos = network == null ? null : 
qosDaoCache.get(network.getQosId());
+                VdsNetworkInterface.NetworkImplementationDetails 
networkImplementationDetails =
+                        
NetworkUtils.calculateNetworkImplementationDetails(network, hostNetworkQos, 
iface);
+                
iface.setNetworkImplementationDetails(networkImplementationDetails);
             }
         }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/QosDaoCache.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/QosDaoCache.java
new file mode 100644
index 0000000..da6159c
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/QosDaoCache.java
@@ -0,0 +1,30 @@
+package org.ovirt.engine.core.bll.network.host;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.ovirt.engine.core.common.businessentities.network.HostNetworkQos;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dao.network.HostNetworkQosDao;
+
+public class QosDaoCache {
+
+    private final HostNetworkQosDao qosDao;
+    private final Map<Guid, HostNetworkQos> cache = new HashMap<>();
+
+    public QosDaoCache(HostNetworkQosDao qosDao) {
+        this.qosDao = qosDao;
+
+    }
+
+    public HostNetworkQos get(Guid qosId) {
+        if (cache.containsKey(qosId)) {
+            return cache.get(qosId);
+        }
+
+        HostNetworkQos result = qosDao.get(qosId);
+        cache.put(qosId, result);
+
+        return result;
+    }
+}


-- 
To view, visit http://gerrit.ovirt.org/37871
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iac75ac3a09cce8790b454178f2d3f7ceda534649
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Martin Mucha <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to