diff options
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.java | 54 |
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); + } +} |