Explorar o código

AMBARI-6042. All host checks pass but it says hostname resolution issue (Jonathan Hurley via ncole)

Nate Cole %!s(int64=11) %!d(string=hai) anos
pai
achega
0ef16b34d6

+ 5 - 5
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])

+ 1 - 1
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])
 

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

+ 26 - 20
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());

+ 13 - 5
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();

+ 25 - 0
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