You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ds...@apache.org on 2015/12/02 19:59:59 UTC

ambari git commit: AMBARI-13917 Allow client component information for a specific host to be queried from hooks scripts (dsen)

Repository: ambari
Updated Branches:
  refs/heads/trunk e9ae39cb6 -> f4a38e0cc


AMBARI-13917 Allow client component information for a specific host to be queried from hooks scripts (dsen)


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

Branch: refs/heads/trunk
Commit: f4a38e0cc0827b5805b3d1a6529f4d2945f95759
Parents: e9ae39c
Author: Dmytro Sen <ds...@apache.org>
Authored: Wed Dec 2 20:59:51 2015 +0200
Committer: Dmytro Sen <ds...@apache.org>
Committed: Wed Dec 2 20:59:51 2015 +0200

----------------------------------------------------------------------
 .../server/actionmanager/ActionScheduler.java       | 12 ++++++++++++
 .../actionmanager/ExecutionCommandWrapper.java      |  2 --
 .../ambari/server/agent/ExecutionCommand.java       | 11 +++++++++++
 .../controller/AmbariActionExecutionHelper.java     |  7 ++++++-
 .../AmbariCustomCommandExecutionHelper.java         |  7 ++++++-
 .../controller/AmbariManagementControllerImpl.java  |  7 +++++++
 .../internal/ClientConfigResourceProvider.java      |  5 +----
 .../controller/AmbariManagementControllerTest.java  | 16 ++++++++++++++++
 8 files changed, 59 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/f4a38e0c/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java
index 5415264..c9613a1 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java
@@ -32,6 +32,7 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.ClusterNotFoundException;
 import org.apache.ambari.server.Role;
 import org.apache.ambari.server.RoleCommand;
 import org.apache.ambari.server.ServiceComponentHostNotFoundException;
