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