You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sw...@apache.org on 2015/05/31 17:25:45 UTC
ambari git commit: AMBARI-11568. Metric dropdown appends aggregation
to each metric.
Repository: ambari
Updated Branches:
refs/heads/trunk 4024cf366 -> 8c569a8b0
AMBARI-11568. Metric dropdown appends aggregation to each metric.
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/8c569a8b
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/8c569a8b
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/8c569a8b
Branch: refs/heads/trunk
Commit: 8c569a8b0c661a10effca68f4b1b5da98fb8079d
Parents: 4024cf3
Author: Siddharth Wagle <sw...@hortonworks.com>
Authored: Sun May 31 08:25:40 2015 -0700
Committer: Siddharth Wagle <sw...@hortonworks.com>
Committed: Sun May 31 08:25:40 2015 -0700
----------------------------------------------------------------------
ambari-server/pom.xml | 5 ++
.../internal/StackArtifactResourceProvider.java | 67 +++++++++++++++++++-
.../StackArtifactResourceProviderTest.java | 2 +-
3 files changed, 71 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/8c569a8b/ambari-server/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-server/pom.xml b/ambari-server/pom.xml
index ca13c7a..af37093 100644
--- a/ambari-server/pom.xml
+++ b/ambari-server/pom.xml
@@ -1463,6 +1463,11 @@
<artifactId>commons-csv</artifactId>
</dependency>
<dependency>
+ <groupId>uk.com.robust-it</groupId>
+ <artifactId>cloning</artifactId>
+ <version>1.9.2</version>
+ </dependency>
+ <dependency>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-assistedinject</artifactId>
</dependency>
http://git-wip-us.apache.org/repos/asf/ambari/blob/8c569a8b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackArtifactResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackArtifactResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackArtifactResourceProvider.java
index 62209e2..3dbe0a8 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackArtifactResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackArtifactResourceProvider.java
@@ -21,6 +21,7 @@ package org.apache.ambari.server.controller.internal;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.inject.Inject;
+import com.rits.cloning.Cloner;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.StackAccessException;
import org.apache.ambari.server.StaticallyInject;
@@ -43,6 +44,7 @@ import org.apache.ambari.server.state.kerberos.KerberosDescriptor;
import org.apache.ambari.server.state.kerberos.KerberosDescriptorFactory;
import org.apache.ambari.server.state.kerberos.KerberosServiceDescriptor;
import org.apache.ambari.server.state.kerberos.KerberosServiceDescriptorFactory;
+import org.apache.ambari.server.state.stack.Metric;
import org.apache.ambari.server.state.stack.MetricDefinition;
import org.apache.ambari.server.state.stack.WidgetLayout;
import org.apache.commons.lang.StringUtils;
@@ -56,6 +58,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -330,11 +333,13 @@ public class StackArtifactResourceProvider extends AbstractControllerResourcePro
if (stackService != null) {
if (componentName == null) {
// Service
- serviceMetrics = metaInfo.getServiceMetrics(stackName, stackVersion, stackService);
+ serviceMetrics = removeAggregateFunctions(metaInfo.getServiceMetrics(stackName,
+ stackVersion, stackService));
descriptor = Collections.singletonMap(stackService, (Object) serviceMetrics);
} else {
// Component
- componentMetrics = metaInfo.getMetrics(stackName, stackVersion, stackService, componentName, Resource.Type.Component.name());
+ componentMetrics = removeAggregateFunctions(metaInfo.getMetrics(stackName,
+ stackVersion, stackService, componentName, Resource.Type.Component.name()));
descriptor = Collections.singletonMap(componentName, (Object) componentMetrics);
}
} else {
@@ -593,4 +598,62 @@ public class StackArtifactResourceProvider extends AbstractControllerResourcePro
return serviceDescriptors;
}
+ private Map<String, Map<String, List<MetricDefinition>>> removeAggregateFunctions(
+ Map<String, Map<String, List<MetricDefinition>>> serviceMetrics ) {
+ Map<String, Map<String, List<MetricDefinition>>> filteredServiceMetrics = null;
+ if (serviceMetrics != null) {
+ Cloner cloner = new Cloner();
+ filteredServiceMetrics = cloner.deepClone(serviceMetrics);
+ // For every Component
+ for (Map<String, List<MetricDefinition>> componentMetricDef : filteredServiceMetrics.values()) {
+ // For every Component / HostComponent category
+ for (Map.Entry<String, List<MetricDefinition>> metricDefEntry : componentMetricDef.entrySet()) {
+ //For every metric definition
+ for (MetricDefinition metricDefinition : metricDefEntry.getValue()) {
+ // Metrics System metrics only
+ if (metricDefinition.getType().equals("ganglia")) {
+ // Create a new map for each category
+ for (Map<String, Metric> metricByCategory : metricDefinition.getMetricsByCategory().values()) {
+ Iterator<Map.Entry<String, Metric>> iterator = metricByCategory.entrySet().iterator();
+ while (iterator.hasNext()) {
+ Map.Entry<String, Metric> entry = iterator.next();
+ String metricName = entry.getKey();
+ if (PropertyHelper.hasAggregateFunctionSuffix(metricName)) {
+ iterator.remove();
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return filteredServiceMetrics;
+ }
+
+ private List<MetricDefinition> removeAggregateFunctions(List<MetricDefinition> componentMetrics) {
+ List<MetricDefinition> filteredComponentMetrics = null;
+ if (componentMetrics != null) {
+ Cloner cloner = new Cloner();
+ filteredComponentMetrics = cloner.deepClone(componentMetrics);
+ // For every metric definition
+ for (MetricDefinition metricDefinition : filteredComponentMetrics) {
+ // Metrics System metrics only
+ if (metricDefinition.getType().equals("ganglia")) {
+ // Create a new map for each category
+ for (Map<String, Metric> metricByCategory : metricDefinition.getMetricsByCategory().values()) {
+ Iterator<Map.Entry<String, Metric>> iterator = metricByCategory.entrySet().iterator();
+ while (iterator.hasNext()) {
+ Map.Entry<String, Metric> entry = iterator.next();
+ String metricName = entry.getKey();
+ if (PropertyHelper.hasAggregateFunctionSuffix(metricName)) {
+ iterator.remove();
+ }
+ }
+ }
+ }
+ }
+ }
+ return filteredComponentMetrics;
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/8c569a8b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackArtifactResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackArtifactResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackArtifactResourceProviderTest.java
index af2cbc4..f4c212c 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackArtifactResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackArtifactResourceProviderTest.java
@@ -123,7 +123,7 @@ public class StackArtifactResourceProviderTest {
Metric m1 = md.getMetrics().get("metrics/dfs/datanode/heartBeats_avg_time");
Metric m2 = md.getMetrics().get("metrics/rpc/closeRegion_num_ops");
- Assert.assertEquals(1630, md.getMetrics().size());
+ Assert.assertEquals(326, md.getMetrics().size());
Assert.assertTrue(m1.isAmsHostMetric());
Assert.assertEquals("unitless", m1.getUnit());
Assert.assertFalse(m2.isAmsHostMetric());