Gilad Chaplik has uploaded a new change for review.

Change subject: core: fix numa node distance persist
......................................................................

core: fix numa node distance persist

Persist node distance according to numa index (and
not count).

Change-Id: Ia3df943ef0a655b1250ebeade8caa7711b612440
Bug-Url: https://bugzilla.redhat.com/1069303
Signed-off-by: Gilad Chaplik <gchap...@redhat.com>
---
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsNumaNodeDAODbFacadeImpl.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
2 files changed, 25 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/90/33190/1

diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsNumaNodeDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsNumaNodeDAODbFacadeImpl.java
index bd999ff..1ad96ee 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsNumaNodeDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsNumaNodeDAODbFacadeImpl.java
@@ -6,6 +6,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 
 import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.core.common.businessentities.NumaNodeStatistics;
@@ -195,14 +196,16 @@
                 }
             };
 
+    // format: (<index_id>, <distance>);*, for example: "0, 10; 2, 16"
     private static Map<Integer, Integer> getDistanceMap(String distance) {
         Map<Integer, Integer> nodeDistance = new HashMap<>();
         if (StringUtils.isBlank(distance)) {
             return nodeDistance;
         }
-        String[] distanceArray = distance.split(",");
+        String[] distanceArray = distance.split(";");
         for (int i = 0; i < distanceArray.length; i++) {
-            nodeDistance.put(i, Integer.valueOf(distanceArray[i]));
+            String[] nodeDistanceArray = distanceArray[i].split(",");
+            nodeDistance.put(Integer.valueOf(nodeDistanceArray[0]), 
Integer.valueOf(nodeDistanceArray[1]));
         }
         return nodeDistance;
     }
@@ -212,9 +215,11 @@
             return null;
         }
         StringBuilder sb = new StringBuilder();
-        for (int i = 0; i < distance.size(); i++) {
-            sb.append(distance.get(i));
+        for (Entry<Integer, Integer> entry : distance.entrySet()) {
+            sb.append(entry.getKey());
             sb.append(",");
+            sb.append(entry.getValue());
+            sb.append(";");
         }
         return sb.deleteCharAt(sb.length() - 1).toString();
     }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
index 679c397..862f765 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
@@ -9,6 +9,7 @@
 import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -80,6 +81,15 @@
 public class VdsBrokerObjectsBuilder {
     private final static int VNC_START_PORT = 5900;
     private final static double NANO_SECONDS = 1000000000;
+
+    private static final Comparator<VdsNumaNode> numaNodeComparator = new 
Comparator<VdsNumaNode>() {
+
+        @Override
+        public int compare(VdsNumaNode arg0, VdsNumaNode arg1) {
+            return arg0.getIndex() < arg1.getIndex() ? -1 : 1;
+        }
+
+    };
 
     public static VmDynamic buildVMDynamicDataFromList(Map<String, Object> 
xmlRpcStruct) {
         VmDynamic vmdynamic = new VmDynamic();
@@ -1657,12 +1667,14 @@
                 newNumaNodeList.add(numaNode);
             }
 
-            for (Map.Entry<String, Object> item : 
numaNodeDistanceMap.entrySet()) {
-                int index = Integer.valueOf(item.getKey());
-                List<Integer> distances = 
extractIntegerList(numaNodeDistanceMap, item.getKey());
+            Collections.sort(newNumaNodeList, numaNodeComparator);
+
+            for (VdsNumaNode vdsNumaNode : newNumaNodeList) {
+                int index = vdsNumaNode.getIndex();
+                List<Integer> distances = 
extractIntegerList(numaNodeDistanceMap, String.valueOf(index));
                 Map<Integer, Integer> distanceMap = new 
HashMap<>(distances.size());
                 for (int i = 0; i < distances.size(); i++) {
-                    distanceMap.put(i, distances.get(i));
+                    distanceMap.put(newNumaNodeList.get(i).getIndex(), 
distances.get(i));
                 }
                 VdsNumaNode newNumaNode = 
NumaUtils.getVdsNumaNodeByIndex(newNumaNodeList, index);
                 if (newNumaNode != null) {


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia3df943ef0a655b1250ebeade8caa7711b612440
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.5
Gerrit-Owner: Gilad Chaplik <gchap...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to