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());
+ }
}