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);

Reply via email to