You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by av...@apache.org on 2016/04/06 23:35:05 UTC

ambari git commit: AMBARI-15692 : AMS-HBase should explicitly set its HBASE_HOME path (avijayan)

Repository: ambari
Updated Branches:
  refs/heads/trunk fd3692ecf -> 5060b4f8c


AMBARI-15692 : AMS-HBase should explicitly set its HBASE_HOME path (avijayan)


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

Branch: refs/heads/trunk
Commit: 5060b4f8c13d3746d72138324ad7cbf609462338
Parents: fd3692e
Author: Aravindan Vijayan <av...@hortonworks.com>
Authored: Wed Apr 6 14:34:00 2016 -0700
Committer: Aravindan Vijayan <av...@hortonworks.com>
Committed: Wed Apr 6 14:34:07 2016 -0700

----------------------------------------------------------------------
 .../server/upgrade/UpgradeCatalog240.java       | 15 ++++-
 .../0.1.0/configuration/ams-hbase-env.xml       |  4 ++
 .../server/upgrade/UpgradeCatalog240Test.java   | 69 ++++++++++++++++++++
 3 files changed, 87 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/5060b4f8/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog240.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog240.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog240.java
index 6a1c60c..65dad79 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog240.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog240.java
@@ -1034,7 +1034,6 @@ public class UpgradeCatalog240 extends AbstractUpgradeCatalog {
         for (final Cluster cluster : clusterMap.values()) {
 
           Config amsEnv = cluster.getDesiredConfigByType("ams-env");
-
           if (amsEnv != null) {
             String content = amsEnv.getProperties().get("content");
             if (content != null && !content.contains("AMS_INSTANCE_NAME")) {
@@ -1044,6 +1043,20 @@ public class UpgradeCatalog240 extends AbstractUpgradeCatalog {
               updateConfigurationProperties("ams-env", Collections.singletonMap("content", newContent), true, true);
             }
           }
+
+          Config amsHBaseEnv = cluster.getDesiredConfigByType("ams-hbase-env");
+          if (amsHBaseEnv != null) {
+            String content = amsHBaseEnv.getProperties().get("content");
+            Map<String, String> newProperties = new HashMap<>();
+
+            if (content != null && !content.contains("HBASE_HOME=")) {
+              String newContent = content + "\n # Explicitly Setting HBASE_HOME for AMS HBase so that there is no conflict\n" +
+                "export HBASE_HOME={{ams_hbase_home_dir}}\n";
+              newProperties.put("content", newContent);
+            }
+
+            updateConfigurationPropertiesForCluster(cluster, "ams-hbase-env", newProperties, true, true);
+          }
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/5060b4f8/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-env.xml b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-env.xml
index 378138b..317fac1 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-env.xml
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-env.xml
@@ -240,6 +240,10 @@ export HBASE_OPTS="$HBASE_OPTS -Djava.library.path=${_HADOOP_NATIVE_LIB}"
 
 # Unset HADOOP_HOME to avoid importing HADOOP installed cluster related configs like: /usr/hdp/2.2.0.0-2041/hadoop/conf/
 export HADOOP_HOME={{ams_hbase_home_dir}}
+
+# Explicitly Setting HBASE_HOME for AMS HBase so that there is no conflict
+export HBASE_HOME={{ams_hbase_home_dir}}
+
     </value>
     <value-attributes>
       <type>content</type>

http://git-wip-us.apache.org/repos/asf/ambari/blob/5060b4f8/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog240Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog240Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog240Test.java
index a04fb2f..a583d39 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog240Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog240Test.java
@@ -20,6 +20,7 @@ package org.apache.ambari.server.upgrade;
 
 
 import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.anyString;
 import static org.easymock.EasyMock.capture;
 import static org.easymock.EasyMock.createMockBuilder;
 import static org.easymock.EasyMock.createNiceMock;
@@ -31,6 +32,7 @@ import static org.easymock.EasyMock.replay;
 import static org.easymock.EasyMock.reset;
 import static org.easymock.EasyMock.verify;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
@@ -46,18 +48,29 @@ import java.util.Map;
 
 import javax.persistence.EntityManager;
 
+import com.google.common.collect.Maps;
+import com.google.gson.Gson;
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.actionmanager.ActionManager;
 import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.configuration.Configuration;
+import org.apache.ambari.server.controller.AmbariManagementController;
+import org.apache.ambari.server.controller.AmbariManagementControllerImpl;
+import org.apache.ambari.server.controller.KerberosHelper;
+import org.apache.ambari.server.controller.MaintenanceStateHelper;
 import org.apache.ambari.server.orm.DBAccessor;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
 import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
 import org.apache.ambari.server.orm.dao.StackDAO;
 import org.apache.ambari.server.state.AlertFirmness;
+import org.apache.ambari.server.state.Cluster;
+import org.apache.ambari.server.state.Clusters;
+import org.apache.ambari.server.state.Config;
 import org.apache.ambari.server.state.stack.OsFamily;
 import org.easymock.Capture;
 import org.easymock.CaptureType;
 import org.easymock.EasyMock;
+import org.easymock.EasyMockSupport;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.BeforeClass;
@@ -411,4 +424,60 @@ public class UpgradeCatalog240Test {
     String result = upgradeCatalog240.addParam(inputSource, params);
     Assert.assertEquals(result, expectedSource);
   }
+
+  @Test
+  public void testAmsHbaseEnvUpdateConfigs() throws Exception{
+
+    Map<String, String> oldPropertiesAmsHbaseEnv = new HashMap<String, String>() {
+      {
+        put("content", "some_content");
+      }
+    };
+    Map<String, String> newPropertiesAmsHbaseEnv = new HashMap<String, String>() {
+      {
+        put("content", "some_content"+ "\n # Explicitly Setting HBASE_HOME for AMS HBase so that there is no conflict\n" +
+          "export HBASE_HOME={{ams_hbase_home_dir}}\n");
+      }
+    };
+    EasyMockSupport easyMockSupport = new EasyMockSupport();
+
+    Clusters clusters = easyMockSupport.createNiceMock(Clusters.class);
+    final Cluster cluster = easyMockSupport.createNiceMock(Cluster.class);
+    Config mockAmsHbaseEnv = easyMockSupport.createNiceMock(Config.class);
+
+    expect(clusters.getClusters()).andReturn(new HashMap<String, Cluster>() {{
+      put("normal", cluster);
+    }}).once();
+    expect(cluster.getDesiredConfigByType("ams-hbase-env")).andReturn(mockAmsHbaseEnv).atLeastOnce();
+    expect(mockAmsHbaseEnv.getProperties()).andReturn(oldPropertiesAmsHbaseEnv).anyTimes();
+
+    Injector injector = easyMockSupport.createNiceMock(Injector.class);
+    expect(injector.getInstance(Gson.class)).andReturn(null).anyTimes();
+    expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null).anyTimes();
+    expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class)).anyTimes();
+
+    replay(injector, clusters, mockAmsHbaseEnv, cluster);
+
+    AmbariManagementControllerImpl controller = createMockBuilder(AmbariManagementControllerImpl.class)
+      .addMockedMethod("createConfiguration")
+      .addMockedMethod("getClusters", new Class[] { })
+      .addMockedMethod("createConfig")
+      .withConstructor(createNiceMock(ActionManager.class), clusters, injector)
+      .createNiceMock();
+
+    Injector injector2 = easyMockSupport.createNiceMock(Injector.class);
+    Capture<Map> propertiesCapture = EasyMock.newCapture();
+
+    expect(injector2.getInstance(AmbariManagementController.class)).andReturn(controller).anyTimes();
+    expect(controller.getClusters()).andReturn(clusters).anyTimes();
+    expect(controller.createConfig(anyObject(Cluster.class), anyString(), capture(propertiesCapture), anyString(),
+      anyObject(Map.class))).andReturn(createNiceMock(Config.class)).once();
+
+    replay(controller, injector2);
+    new UpgradeCatalog240(injector2).updateAMSConfigs();
+    easyMockSupport.verifyAll();
+
+    Map<String, String> updatedProperties = propertiesCapture.getValue();
+    assertTrue(Maps.difference(newPropertiesAmsHbaseEnv, updatedProperties).areEqual());
+  }
 }