Repository: ambari Updated Branches: refs/heads/trunk 59ff41558 -> 37a3f4458
AMBARI-13614 Ambari upgrade to 2.1.3 should set appropriate value for "Enable Ranger plugin" properties in Ranger service (dsen) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/37a3f445 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/37a3f445 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/37a3f445 Branch: refs/heads/trunk Commit: 37a3f4458843dc05efa78868865e14a91f97dc3b Parents: 59ff415 Author: Dmytro Sen <[email protected]> Authored: Thu Oct 29 19:07:38 2015 +0200 Committer: Dmytro Sen <[email protected]> Committed: Thu Oct 29 19:07:38 2015 +0200 ---------------------------------------------------------------------- .../server/upgrade/UpgradeCatalog213.java | 50 +++++++++++++++ .../server/upgrade/UpgradeCatalog213Test.java | 65 ++++++++++++++++++++ 2 files changed, 115 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/37a3f445/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog213.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog213.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog213.java index 4dc300e..9503898 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog213.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog213.java @@ -87,6 +87,7 @@ public class UpgradeCatalog213 extends AbstractUpgradeCatalog { private static final String AMS_ENV = "ams-env"; private static final String AMS_HBASE_ENV = "ams-hbase-env"; private static final String HBASE_ENV_CONFIG = "hbase-env"; + private static final String RANGER_ENV_CONFIG = "ranger-env"; private static final String ZOOKEEPER_LOG4J_CONFIG = "zookeeper-log4j"; private static final String NIMBS_MONITOR_FREQ_SECS_PROPERTY = "nimbus.monitor.freq.secs"; private static final String HADOOP_ENV_CONFIG = "hadoop-env"; @@ -112,6 +113,13 @@ public class UpgradeCatalog213 extends AbstractUpgradeCatalog { private static final String KERBEROS_DESCRIPTOR_TABLE = "kerberos_descriptor"; private static final String KERBEROS_DESCRIPTOR_NAME_COLUMN = "kerberos_descriptor_name"; private static final String KERBEROS_DESCRIPTOR_COLUMN = "kerberos_descriptor"; + private static final String RANGER_HDFS_PLUGIN_ENABLED_PROPERTY = "ranger-hdfs-plugin-enabled"; + private static final String RANGER_HIVE_PLUGIN_ENABLED_PROPERTY = "ranger-hive-plugin-enabled"; + private static final String RANGER_HBASE_PLUGIN_ENABLED_PROPERTY = "ranger-hbase-plugin-enabled"; + private static final String RANGER_STORM_PLUGIN_ENABLED_PROPERTY = "ranger-storm-plugin-enabled"; + private static final String RANGER_KNOX_PLUGIN_ENABLED_PROPERTY = "ranger-knox-plugin-enabled"; + private static final String RANGER_YARN_PLUGIN_ENABLED_PROPERTY = "ranger-yarn-plugin-enabled"; + private static final String RANGER_KAFKA_PLUGIN_ENABLED_PROPERTY = "ranger-kafka-plugin-enabled"; private static final String BLUEPRINT_TABLE = "blueprint"; private static final String SECURITY_TYPE_COLUMN = "security_type"; @@ -261,6 +269,7 @@ public class UpgradeCatalog213 extends AbstractUpgradeCatalog { updateHbaseEnvConfig(); updateHadoopEnv(); updateKafkaConfigs(); + updateRangerEnvConfig(); updateZookeeperLog4j(); } @@ -836,6 +845,47 @@ public class UpgradeCatalog213 extends AbstractUpgradeCatalog { } } + protected void updateRangerEnvConfig() throws AmbariException { + AmbariManagementController ambariManagementController = injector.getInstance(AmbariManagementController.class); + + for (final Cluster cluster : getCheckedClusterMap(ambariManagementController.getClusters()).values()) { + Map<String, String> newRangerEnvProps = new HashMap<>(); + Config rangerHdfsPluginProperties = cluster.getDesiredConfigByType("ranger-hdfs-plugin-properties"); + if (rangerHdfsPluginProperties != null && rangerHdfsPluginProperties.getProperties().containsKey(RANGER_HDFS_PLUGIN_ENABLED_PROPERTY)) { + newRangerEnvProps.put(RANGER_HDFS_PLUGIN_ENABLED_PROPERTY, rangerHdfsPluginProperties.getProperties().get(RANGER_HDFS_PLUGIN_ENABLED_PROPERTY)); + } + Config hiveEnvProperties = cluster.getDesiredConfigByType("hive-env"); + if (hiveEnvProperties != null && hiveEnvProperties.getProperties().containsKey("hive_security_authorization") + && hiveEnvProperties.getProperties().get("hive_security_authorization").toLowerCase().equals("ranger")) { + newRangerEnvProps.put(RANGER_HIVE_PLUGIN_ENABLED_PROPERTY, "Yes"); + } + Config rangerHbasePluginProperties = cluster.getDesiredConfigByType("ranger-hbase-plugin-properties"); + if (rangerHbasePluginProperties != null && rangerHbasePluginProperties.getProperties().containsKey(RANGER_HBASE_PLUGIN_ENABLED_PROPERTY)) { + newRangerEnvProps.put(RANGER_HBASE_PLUGIN_ENABLED_PROPERTY, rangerHbasePluginProperties.getProperties().get(RANGER_HBASE_PLUGIN_ENABLED_PROPERTY)); + } + + Config rangerStormPluginProperties = cluster.getDesiredConfigByType("ranger-storm-plugin-properties"); + if (rangerStormPluginProperties != null && rangerStormPluginProperties.getProperties().containsKey(RANGER_STORM_PLUGIN_ENABLED_PROPERTY)) { + newRangerEnvProps.put(RANGER_STORM_PLUGIN_ENABLED_PROPERTY, rangerStormPluginProperties.getProperties().get(RANGER_STORM_PLUGIN_ENABLED_PROPERTY)); + } + Config rangerKnoxPluginProperties = cluster.getDesiredConfigByType("ranger-knox-plugin-properties"); + if (rangerKnoxPluginProperties != null && rangerKnoxPluginProperties.getProperties().containsKey(RANGER_KNOX_PLUGIN_ENABLED_PROPERTY)) { + newRangerEnvProps.put(RANGER_KNOX_PLUGIN_ENABLED_PROPERTY, rangerKnoxPluginProperties.getProperties().get(RANGER_KNOX_PLUGIN_ENABLED_PROPERTY)); + } + Config rangerYarnPluginProperties = cluster.getDesiredConfigByType("ranger-yarn-plugin-properties"); + if (rangerYarnPluginProperties != null && rangerYarnPluginProperties.getProperties().containsKey(RANGER_YARN_PLUGIN_ENABLED_PROPERTY)) { + newRangerEnvProps.put(RANGER_YARN_PLUGIN_ENABLED_PROPERTY, rangerYarnPluginProperties.getProperties().get(RANGER_YARN_PLUGIN_ENABLED_PROPERTY)); + } + Config rangerKafkaPluginProperties = cluster.getDesiredConfigByType("ranger-kafka-plugin-properties"); + if (rangerKafkaPluginProperties != null && rangerKafkaPluginProperties.getProperties().containsKey(RANGER_KAFKA_PLUGIN_ENABLED_PROPERTY)) { + newRangerEnvProps.put(RANGER_KAFKA_PLUGIN_ENABLED_PROPERTY, rangerKafkaPluginProperties.getProperties().get(RANGER_KAFKA_PLUGIN_ENABLED_PROPERTY)); + } + if (!newRangerEnvProps.isEmpty()) { + updateConfigurationPropertiesForCluster(cluster, RANGER_ENV_CONFIG, newRangerEnvProps, true, true); + } + } + } + protected String updateAmsEnvContent(String oldContent) { if (oldContent == null) { return null; http://git-wip-us.apache.org/repos/asf/ambari/blob/37a3f445/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog213Test.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog213Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog213Test.java index a9c4fb2..a68d4fd 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog213Test.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog213Test.java @@ -201,6 +201,7 @@ public class UpgradeCatalog213Test { Method updateZookeeperLog4j = UpgradeCatalog213.class.getDeclaredMethod("updateZookeeperLog4j"); Method updateHadoopEnvConfig = UpgradeCatalog213.class.getDeclaredMethod("updateHadoopEnv"); Method updateAlertDefinitions = UpgradeCatalog213.class.getDeclaredMethod("updateAlertDefinitions"); + Method updateRangerEnvConfig = UpgradeCatalog213.class.getDeclaredMethod("updateRangerEnvConfig"); UpgradeCatalog213 upgradeCatalog213 = createMockBuilder(UpgradeCatalog213.class) .addMockedMethod(updateAMSConfigs) @@ -212,6 +213,7 @@ public class UpgradeCatalog213Test { .addMockedMethod(updateKafkaConfigs) .addMockedMethod(updateZookeeperLog4j) .addMockedMethod(updateHadoopEnvConfig) + .addMockedMethod(updateRangerEnvConfig) .createMock(); upgradeCatalog213.updateHbaseEnvConfig(); @@ -232,6 +234,8 @@ public class UpgradeCatalog213Test { expectLastCall().once(); upgradeCatalog213.updateZookeeperLog4j(); expectLastCall().once(); + upgradeCatalog213.updateRangerEnvConfig(); + expectLastCall().once(); replay(upgradeCatalog213); @@ -724,6 +728,67 @@ public class UpgradeCatalog213Test { } @Test + public void testUpdateRangerEnvConfig() throws Exception { + EasyMockSupport easyMockSupport = new EasyMockSupport(); + final AmbariManagementController mockAmbariManagementController = easyMockSupport.createNiceMock(AmbariManagementController.class); + final Clusters mockClusters = easyMockSupport.createStrictMock(Clusters.class); + final Cluster mockClusterExpected = easyMockSupport.createNiceMock(Cluster.class); + final Map<String, String> propertiesHiveEnv = new HashMap<String, String>() {{ + put("hive_security_authorization", "Ranger"); + }}; + final Map<String, String> propertiesRangerHdfsPlugin = new HashMap<String, String>() {{ + put("ranger-hdfs-plugin-enabled", "Yes"); + }}; + final Map<String, String> propertiesRangerHbasePlugin = new HashMap<String, String>() {{ + put("ranger-hbase-plugin-enabled", "Yes"); + }}; + final Map<String, String> propertiesRangerKafkaPlugin = new HashMap<String, String>() {{ + put("ranger-kafka-plugin-enabled", "Yes"); + }}; + final Map<String, String> propertiesRangerYarnPlugin = new HashMap<String, String>() {{ + put("ranger-yarn-plugin-enabled", "No"); + }}; + + final Config mockHiveEnvConf = easyMockSupport.createNiceMock(Config.class); + final Config mockRangerHdfsPluginConf = easyMockSupport.createNiceMock(Config.class); + final Config mockRangerHbasePluginConf = easyMockSupport.createNiceMock(Config.class); + final Config mockRangerKafkaPluginConf = easyMockSupport.createNiceMock(Config.class); + final Config mockRangerYarnPluginConf = easyMockSupport.createNiceMock(Config.class); + final Injector mockInjector = Guice.createInjector(new AbstractModule() { + @Override + protected void configure() { + bind(AmbariManagementController.class).toInstance(mockAmbariManagementController); + bind(Clusters.class).toInstance(mockClusters); + bind(EntityManager.class).toInstance(entityManager); + + bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class)); + bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class)); + } + }); + + expect(mockAmbariManagementController.getClusters()).andReturn(mockClusters).once(); + expect(mockClusters.getClusters()).andReturn(new HashMap<String, Cluster>() {{ + put("normal", mockClusterExpected); + }}).atLeastOnce(); + expect(mockClusterExpected.getDesiredConfigByType("hive-env")).andReturn(mockHiveEnvConf).atLeastOnce(); + expect(mockClusterExpected.getDesiredConfigByType("ranger-hdfs-plugin-properties")).andReturn(mockRangerHdfsPluginConf).atLeastOnce(); + expect(mockClusterExpected.getDesiredConfigByType("ranger-hbase-plugin-properties")).andReturn(mockRangerHbasePluginConf).atLeastOnce(); + expect(mockClusterExpected.getDesiredConfigByType("ranger-kafka-plugin-properties")).andReturn(mockRangerKafkaPluginConf).atLeastOnce(); + expect(mockClusterExpected.getDesiredConfigByType("ranger-yarn-plugin-properties")).andReturn(mockRangerYarnPluginConf).atLeastOnce(); + + expect(mockHiveEnvConf.getProperties()).andReturn(propertiesHiveEnv).times(2); + expect(mockRangerHdfsPluginConf.getProperties()).andReturn(propertiesRangerHdfsPlugin).times(2); + expect(mockRangerHbasePluginConf.getProperties()).andReturn(propertiesRangerHbasePlugin).times(2); + expect(mockRangerKafkaPluginConf.getProperties()).andReturn(propertiesRangerKafkaPlugin).times(2); + expect(mockRangerYarnPluginConf.getProperties()).andReturn(propertiesRangerYarnPlugin).times(2); + + easyMockSupport.replayAll(); + mockInjector.getInstance(UpgradeCatalog213.class).updateRangerEnvConfig(); + easyMockSupport.verifyAll(); + + } + + @Test public void testGetSourceVersion() { final DBAccessor dbAccessor = createNiceMock(DBAccessor.class); UpgradeCatalog upgradeCatalog = getUpgradeCatalog(dbAccessor);
