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/19 21:56:13 UTC

ambari git commit: AMBARI-11250. Publishing graphs/widgets for a new service requires ambari server code change.

Repository: ambari
Updated Branches:
  refs/heads/trunk 8a7c54c63 -> 824bc8b6a


AMBARI-11250. Publishing graphs/widgets for a new service requires ambari server code change.


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/824bc8b6
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/824bc8b6
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/824bc8b6

Branch: refs/heads/trunk
Commit: 824bc8b6a45682638147d24197cdf106c4fe96c5
Parents: 8a7c54c
Author: Siddharth Wagle <sw...@hortonworks.com>
Authored: Tue May 19 12:55:58 2015 -0700
Committer: Siddharth Wagle <sw...@hortonworks.com>
Committed: Tue May 19 12:56:06 2015 -0700

----------------------------------------------------------------------
 .../metrics/timeline/AMSPropertyProvider.java   | 23 ++++-
 .../ambari/server/state/ComponentInfo.java      | 11 +++
 .../AMBARI_METRICS/0.1.0/metainfo.xml           |  1 +
 .../HBASE/0.96.0.2.0/metainfo.xml               |  2 +
 .../timeline/AMSPropertyProviderTest.java       | 96 ++++++++++++++++++++
 5 files changed, 131 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/824bc8b6/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProvider.java
index 8bd1b2d..d5af2b7 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProvider.java
@@ -17,7 +17,10 @@
  */
 package org.apache.ambari.server.controller.metrics.timeline;
 
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.configuration.ComponentSSLConfiguration;
+import org.apache.ambari.server.controller.AmbariManagementController;
+import org.apache.ambari.server.controller.AmbariServer;
 import org.apache.ambari.server.controller.internal.PropertyInfo;
 import org.apache.ambari.server.controller.metrics.MetricHostProvider;
 import org.apache.ambari.server.controller.metrics.MetricsPropertyProvider;
@@ -27,6 +30,7 @@ import org.apache.ambari.server.controller.spi.SystemException;
 import org.apache.ambari.server.controller.spi.TemporalInfo;
 import org.apache.ambari.server.controller.utilities.PropertyHelper;
 import org.apache.ambari.server.controller.utilities.StreamProvider;
+import org.apache.ambari.server.state.StackId;
 import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.metrics2.sink.timeline.TimelineMetric;
 import org.apache.hadoop.metrics2.sink.timeline.TimelineMetrics;
