Repository: ambari Updated Branches: refs/heads/trunk e8dde01e3 -> 0ef16b34d
AMBARI-6042. All host checks pass but it says hostname resolution issue (Jonathan Hurley via ncole) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/0ef16b34 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/0ef16b34 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/0ef16b34 Branch: refs/heads/trunk Commit: 0ef16b34d66ba1ad636f77ddc93866223ae2d5f4 Parents: e8dde01 Author: Nate Cole <[email protected]> Authored: Fri Jun 6 10:45:24 2014 -0400 Committer: Nate Cole <[email protected]> Committed: Fri Jun 6 10:45:29 2014 -0400 ---------------------------------------------------------------------- .../ambari_agent/CustomServiceOrchestrator.py | 10 ++--- .../python/ambari_agent/TestPythonExecutor.py | 2 +- .../controller/AmbariActionExecutionHelper.java | 4 +- .../AmbariCustomCommandExecutionHelper.java | 46 +++++++++++--------- .../AmbariManagementControllerTest.java | 18 +++++--- do_remote.sh | 25 +++++++++++ 6 files changed, 72 insertions(+), 33 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/0ef16b34/ambari-agent/src/main/python/ambari_agent/CustomServiceOrchestrator.py ---------------------------------------------------------------------- diff --git a/ambari-agent/src/main/python/ambari_agent/CustomServiceOrchestrator.py b/ambari-agent/src/main/python/ambari_agent/CustomServiceOrchestrator.py index 5479f23..492e025 100644 --- a/ambari-agent/src/main/python/ambari_agent/CustomServiceOrchestrator.py +++ b/ambari-agent/src/main/python/ambari_agent/CustomServiceOrchestrator.py @@ -20,7 +20,7 @@ limitations under the License. import logging import os -import json, pprint +import json import sys from FileCache import FileCache @@ -267,14 +267,14 @@ class CustomServiceOrchestrator(): if len(rangeBounds) == 2: if not rangeBounds[0] or not rangeBounds[1]: - raise AgentException.AgentException("Broken data in given range, expected - ""m-n"" or ""m"", got : " + str(r)) + raise AgentException("Broken data in given range, expected - ""m-n"" or ""m"", got : " + str(r)) resultList.extend(range(int(rangeBounds[0]), int(rangeBounds[1]) + 1)) elif len(rangeBounds) == 1: resultList.append((int(rangeBounds[0]))) else: - raise AgentException.AgentException("Broken data in given range, expected - ""m-n"" or ""m"", got : " + str(r)) + raise AgentException("Broken data in given range, expected - ""m-n"" or ""m"", got : " + str(r)) return resultList @@ -286,7 +286,7 @@ class CustomServiceOrchestrator(): for i in list: valueToRanges = i.split(":") if len(valueToRanges) <> 2: - raise AgentException.AgentException("Broken data in given value to range, expected format - ""value:m-n"", got - " + str(i)) + raise AgentException("Broken data in given value to range, expected format - ""value:m-n"", got - " + str(i)) value = valueToRanges[0] rangesToken = valueToRanges[1] @@ -297,7 +297,7 @@ class CustomServiceOrchestrator(): if len(rangeIndexes) == 2: if not rangeIndexes[0] or not rangeIndexes[1]: - raise AgentException.AgentException("Broken data in given value to range, expected format - ""value:m-n"", got - " + str(r)) + raise AgentException("Broken data in given value to range, expected format - ""value:m-n"", got - " + str(r)) start = int(rangeIndexes[0]) end = int(rangeIndexes[1]) http://git-wip-us.apache.org/repos/asf/ambari/blob/0ef16b34/ambari-agent/src/test/python/ambari_agent/TestPythonExecutor.py ---------------------------------------------------------------------- diff --git a/ambari-agent/src/test/python/ambari_agent/TestPythonExecutor.py b/ambari-agent/src/test/python/ambari_agent/TestPythonExecutor.py index 9889ec0..9e52eae 100644 --- a/ambari-agent/src/test/python/ambari_agent/TestPythonExecutor.py +++ b/ambari-agent/src/test/python/ambari_agent/TestPythonExecutor.py @@ -133,7 +133,7 @@ class TestPythonExecutor(TestCase): executor = PythonExecutor("/tmp", AmbariConfig().getConfig()) command = executor.python_command("script", ["script_param1"]) self.assertEqual(3, len(command)) - self.assertTrue("python" in command[0]) + self.assertTrue("python" in command[0].lower()) self.assertEquals("script", command[1]) self.assertEquals("script_param1", command[2]) http://git-wip-us.apache.org/repos/asf/ambari/blob/0ef16b34/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 35e970e..c66d2e2 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 @@ -20,6 +20,7 @@ package org.apache.ambari.server.controller; import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.COMMAND_TIMEOUT; import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.COMPONENT_CATEGORY; +import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.JDK_LOCATION; import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.SCRIPT; import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.SCRIPT_TYPE; @@ -33,14 +34,12 @@ import org.apache.ambari.server.AmbariException; import org.apache.ambari.server.Role; import org.apache.ambari.server.RoleCommand; import org.apache.ambari.server.StackAccessException; -import org.apache.ambari.server.actionmanager.ActionManager; import org.apache.ambari.server.actionmanager.Stage; import org.apache.ambari.server.actionmanager.TargetHostType; import org.apache.ambari.server.agent.ExecutionCommand; import org.apache.ambari.server.api.services.AmbariMetaInfo; import org.apache.ambari.server.controller.internal.RequestResourceFilter; import org.apache.ambari.server.customactions.ActionDefinition; -import org.apache.ambari.server.metadata.ActionMetadata; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.ComponentInfo; @@ -324,6 +323,7 @@ public class AmbariActionExecutionHelper { Map<String, String> commandParams = actionContext.getParameters(); commandParams.put(COMMAND_TIMEOUT, actionContext.getTimeout().toString()); + commandParams.put(JDK_LOCATION, managementController.getJdkResourceUrl()); commandParams.put(SCRIPT, actionName + ".py"); commandParams.put(SCRIPT_TYPE, TYPE_PYTHON); http://git-wip-us.apache.org/repos/asf/ambari/blob/0ef16b34/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 b27698d..a62ec14 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 @@ -18,9 +18,24 @@ package org.apache.ambari.server.controller; -import com.google.gson.Gson; -import com.google.inject.Inject; -import com.google.inject.Singleton; +import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.COMMAND_TIMEOUT; +import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.COMPONENT_CATEGORY; +import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.CUSTOM_COMMAND; +import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.HOOKS_FOLDER; +import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.JDK_LOCATION; +import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.REPO_INFO; +import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.SCRIPT; +import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.SCRIPT_TYPE; +import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.SERVICE_PACKAGE_FOLDER; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; import org.apache.ambari.server.AmbariException; import org.apache.ambari.server.Role; @@ -56,23 +71,9 @@ import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TreeMap; - -import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.COMMAND_TIMEOUT; -import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.COMPONENT_CATEGORY; -import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.CUSTOM_COMMAND; -import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.HOOKS_FOLDER; -import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.REPO_INFO; -import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.SCRIPT; -import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.SCRIPT_TYPE; -import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.SERVICE_PACKAGE_FOLDER; +import com.google.gson.Gson; +import com.google.inject.Inject; +import com.google.inject.Singleton; /** * Helper class containing logic to process custom command execution requests . @@ -297,10 +298,13 @@ public class AmbariCustomCommandExecutionHelper { } // We don't need package/repo information to perform service check } + commandParams.put(COMMAND_TIMEOUT, commandTimeout); + commandParams.put(JDK_LOCATION, managementController.getJdkResourceUrl()); commandParams.put(SERVICE_PACKAGE_FOLDER, serviceInfo.getServicePackageFolder()); + commandParams.put(HOOKS_FOLDER, stackInfo.getStackHooksFolder()); execCmd.setCommandParams(commandParams); @@ -462,7 +466,9 @@ public class AmbariCustomCommandExecutionHelper { } // We don't need package/repo information to perform service check } + commandParams.put(COMMAND_TIMEOUT, commandTimeout); + commandParams.put(JDK_LOCATION, managementController.getJdkResourceUrl()); commandParams.put(SERVICE_PACKAGE_FOLDER, serviceInfo.getServicePackageFolder()); http://git-wip-us.apache.org/repos/asf/ambari/blob/0ef16b34/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 8fbf207..5cf5986 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 @@ -83,7 +83,6 @@ import org.apache.ambari.server.orm.dao.ExecutionCommandDAO; import org.apache.ambari.server.orm.dao.HostDAO; import org.apache.ambari.server.orm.dao.RoleDAO; import org.apache.ambari.server.orm.entities.ExecutionCommandEntity; -import org.apache.ambari.server.orm.entities.HostEntity; import org.apache.ambari.server.orm.entities.RoleEntity; import org.apache.ambari.server.security.authorization.Users; import org.apache.ambari.server.serveraction.ServerAction; @@ -3832,15 +3831,19 @@ public class AmbariManagementControllerTest { List<HostRoleCommand> storedTasks = actionDB.getRequestTasks(response.getRequestId()); Stage stage = actionDB.getAllStages(response.getRequestId()).get(0); Assert.assertNotNull(stage); + Assert.assertEquals(1, storedTasks.size()); HostRoleCommand task = storedTasks.get(0); Assert.assertEquals(RoleCommand.ACTIONEXECUTE, task.getRoleCommand()); Assert.assertEquals("a1", task.getRole().name()); Assert.assertEquals("h1", task.getHostName()); ExecutionCommand cmd = task.getExecutionCommandWrapper().getExecutionCommand(); - Assert.assertTrue(cmd.getCommandParams().containsKey("test")); + Map<String, String> commandParameters = cmd.getCommandParams(); + + Assert.assertTrue(commandParameters.containsKey("test")); Assert.assertEquals("HDFS", cmd.getServiceName()); Assert.assertEquals("DATANODE", cmd.getComponentName()); + Assert.assertNotNull(commandParameters.get("jdk_location")); resourceFilters.clear(); resourceFilter = new RequestResourceFilter("", "", null); @@ -3864,7 +3867,9 @@ public class AmbariManagementControllerTest { Assert.assertEquals(expectedHosts, actualHosts); cmd = task.getExecutionCommandWrapper().getExecutionCommand(); - Assert.assertTrue(cmd.getCommandParams().containsKey("test")); + commandParameters = cmd.getCommandParams(); + + Assert.assertTrue(commandParameters.containsKey("test")); Assert.assertEquals("HDFS", cmd.getServiceName()); Assert.assertEquals("DATANODE", cmd.getComponentName()); @@ -3880,7 +3885,6 @@ public class AmbariManagementControllerTest { Assert.assertEquals("h3", taskStatus.getHostName()); Assert.assertTrue(null != cmd.getPassiveInfo()); - } @Test @@ -6296,6 +6300,9 @@ public class AmbariManagementControllerTest { int expectedRestartCount = 0; for (HostRoleCommand hrc : storedTasks) { Assert.assertEquals("RESTART", hrc.getCustomCommandName()); + Assert.assertNotNull(hrc.getExecutionCommandWrapper() + .getExecutionCommand().getCommandParams().get("jdk_location")); + if (hrc.getHostName().equals("h1") && hrc.getRole().equals(Role.DATANODE)) { expectedRestartCount++; } else if(hrc.getHostName().equals("h2")) { @@ -6307,7 +6314,8 @@ public class AmbariManagementControllerTest { } } - Assert.assertEquals("Restart 2 datanodes and 1 Resourcemanager.", 3, expectedRestartCount); + Assert.assertEquals("Restart 2 datanodes and 1 Resourcemanager.", 3, + expectedRestartCount); // Test service checks - specific host resourceFilters.clear(); http://git-wip-us.apache.org/repos/asf/ambari/blob/0ef16b34/do_remote.sh ---------------------------------------------------------------------- diff --git a/do_remote.sh b/do_remote.sh new file mode 100755 index 0000000..b410041 --- /dev/null +++ b/do_remote.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +AAPATH=~/ambari + +function dodir { + if [ -d $1 ]; then + mv $1 "$1.`date +%s`" + fi + + cp -R $AAPATH/$2 $1 + +} + +dodir /usr/lib/python2.6/site-packages/ambari_agent ambari-agent/src/main/python/ambari_agent +dodir /usr/lib/python2.6/site-packages/resource_management ambari-agent/src/main/python/resource_management +dodir /usr/lib/python2.6/site-packages/common_functions ambari-common/src/main/python/common_functions + +dodir /var/lib/ambari-agent/cache/stacks/HDP ambari-server/src/main/resources/stacks/HDP + +if [ ! -d /var/lib/ambari-agent/resources ]; then + mkdir -p /var/lib/ambari-agent/resources +fi +dodir /var/lib/ambari-agent/resources/custom_actions ambari-server/src/main/resources/custom_actions + +cat $AAPATH/version > /var/lib/ambari-agent/data/version