@@ -941,6 +942,17 @@ class ActionScheduler implements Runnable {
     commandParamsCmd.putAll(commandParams);
     cmd.setCommandParams(commandParamsCmd);
 
+    try {
+      Cluster cluster = clusters.getCluster(s.getClusterName());
+      if (null != cluster) {
+        // Generate localComponents
+        for (ServiceComponentHost sch : cluster.getServiceComponentHosts(hostname)) {
+          cmd.getLocalComponents().add(sch.getServiceComponentName());
+        }
+      }
+    } catch (ClusterNotFoundException cnfe) {
+      //NOP
+    }
 
     //Try to get hostParams from cache and merge them with command-level parameters
     Map<String, String> hostParams = hostParamsStageCache.getIfPresent(stagePk);

http://git-wip-us.apache.org/repos/asf/ambari/blob/f4a38e0c/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ExecutionCommandWrapper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ExecutionCommandWrapper.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ExecutionCommandWrapper.java
index 99d61af..52febc4 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ExecutionCommandWrapper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ExecutionCommandWrapper.java
@@ -19,7 +19,6 @@ package org.apache.ambari.server.actionmanager;
 
 import java.util.HashMap;
 import java.util.Map;
-import java.util.Map.Entry;
 import java.util.Set;
 import java.util.TreeMap;
 
@@ -31,7 +30,6 @@ import org.apache.ambari.server.orm.dao.HostRoleCommandDAO;
 import org.apache.ambari.server.state.Cluster;
 import org.apache.ambari.server.state.Clusters;
 import org.apache.ambari.server.state.ConfigHelper;
-import org.apache.ambari.server.state.DesiredConfig;
 import org.apache.ambari.server.utils.StageUtils;
 
 import com.google.inject.Inject;

http://git-wip-us.apache.org/repos/asf/ambari/blob/f4a38e0c/ambari-server/src/main/java/org/apache/ambari/server/agent/ExecutionCommand.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/agent/ExecutionCommand.java b/ambari-server/src/main/java/org/apache/ambari/server/agent/ExecutionCommand.java
index ac16626..a540a36 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/agent/ExecutionCommand.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/agent/ExecutionCommand.java
@@ -108,6 +108,9 @@ public class ExecutionCommand extends AgentCommand {
   @SerializedName("kerberosCommandParams")
   private List<Map<String, String>> kerberosCommandParams = new ArrayList<Map<String, String>>();
 
+  @SerializedName("localComponents")
+  private Set<String> localComponents = new HashSet<String>();
+
   public String getCommandId() {
     return commandId;
   }
@@ -250,6 +253,14 @@ public class ExecutionCommand extends AgentCommand {
     this.forceRefreshConfigTagsBeforeExecution = forceRefreshConfigTagsBeforeExecution;
   }
 
+  public Set<String> getLocalComponents() {
+    return localComponents;
+  }
+
+  public void setLocalComponents(Set<String> localComponents) {
+    this.localComponents = localComponents;
+  }
+
   public Map<String, Map<String, Map<String, String>>> getConfigurationAttributes() {
     return configurationAttributes;
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/f4a38e0c/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariActionExecutionHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariActionExecutionHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariActionExecutionHelper.java
index 215aca8..d299602 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariActionExecutionHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariActionExecutionHelper.java
@@ -53,6 +53,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -429,10 +430,14 @@ public class AmbariActionExecutionHelper {
         }
       }
 
-      // Generate cluster host info
       if (null != cluster) {
+        // Generate cluster host info
         execCmd.setClusterHostInfo(
           StageUtils.getClusterHostInfo(cluster));
+        // Generate localComponents
+        for (ServiceComponentHost sch : cluster.getServiceComponentHosts(hostName)) {
+          execCmd.getLocalComponents().add(sch.getServiceComponentName());
+        }
       }
     }
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/f4a38e0c/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
index 9ba5a22..1e2faf5 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
@@ -550,6 +550,11 @@ public class AmbariCustomCommandExecutionHelper {
     execCmd.setClusterHostInfo(
         StageUtils.getClusterHostInfo(cluster));
 
+    // Generate localComponents
+    for (ServiceComponentHost sch : cluster.getServiceComponentHosts(hostname)) {
+      execCmd.getLocalComponents().add(sch.getServiceComponentName());
+    }
+
     Map<String, String> commandParams = new TreeMap<String, String>();
 
     //Propagate HCFS service type info
@@ -888,7 +893,7 @@ public class AmbariCustomCommandExecutionHelper {
    *
    * @param actionExecutionContext  received request to execute a command
    * @param stage                   the initial stage for task creation
-   * @param retryAllowed            indicates whether the the command allows retry
+   * @param requestParams           the request params
    *
    * @throws AmbariException if the commands can not be added
    */

http://git-wip-us.apache.org/repos/asf/ambari/blob/f4a38e0c/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
index c0dc342..4eca055 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
@@ -2554,6 +2554,13 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
     ec.setClusterHostInfo(
         StageUtils.getClusterHostInfo(cluster));
 
+    if (null != cluster) {
+      // Generate localComponents
+      for (ServiceComponentHost sch : cluster.getServiceComponentHosts(scHost.getHostName())) {
+        ec.getLocalComponents().add(sch.getServiceComponentName());
+      }
+    }
+
     // Hack - Remove passwords from configs
     if ((ec.getRole().equals(Role.HIVE_CLIENT.toString()) ||
             ec.getRole().equals(Role.WEBHCAT_SERVER.toString()) ||

http://git-wip-us.apache.org/repos/asf/ambari/blob/f4a38e0c/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java
index 43aba04..5ba53dc 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java
@@ -401,15 +401,12 @@ public class ClientConfigResourceProvider extends AbstractControllerResourceProv
       } catch (TimeoutException e) {
         LOG.error("Generate client configs script was killed due to timeout ", e);
         throw new SystemException("Generate client configs script was killed due to timeout ", e);
-      } catch (InterruptedException e) {
+      } catch (InterruptedException | IOException e) {
         LOG.error("Failed to run generate client configs script for a component " + componentName, e);
         throw new SystemException("Failed to run generate client configs script for a component " + componentName, e);
       } catch (ExecutionException e) {
         LOG.error(e.getMessage(),e);
         throw new SystemException(e.getMessage() + " " + e.getCause());
-      } catch (IOException e) {
-        LOG.error("Failed to run generate client configs script for a component " + componentName, e);
-        throw new SystemException("Failed to run generate client configs script for a component " + componentName, e);
       }
 
     } catch (AmbariException e) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/f4a38e0c/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
index 05d5aff..bed55c5 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
@@ -4220,6 +4220,13 @@ public class AmbariManagementControllerTest {
     Assert.assertEquals("a1", task.getRole().name());
     Assert.assertEquals("h1", task.getHostName());
     ExecutionCommand cmd = task.getExecutionCommandWrapper().getExecutionCommand();
+    // h1 has only DATANODE, NAMENODE, CLIENT sch's
+    Assert.assertEquals("h1", cmd.getHostname());
+    Assert.assertFalse(cmd.getLocalComponents().isEmpty());
+    Assert.assertTrue(cmd.getLocalComponents().contains(Role.DATANODE.name()));
+    Assert.assertTrue(cmd.getLocalComponents().contains(Role.NAMENODE.name()));
+    Assert.assertTrue(cmd.getLocalComponents().contains(Role.HDFS_CLIENT.name()));
+    Assert.assertFalse(cmd.getLocalComponents().contains(Role.RESOURCEMANAGER.name()));
     Type type = new TypeToken<Map<String, String>>(){}.getType();
     Map<String, String> hostParametersStage = StageUtils.getGson().fromJson(stage.getHostParamsStage(), type);
     Map<String, String> commandParametersStage = StageUtils.getGson().fromJson(stage.getCommandParamsStage(), type);
@@ -4272,6 +4279,13 @@ public class AmbariManagementControllerTest {
     Assert.assertEquals("HDFS", cmd.getServiceName());
     Assert.assertEquals("DATANODE", cmd.getComponentName());
     Assert.assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY), response.getRequestContext());
+    // h2 has only DATANODE sch
+    Assert.assertEquals("h2", cmd.getHostname());
+    Assert.assertFalse(cmd.getLocalComponents().isEmpty());
+    Assert.assertTrue(cmd.getLocalComponents().contains(Role.DATANODE.name()));
+    Assert.assertFalse(cmd.getLocalComponents().contains(Role.NAMENODE.name()));
+    Assert.assertFalse(cmd.getLocalComponents().contains(Role.HDFS_CLIENT.name()));
+    Assert.assertFalse(cmd.getLocalComponents().contains(Role.RESOURCEMANAGER.name()));
 
     hosts = new ArrayList<String>() {{add("h3");}};
     resourceFilters.clear();
@@ -10394,6 +10408,7 @@ public class AmbariManagementControllerTest {
     Assert.assertTrue(commandParamsStage.containsKey("some_custom_param"));
     Assert.assertEquals(null, cmd.getServiceName());
     Assert.assertEquals(null, cmd.getComponentName());
+    Assert.assertTrue(cmd.getLocalComponents().isEmpty());
 
     Assert.assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY), response.getRequestContext());
 
@@ -10436,6 +10451,7 @@ public class AmbariManagementControllerTest {
     Assert.assertTrue(commandParamsStage.containsKey("some_custom_param"));
     Assert.assertEquals(null, cmd.getServiceName());
     Assert.assertEquals(null, cmd.getComponentName());
+    Assert.assertTrue(cmd.getLocalComponents().isEmpty());
 
     Assert.assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY), response.getRequestContext());
   }