AMBARI-7266.  Properly replace host names in Falcon properties during BP 
deployment.


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

Branch: refs/heads/branch-alerts-dev
Commit: 1719a5ce20ebc4f0b109e9c9e2ff1ba23c23e58a
Parents: db9b776
Author: Robert Nettleton <rnettle...@hortonworks.com>
Authored: Mon Sep 15 10:05:27 2014 -0400
Committer: John Speidel <jspei...@hortonworks.com>
Committed: Mon Sep 15 10:05:27 2014 -0400

----------------------------------------------------------------------
 .../BlueprintConfigurationProcessor.java        | 30 +++++++++++++++++++-
 .../BlueprintConfigurationProcessorTest.java    | 21 ++++++++++++++
 2 files changed, 50 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/1719a5ce/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
index c246f83..c31a869 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
@@ -274,6 +274,17 @@ public class BlueprintConfigurationProcessor {
     return hosts;
   }
 
+
+  /**
+   * Provides package-level access to the map of single host topology updaters.
+   * This is useful for facilitating unit-testing of this class.
+   *
+   * @return the map of single host topology updaters
+   */
+  static Map<String, Map<String, PropertyUpdater>> 
getSingleHostTopologyUpdaters() {
+    return singleHostTopologyUpdaters;
+  }
+
   /**
    * Provides functionality to update a property value.
    */
@@ -296,7 +307,7 @@ public class BlueprintConfigurationProcessor {
    * Topology based updater which replaces the original host name of a 
property with the host name
    * which runs the associated (master) component in the new cluster.
    */
-  private static class SingleHostTopologyUpdater implements PropertyUpdater {
+  static class SingleHostTopologyUpdater implements PropertyUpdater {
     /**
      * Component name
      */
@@ -341,6 +352,16 @@ public class BlueprintConfigurationProcessor {
         }
       }
     }
+
+    /**
+     * Provides access to the name of the component associated
+     *   with this updater instance.
+     *
+     * @return component name for this updater
+     */
+    public String getComponentName() {
+      return this.component;
+    }
   }
 
   /**
@@ -603,6 +624,8 @@ public class BlueprintConfigurationProcessor {
     Map<String, PropertyUpdater> hiveSiteMap = new HashMap<String, 
PropertyUpdater>();
     Map<String, PropertyUpdater> oozieSiteMap = new HashMap<String, 
PropertyUpdater>();
     Map<String, PropertyUpdater> stormSiteMap = new HashMap<String, 
PropertyUpdater>();
+    Map<String, PropertyUpdater> falconStartupPropertiesMap = new 
HashMap<String, PropertyUpdater>();
+
 
     Map<String, PropertyUpdater> mapredEnvMap = new HashMap<String, 
PropertyUpdater>();
     Map<String, PropertyUpdater> hadoopEnvMap = new HashMap<String, 
PropertyUpdater>();
@@ -623,6 +646,7 @@ public class BlueprintConfigurationProcessor {
     singleHostTopologyUpdaters.put("hive-site", hiveSiteMap);
     singleHostTopologyUpdaters.put("oozie-site", oozieSiteMap);
     singleHostTopologyUpdaters.put("storm-site", stormSiteMap);
+    singleHostTopologyUpdaters.put("falcon-startup.properties", 
falconStartupPropertiesMap);
 
     mPropertyUpdaters.put("hadoop-env", hadoopEnvMap);
     mPropertyUpdaters.put("hbase-env", hbaseEnvMap);
@@ -686,6 +710,10 @@ public class BlueprintConfigurationProcessor {
     multiStormSiteMap.put("storm.zookeeper.servers",
         new YamlMultiValuePropertyDecorator(new 
MultipleHostTopologyUpdater("ZOOKEEPER_SERVER")));
 
+    // FALCON
+    falconStartupPropertiesMap.put("*.broker.url", new 
SingleHostTopologyUpdater("FALCON_SERVER"));
+
+
     // Required due to AMBARI-4933.  These no longer seem to be required as 
the default values in the stack
     // are now correct but are left here in case an existing blueprint still 
contains an old value.
     hadoopEnvMap.put("namenode_heapsize", new MPropertyUpdater());

http://git-wip-us.apache.org/repos/asf/ambari/blob/1719a5ce/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
index a4b8ba9..3213b20 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
@@ -896,6 +896,27 @@ public class BlueprintConfigurationProcessorTest {
     assertEquals("jdbc:mysql://myHost.com/hive?createDatabaseIfNotExist=true", 
updatedVal);
   }
 
+  @Test
+  public void testFalconConfigPropertyUpdaterAdded() throws Exception {
+    Map<String, Map<String, BlueprintConfigurationProcessor.PropertyUpdater>> 
singleHostUpdaters =
+      BlueprintConfigurationProcessor.getSingleHostTopologyUpdaters();
+
+    assertTrue("Falcon startup.properties map was not added to the list of 
updater maps",
+               singleHostUpdaters.containsKey("falcon-startup.properties"));
+
+    Map<String, BlueprintConfigurationProcessor.PropertyUpdater> 
fieldsToUpdaters =
+      singleHostUpdaters.get("falcon-startup.properties");
+
+    assertTrue("Expected Falcon config property was not present in updater 
map",
+               fieldsToUpdaters.containsKey("*.broker.url"));
+
+    assertTrue("PropertyUpdater was not of the expected type for Falcon config 
property",
+               fieldsToUpdaters.get("*.broker.url") instanceof 
BlueprintConfigurationProcessor.SingleHostTopologyUpdater);
+
+    assertEquals("PropertyUpdater was not associated with the expected 
component name",
+                 "FALCON_SERVER", 
((BlueprintConfigurationProcessor.SingleHostTopologyUpdater)fieldsToUpdaters.get("*.broker.url")).getComponentName());
+  }
+
   private class TestHostGroup implements HostGroup {
 
     private String name;

Reply via email to