@@ -339,8 +343,23 @@ public abstract class AMSPropertyProvider extends MetricsPropertyProvider {
       } else {
         String componentName = getComponentName(resource);
         if (componentName != null && !componentName.isEmpty()) {
-          if (TIMELINE_APPID_MAP.containsKey(componentName)) {
-            componentName = TIMELINE_APPID_MAP.get(componentName);
+          String clusterName = (String) resource.getPropertyValue(clusterNamePropertyId);
+          StackId stackId;
+          try {
+            AmbariManagementController managementController = AmbariServer.getController();
+            stackId = managementController.getClusters().getCluster(clusterName).getCurrentStackVersion();
+            if (stackId != null) {
+              String stackName = stackId.getStackName();
+              String version = stackId.getStackVersion();
+              AmbariMetaInfo ambariMetaInfo = managementController.getAmbariMetaInfo();
+              String serviceName = ambariMetaInfo.getComponentToService(stackName, version, componentName);
+              String timeLineAppId = ambariMetaInfo.getComponent(stackName, version, serviceName, componentName).getTimelineAppid();
+              if (timeLineAppId != null){
+                componentName = timeLineAppId;
+              }
+            }
+          } catch (Exception e) {
+            e.printStackTrace();
           }
           uriBuilder.setParameter("appId", componentName);
         }

http://git-wip-us.apache.org/repos/asf/ambari/blob/824bc8b6/ambari-server/src/main/java/org/apache/ambari/server/state/ComponentInfo.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ComponentInfo.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ComponentInfo.java
index 05c0df7..fd68060 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/ComponentInfo.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ComponentInfo.java
@@ -90,6 +90,8 @@ public class ComponentInfo {
   @XmlElement(name="auto-deploy")
   private AutoDeployInfo autoDeploy;
 
+  private String timelineAppid;
+
   public ComponentInfo() {
   }
 
@@ -109,6 +111,7 @@ public class ComponentInfo {
     autoDeploy = prototype.autoDeploy;
     configDependencies = prototype.configDependencies;
     clientConfigFiles = prototype.clientConfigFiles;
+    timelineAppid = prototype.timelineAppid;
   }
 
   public String getName() {
@@ -252,6 +255,14 @@ public class ComponentInfo {
     this.clientsToUpdateConfigs = clientsToUpdateConfigs;
   }
 
+  public String getTimelineAppid() {
+    return timelineAppid;
+  }
+
+  public void setTimelineAppid(String timelineAppid) {
+    this.timelineAppid = timelineAppid;
+  }
+
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;

http://git-wip-us.apache.org/repos/asf/ambari/blob/824bc8b6/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/metainfo.xml b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/metainfo.xml
index 6c5dd32..039cf4d 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/metainfo.xml
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/metainfo.xml
@@ -31,6 +31,7 @@
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <versionAdvertised>false</versionAdvertised>
+          <timelineAppid>AMS-HBASE</timelineAppid>
           <dependencies>
             <dependency>
               <name>ZOOKEEPER/ZOOKEEPER_SERVER</name>

http://git-wip-us.apache.org/repos/asf/ambari/blob/824bc8b6/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/metainfo.xml b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/metainfo.xml
index 1032024..e0d8ba2 100644
--- a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/metainfo.xml
+++ b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/metainfo.xml
@@ -32,6 +32,7 @@
           <category>MASTER</category>
           <cardinality>1+</cardinality>
           <versionAdvertised>true</versionAdvertised>
+          <timelineAppid>HBASE</timelineAppid>
           <dependencies>
             <dependency>
               <name>HDFS/HDFS_CLIENT</name>
@@ -72,6 +73,7 @@
           <category>SLAVE</category>
           <cardinality>1+</cardinality>
           <versionAdvertised>true</versionAdvertised>
+          <timelineAppid>HBASE</timelineAppid>
           <commandScript>
             <script>scripts/hbase_regionserver.py</script>
             <scriptType>PYTHON</scriptType>

http://git-wip-us.apache.org/repos/asf/ambari/blob/824bc8b6/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProviderTest.java
index 6e389ed..81c53cc 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProviderTest.java
@@ -17,7 +17,11 @@
  */
 package org.apache.ambari.server.controller.metrics.timeline;
 
+import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.configuration.ComponentSSLConfiguration;
+import org.apache.ambari.server.controller.AmbariManagementController;
+import org.apache.ambari.server.controller.AmbariServer;
 import org.apache.ambari.server.controller.internal.PropertyInfo;
 import org.apache.ambari.server.controller.internal.ResourceImpl;
 import org.apache.ambari.server.controller.internal.TemporalInfoImpl;
@@ -28,9 +32,17 @@ import org.apache.ambari.server.controller.spi.Resource;
 import org.apache.ambari.server.controller.spi.SystemException;
 import org.apache.ambari.server.controller.spi.TemporalInfo;
 import org.apache.ambari.server.controller.utilities.PropertyHelper;
+import org.apache.ambari.server.state.Cluster;
+import org.apache.ambari.server.state.Clusters;
+import org.apache.ambari.server.state.ComponentInfo;
+import org.apache.ambari.server.state.StackId;
 import org.apache.http.client.utils.URIBuilder;
 import org.junit.Assert;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.powermock.api.easymock.PowerMock;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
 
 import java.io.File;
 import java.io.IOException;
@@ -42,9 +54,14 @@ import java.util.Map;
 import java.util.Set;
 
 import static org.apache.ambari.server.controller.metrics.MetricsServiceProvider.MetricsService;
+import static org.easymock.EasyMock.anyObject;
 import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
 import static org.mockito.Mockito.mock;
 
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({AMSPropertyProvider.class, AmbariServer.class})
 public class AMSPropertyProviderTest {
   private static final String PROPERTY_ID1 = PropertyHelper.getPropertyId("metrics/cpu", "cpu_user");
   private static final String PROPERTY_ID2 = PropertyHelper.getPropertyId("metrics/memory", "mem_free");
@@ -63,6 +80,7 @@ public class AMSPropertyProviderTest {
 
   @Test
   public void testPopulateResourcesForSingleHostMetric() throws Exception {
+    setUpCommonMocks();
     TestStreamProvider streamProvider = new TestStreamProvider(SINGLE_HOST_METRICS_FILE_PATH);
     TestMetricHostProvider metricHostProvider = new TestMetricHostProvider();
     ComponentSSLConfiguration sslConfiguration = mock(ComponentSSLConfiguration.class);
@@ -101,6 +119,7 @@ public class AMSPropertyProviderTest {
 
   @Test
   public void testPopulateResourcesForSingleHostMetricPointInTime() throws Exception {
+    setUpCommonMocks();
 
     // given
     TestStreamProvider streamProvider = new TestStreamProvider(SINGLE_HOST_METRICS_FILE_PATH);
@@ -143,6 +162,7 @@ public class AMSPropertyProviderTest {
 
   @Test
   public void testPopulateResourcesForMultipleHostMetricscPointInTime() throws Exception {
+    setUpCommonMocks();
     TestStreamProvider streamProvider = new TestStreamProvider(MULTIPLE_HOST_METRICS_FILE_PATH);
     TestMetricHostProvider metricHostProvider = new TestMetricHostProvider();
     ComponentSSLConfiguration sslConfiguration = mock(ComponentSSLConfiguration.class);
@@ -187,6 +207,7 @@ public class AMSPropertyProviderTest {
 
   @Test
   public void testPopulateResourcesForMultipleHostMetrics() throws Exception {
+    setUpCommonMocks();
     TestStreamProvider streamProvider = new TestStreamProvider(MULTIPLE_HOST_METRICS_FILE_PATH);
     TestMetricHostProvider metricHostProvider = new TestMetricHostProvider();
     ComponentSSLConfiguration sslConfiguration = mock(ComponentSSLConfiguration.class);
@@ -237,6 +258,7 @@ public class AMSPropertyProviderTest {
 
   @Test
   public void testPopulateResourcesForRegexpMetrics() throws Exception {
+    setUpCommonMocks();
     TestStreamProvider streamProvider = new TestStreamProvider(MULTIPLE_COMPONENT_REGEXP_METRICS_FILE_PATH);
     TestMetricHostProvider metricHostProvider = new TestMetricHostProvider();
     ComponentSSLConfiguration sslConfiguration = mock(ComponentSSLConfiguration.class);
@@ -285,6 +307,7 @@ public class AMSPropertyProviderTest {
 
   @Test
   public void testPopulateResourcesForSingleComponentMetric() throws Exception {
+    setUpCommonMocks();
     TestStreamProvider streamProvider = new TestStreamProvider(SINGLE_COMPONENT_METRICS_FILE_PATH);
     TestMetricHostProvider metricHostProvider = new TestMetricHostProvider();
     ComponentSSLConfiguration sslConfiguration = mock(ComponentSSLConfiguration.class);
@@ -327,6 +350,29 @@ public class AMSPropertyProviderTest {
 
   @Test
   public void testPopulateMetricsForEmbeddedHBase() throws Exception {
+    AmbariManagementController ams = createNiceMock(AmbariManagementController.class);
+    PowerMock.mockStatic(AmbariServer.class);
+    expect(AmbariServer.getController()).andReturn(ams);
+    AmbariMetaInfo ambariMetaInfo = createNiceMock(AmbariMetaInfo.class);
+    Clusters clusters = createNiceMock(Clusters.class);
+    Cluster cluster = createNiceMock(Cluster.class);
+    ComponentInfo componentInfo = createNiceMock(ComponentInfo.class);
+    StackId stackId= new StackId("HDP","2.2");
+    expect(ams.getClusters()).andReturn(clusters).anyTimes();
+    try {
+      expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster).anyTimes();
+    } catch (AmbariException e) {
+      e.printStackTrace();
+    }
+    expect(cluster.getCurrentStackVersion()).andReturn(stackId).anyTimes();
+    expect(ams.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
+    expect(ambariMetaInfo.getComponentToService("HDP", "2.2", "METRICS_COLLECTOR")).andReturn("AMS").anyTimes();
+    expect(ambariMetaInfo.getComponent("HDP", "2.2", "AMS", "METRICS_COLLECTOR"))
+            .andReturn(componentInfo).anyTimes();
+    expect(componentInfo.getTimelineAppid()).andReturn("AMS-HBASE");
+    replay(ams, clusters, cluster, ambariMetaInfo, componentInfo);
+    PowerMock.replayAll();
+
     TestStreamProvider streamProvider = new TestStreamProvider(EMBEDDED_METRICS_FILE_PATH);
     TestMetricHostProvider metricHostProvider = new TestMetricHostProvider();
     ComponentSSLConfiguration sslConfiguration = mock(ComponentSSLConfiguration.class);
@@ -369,6 +415,29 @@ public class AMSPropertyProviderTest {
 
   @Test
   public void testAggregateFunctionForComponentMetrics() throws Exception {
+    AmbariManagementController ams = createNiceMock(AmbariManagementController.class);
+    PowerMock.mockStatic(AmbariServer.class);
+    expect(AmbariServer.getController()).andReturn(ams);
+    AmbariMetaInfo ambariMetaInfo = createNiceMock(AmbariMetaInfo.class);
+    Clusters clusters = createNiceMock(Clusters.class);
+    Cluster cluster = createNiceMock(Cluster.class);
+    ComponentInfo componentInfo = createNiceMock(ComponentInfo.class);
+    StackId stackId= new StackId("HDP","2.2");
+    expect(ams.getClusters()).andReturn(clusters).anyTimes();
+    try {
+      expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster).anyTimes();
+    } catch (AmbariException e) {
+      e.printStackTrace();
+    }
+    expect(cluster.getCurrentStackVersion()).andReturn(stackId).anyTimes();
+    expect(ams.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
+    expect(ambariMetaInfo.getComponentToService("HDP", "2.2", "HBASE_REGIONSERVER")).andReturn("HBASE").anyTimes();
+    expect(ambariMetaInfo.getComponent("HDP", "2.2", "HBASE", "HBASE_REGIONSERVER"))
+            .andReturn(componentInfo).anyTimes();
+    expect(componentInfo.getTimelineAppid()).andReturn("HBASE");
+    replay(ams, clusters, cluster, ambariMetaInfo, componentInfo);
+    PowerMock.replayAll();
+
     TestStreamProvider streamProvider = new TestStreamProvider(AGGREGATE_METRICS_FILE_PATH);
     TestMetricHostProvider metricHostProvider = new TestMetricHostProvider();
     ComponentSSLConfiguration sslConfiguration = mock(ComponentSSLConfiguration.class);
@@ -437,6 +506,7 @@ public class AMSPropertyProviderTest {
 
   @Test
   public void testPopulateResourcesForHostComponentHostMetrics() throws Exception {
+    setUpCommonMocks();
     TestStreamProviderForHostComponentHostMetricsTest streamProvider =
       new TestStreamProviderForHostComponentHostMetricsTest(null);
     TestMetricHostProvider metricHostProvider = new TestMetricHostProvider();
@@ -533,4 +603,30 @@ public class AMSPropertyProviderTest {
       return true;
     }
   }
+
+  private void setUpCommonMocks() throws AmbariException {
+    AmbariManagementController ams = createNiceMock(AmbariManagementController.class);
+    PowerMock.mockStatic(AmbariServer.class);
+    expect(AmbariServer.getController()).andReturn(ams);
+    AmbariMetaInfo ambariMetaInfo = createNiceMock(AmbariMetaInfo.class);
+    Clusters clusters = createNiceMock(Clusters.class);
+    Cluster cluster = createNiceMock(Cluster.class);
+    ComponentInfo componentInfo = createNiceMock(ComponentInfo.class);
+    StackId stackId= new StackId("HDP","2.2");
+    expect(ams.getClusters()).andReturn(clusters).anyTimes();
+    try {
+      expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster).anyTimes();
+    } catch (AmbariException e) {
+      e.printStackTrace();
+    }
+    expect(cluster.getCurrentStackVersion()).andReturn(stackId).anyTimes();
+    expect(ams.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
+    expect(ambariMetaInfo.getComponentToService(anyObject(String.class),
+            anyObject(String.class), anyObject(String.class))).andReturn("HDFS").anyTimes();
+    expect(ambariMetaInfo.getComponent(anyObject(String.class),anyObject(String.class),
+            anyObject(String.class), anyObject(String.class)))
+            .andReturn(componentInfo).anyTimes();
+    replay(ams, clusters, cluster, ambariMetaInfo);
+    PowerMock.replayAll();
+  }
 }