aboutsummaryrefslogtreecommitdiffstats
path: root/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/StorageNodeStatsBridge.java
diff options
context:
space:
mode:
Diffstat (limited to 'clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/StorageNodeStatsBridge.java')
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/StorageNodeStatsBridge.java54
1 files changed, 54 insertions, 0 deletions
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/StorageNodeStatsBridge.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/StorageNodeStatsBridge.java
new file mode 100644
index 00000000000..ed4664c5b44
--- /dev/null
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/StorageNodeStatsBridge.java
@@ -0,0 +1,54 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.clustercontroller.core.hostinfo;
+
+import com.yahoo.vespa.clustercontroller.core.LatencyStats;
+import com.yahoo.vespa.clustercontroller.core.NodeMergeStats;
+import com.yahoo.vespa.clustercontroller.core.StorageMergeStats;
+import com.yahoo.vespa.clustercontroller.core.StorageNodeStats;
+import com.yahoo.vespa.clustercontroller.core.StorageNodeStatsContainer;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Class used to create a StorageNodeStatsContainer from HostInfo.
+ * @author hakon
+ */
+public class StorageNodeStatsBridge {
+
+ private StorageNodeStatsBridge() { }
+
+ public static StorageNodeStatsContainer traverseHostInfo(HostInfo hostInfo) {
+ StorageNodeStatsContainer container = new StorageNodeStatsContainer();
+ List<StorageNode> storageNodes = hostInfo.getDistributor().getStorageNodes();
+ for (StorageNode storageNode : storageNodes) {
+ Integer storageNodeIndex = storageNode.getIndex();
+ if (storageNodeIndex == null) {
+ continue;
+ }
+ StorageNode.OpsLatency opsLatency = storageNode.getOpsLatenciesOrNull();
+ if (opsLatency == null) {
+ continue;
+ }
+ StorageNode.Put putLatency = opsLatency.getPut();
+ Long putLatencyMsSum = putLatency.getLatencyMsSum();
+ Long putLatencyCount = putLatency.getCount();
+ if (putLatencyMsSum == null || putLatencyCount == null) {
+ continue;
+ }
+ LatencyStats putLatencyStats = new LatencyStats(putLatencyMsSum, putLatencyCount);
+ StorageNodeStats nodeStats = new StorageNodeStats(putLatencyStats);
+ container.put(storageNodeIndex, nodeStats);
+ }
+ return container;
+ }
+
+ public static StorageMergeStats generate(Distributor distributor) {
+ Map<Integer, NodeMergeStats> mapToNodeStats = new HashMap<>();
+ for (StorageNode storageNode : distributor.getStorageNodes()) {
+ mapToNodeStats.put(storageNode.getIndex(), new NodeMergeStats(storageNode));
+ }
+ return new StorageMergeStats(mapToNodeStats);
+ }
+}