You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2014/11/21 20:45:29 UTC
ambari git commit: AMBARI-8406. Upgrade Execute: implement proper
RESTART commands (ncole)
Repository: ambari
Updated Branches:
refs/heads/trunk d0b8bed79 -> 1c655c792
AMBARI-8406. Upgrade Execute: implement proper RESTART commands (ncole)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/1c655c79
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/1c655c79
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/1c655c79
Branch: refs/heads/trunk
Commit: 1c655c7920c46d392b1ee8b8eeee38b97613fd62
Parents: d0b8bed
Author: Nate Cole <nc...@hortonworks.com>
Authored: Thu Nov 20 21:19:53 2014 -0500
Committer: Nate Cole <nc...@hortonworks.com>
Committed: Fri Nov 21 14:19:33 2014 -0500
----------------------------------------------------------------------
.../AmbariCustomCommandExecutionHelper.java | 81 +++++++++++++++++++-
.../AmbariManagementControllerImpl.java | 67 ++--------------
.../server/controller/ExecuteCommandJson.java | 56 ++++++++++++++
.../internal/UpgradeResourceProvider.java | 61 +++++++++++++--
.../AmbariManagementControllerImplTest.java | 54 +++++++------
5 files changed, 229 insertions(+), 90 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/1c655c79/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 4103621..4382c9f 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,15 +18,26 @@
package org.apache.ambari.server.controller;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.CLIENTS_TO_UPDATE_CONFIGS;
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.DB_DRIVER_FILENAME;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.DB_NAME;
import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.GROUP_LIST;
import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.HOOKS_FOLDER;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.JAVA_HOME;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.JCE_NAME;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.JDK_LOCATION;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.JDK_NAME;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.MYSQL_JDBC_URL;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.ORACLE_JDBC_URL;
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 static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.STACK_NAME;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.STACK_VERSION;
import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.USER_LIST;
import java.util.ArrayList;
@@ -71,7 +82,6 @@ import org.apache.ambari.server.state.CustomCommandDefinition;
import org.apache.ambari.server.state.Host;
import org.apache.ambari.server.state.HostComponentAdminState;
import org.apache.ambari.server.state.MaintenanceState;
-
import org.apache.ambari.server.state.stack.OsFamily;
import org.apache.ambari.server.state.svccomphost.ServiceComponentHostOpInProgressEvent;
import org.apache.ambari.server.utils.StageUtils;
@@ -891,6 +901,75 @@ public class AmbariCustomCommandExecutionHelper {
return repoInfo;
}
+
+ /**
+ * Helper method to fill execution command information
+ * @param actionExecutionContext the context
+ * @param cluster the cluster for the command
+ * @return a wrapper of the imporant JSON structures to add to a stage.
+ */
+ public ExecuteCommandJson getCommandJson(ActionExecutionContext actionExecContext,
+ Cluster cluster) throws AmbariException {
+
+ Map<String, String> commandParamsStage = StageUtils.getCommandParamsStage(actionExecContext);
+ Map<String, String> hostParamsStage = new HashMap<String, String>();
+ Map<String, Set<String>> clusterHostInfo;
+ String clusterHostInfoJson = "{}";
+
+ if (null != cluster) {
+ clusterHostInfo = StageUtils.getClusterHostInfo(
+ clusters.getHostsForCluster(cluster.getClusterName()), cluster);
+ hostParamsStage = createDefaultHostParams(cluster);
+ StackId stackId = cluster.getDesiredStackVersion();
+ String componentName = null;
+ String serviceName = null;
+ if (actionExecContext.getOperationLevel() != null) {
+ componentName = actionExecContext.getOperationLevel().getHostComponentName();
+ serviceName = actionExecContext.getOperationLevel().getServiceName();
+ }
+ if (serviceName != null && componentName != null) {
+ ComponentInfo componentInfo = ambariMetaInfo.getComponent(
+ stackId.getStackName(), stackId.getStackVersion(),
+ serviceName, componentName);
+ List<String> clientsToUpdateConfigsList = componentInfo.getClientsToUpdateConfigs();
+ if (clientsToUpdateConfigsList == null) {
+ clientsToUpdateConfigsList = new ArrayList<String>();
+ clientsToUpdateConfigsList.add("*");
+ }
+ String clientsToUpdateConfigs = gson.toJson(clientsToUpdateConfigsList);
+ hostParamsStage.put(CLIENTS_TO_UPDATE_CONFIGS, clientsToUpdateConfigs);
+ }
+ clusterHostInfoJson = StageUtils.getGson().toJson(clusterHostInfo);
+ }
+
+ String hostParamsStageJson = StageUtils.getGson().toJson(hostParamsStage);
+ String commandParamsStageJson = StageUtils.getGson().toJson(commandParamsStage);
+
+ return new ExecuteCommandJson(clusterHostInfoJson, commandParamsStageJson,
+ hostParamsStageJson);
+ }
+
+ Map<String, String> createDefaultHostParams(Cluster cluster) {
+ StackId stackId = cluster.getDesiredStackVersion();
+ TreeMap<String, String> hostLevelParams = new TreeMap<String, String>();
+ hostLevelParams.put(JDK_LOCATION, managementController.getJdkResourceUrl());
+ hostLevelParams.put(JAVA_HOME, managementController.getJavaHome());
+ hostLevelParams.put(JDK_NAME, managementController.getJDKName());
+ hostLevelParams.put(JCE_NAME, managementController.getJCEName());
+ hostLevelParams.put(STACK_NAME, stackId.getStackName());
+ hostLevelParams.put(STACK_VERSION, stackId.getStackVersion());
+ hostLevelParams.put(DB_NAME, managementController.getServerDB());
+ hostLevelParams.put(MYSQL_JDBC_URL, managementController.getMysqljdbcUrl());
+ hostLevelParams.put(ORACLE_JDBC_URL, managementController.getOjdbcUrl());
+ hostLevelParams.put(DB_DRIVER_FILENAME, configs.getMySQLJarName());
+ hostLevelParams.putAll(managementController.getRcaParameters());
+
+ return hostLevelParams;
+ }
+
+
+
+
private ServiceComponent getServiceComponent ( ActionExecutionContext actionExecutionContext,
RequestResourceFilter resourceFilter){
try {
http://git-wip-us.apache.org/repos/asf/ambari/blob/1c655c79/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 9d3a1f8..8f90cf4 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
@@ -25,23 +25,14 @@ import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.AMBARI_DB
import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.CLIENTS_TO_UPDATE_CONFIGS;
import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.COMMAND_TIMEOUT;
import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.DB_DRIVER_FILENAME;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.DB_NAME;
import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.GROUP_LIST;
import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.HOOKS_FOLDER;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.JAVA_HOME;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.JCE_NAME;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.JDK_LOCATION;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.JDK_NAME;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.MYSQL_JDBC_URL;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.ORACLE_JDBC_URL;
import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.PACKAGE_LIST;
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 static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.SERVICE_REPO_INFO;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.STACK_NAME;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.STACK_VERSION;
import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.USER_LIST;
import java.io.File;
@@ -1795,7 +1786,8 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
clusters.getHostsForCluster(cluster.getClusterName()), cluster);
String clusterHostInfoJson = StageUtils.getGson().toJson(clusterHostInfo);
- String HostParamsJson = StageUtils.getGson().toJson(createDefaultHostParams(cluster));
+ String HostParamsJson = StageUtils.getGson().toJson(
+ customCommandExecutionHelper.createDefaultHostParams(cluster));
Stage stage = createNewStage(requestStages.getLastStageId() + 1, cluster,
requestStages.getId(), requestProperties.get(REQUEST_CONTEXT_PROPERTY),
@@ -2024,23 +2016,6 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
return null;
}
- TreeMap<String, String> createDefaultHostParams(Cluster cluster) {
- StackId stackId = cluster.getDesiredStackVersion();
- TreeMap<String, String> hostLevelParams = new TreeMap<String, String>();
- hostLevelParams.put(JDK_LOCATION, getJdkResourceUrl());
- hostLevelParams.put(JAVA_HOME, getJavaHome());
- hostLevelParams.put(JDK_NAME, getJDKName());
- hostLevelParams.put(JCE_NAME, getJCEName());
- hostLevelParams.put(STACK_NAME, stackId.getStackName());
- hostLevelParams.put(STACK_VERSION, stackId.getStackVersion());
- hostLevelParams.put(DB_NAME, getServerDB());
- hostLevelParams.put(MYSQL_JDBC_URL, getMysqljdbcUrl());
- hostLevelParams.put(ORACLE_JDBC_URL, getOjdbcUrl());
- hostLevelParams.put(DB_DRIVER_FILENAME, configs.getMySQLJarName());
- hostLevelParams.putAll(getRcaParameters());
-
- return hostLevelParams;
- }
@Transactional
void updateServiceStates(
@@ -3036,42 +3011,12 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
actionExecutionHelper.validateAction(actionRequest);
}
- Map<String, String> commandParamsStage = StageUtils.getCommandParamsStage(actionExecContext);
- Map<String, String> hostParamsStage = new HashMap<String, String>();
- Map<String, Set<String>> clusterHostInfo;
- String clusterHostInfoJson = "{}";
-
- if (null != cluster) {
- clusterHostInfo = StageUtils.getClusterHostInfo(
- clusters.getHostsForCluster(cluster.getClusterName()), cluster);
- hostParamsStage = createDefaultHostParams(cluster);
- StackId stackId = cluster.getDesiredStackVersion();
- String componentName = null;
- String serviceName = null;
- if (actionExecContext.getOperationLevel() != null) {
- componentName = actionExecContext.getOperationLevel().getHostComponentName();
- serviceName = actionExecContext.getOperationLevel().getServiceName();
- }
- if (serviceName != null && componentName != null) {
- ComponentInfo componentInfo = ambariMetaInfo.getComponent(
- stackId.getStackName(), stackId.getStackVersion(),
- serviceName, componentName);
- List<String> clientsToUpdateConfigsList = componentInfo.getClientsToUpdateConfigs();
- if (clientsToUpdateConfigsList == null) {
- clientsToUpdateConfigsList = new ArrayList<String>();
- clientsToUpdateConfigsList.add("*");
- }
- String clientsToUpdateConfigs = gson.toJson(clientsToUpdateConfigsList);
- hostParamsStage.put(CLIENTS_TO_UPDATE_CONFIGS, clientsToUpdateConfigs);
- }
- clusterHostInfoJson = StageUtils.getGson().toJson(clusterHostInfo);
- }
-
- String hostParamsStageJson = StageUtils.getGson().toJson(hostParamsStage);
- String commandParamsStageJson = StageUtils.getGson().toJson(commandParamsStage);
+ ExecuteCommandJson jsons = customCommandExecutionHelper.getCommandJson(
+ actionExecContext, cluster);
Stage stage = createNewStage(0, cluster, actionManager.getNextRequestId(), requestContext,
- clusterHostInfoJson, commandParamsStageJson, hostParamsStageJson);
+ jsons.getClusterHostInfo(), jsons.getCommandParamsForStage(),
+ jsons.getHostParamsForStage());
if (actionRequest.isCommand()) {
customCommandExecutionHelper.addExecutionCommandsToStage(actionExecContext, stage, requestProperties);
http://git-wip-us.apache.org/repos/asf/ambari/blob/1c655c79/ambari-server/src/main/java/org/apache/ambari/server/controller/ExecuteCommandJson.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/ExecuteCommandJson.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/ExecuteCommandJson.java
new file mode 100644
index 0000000..e3f87d9
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/ExecuteCommandJson.java
@@ -0,0 +1,56 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ambari.server.controller;
+
+/**
+ * Wraps the strings needed when creating a stage for a custom command or action.
+ */
+public class ExecuteCommandJson {
+
+ private String clusterHostJson;
+ private String commandParamsJson;
+ private String hostParamsJson;
+
+ ExecuteCommandJson(String clusterHosts, String commandParams, String hostParams) {
+ clusterHostJson = clusterHosts;
+ commandParamsJson = commandParams;
+ hostParamsJson = hostParams;
+ }
+
+ /**
+ * @return the host params
+ */
+ public String getHostParamsForStage() {
+ return hostParamsJson;
+ }
+
+ /**
+ * @return the command params
+ */
+ public String getCommandParamsForStage() {
+ return commandParamsJson;
+ }
+
+ /**
+ * @return the cluster host info
+ */
+ public String getClusterHostInfo() {
+ return clusterHostJson;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/1c655c79/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
index 9138ec2..eb2ad76 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
@@ -39,7 +39,9 @@ import org.apache.ambari.server.actionmanager.StageFactory;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.controller.ActionExecutionContext;
import org.apache.ambari.server.controller.AmbariActionExecutionHelper;
+import org.apache.ambari.server.controller.AmbariCustomCommandExecutionHelper;
import org.apache.ambari.server.controller.AmbariManagementController;
+import org.apache.ambari.server.controller.ExecuteCommandJson;
import org.apache.ambari.server.controller.spi.NoSuchParentResourceException;
import org.apache.ambari.server.controller.spi.NoSuchResourceException;
import org.apache.ambari.server.controller.spi.Predicate;
@@ -95,6 +97,9 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
private static Provider<StageFactory> stageFactory;
@Inject
private static Provider<AmbariActionExecutionHelper> actionExecutionHelper;
+ @Inject
+ private static Provider<AmbariCustomCommandExecutionHelper> commandExecutionHelper;
+
static {
@@ -218,6 +223,13 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
return resource;
}
+ /**
+ * Validates a singular API request.
+ *
+ * @param requestMap the map of properties
+ * @return the validated upgrade pack
+ * @throws AmbariException
+ */
private UpgradePack validateRequest(Map<String, Object> requestMap) throws AmbariException {
String clusterName = (String) requestMap.get(UPGRADE_CLUSTER_NAME);
String version = (String) requestMap.get(UPGRADE_VERSION);
@@ -307,7 +319,7 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
components.get(componentName).getServiceComponentHosts().keySet());
preUpgrades.addAll(buildUpgradeStages(pc, true, groupings));
- restart.addAll(buildRollingRestart(pc, groupings));
+ restart.addAll(buildRollingRestart(serviceName, pc, groupings));
postUpgrades.addAll(buildUpgradeStages(pc, false, groupings));
}
}
@@ -397,7 +409,8 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
* @param hostGroups a list of the host groupings
* @return the list of stages that need to be created
*/
- private List<StageHolder> buildRollingRestart(ProcessingComponent pc, List<Set<String>> hostGroups) {
+ private List<StageHolder> buildRollingRestart(String serviceName, ProcessingComponent pc,
+ List<Set<String>> hostGroups) {
List<StageHolder> stages = new ArrayList<StageHolder>();
String textFormat = "Restarting %s on %d host(s), Phase %d/%d";
@@ -406,6 +419,8 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
for (Set<String> hostGroup : hostGroups) {
// !!! each of these is its own stage
StageHolder stage = new StageHolder();
+ stage.service = serviceName;
+ stage.component = pc.name;
stage.hosts = hostGroup;
stage.upgradeItemEntity = new UpgradeItemEntity();
stage.upgradeItemEntity.setText(String.format(textFormat, pc.name,
@@ -465,6 +480,8 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
}
private static class StageHolder {
+ private String service;
+ private String component;
private TaskHolder taskHolder;
private UpgradeItemEntity upgradeItemEntity;
private Set<String> hosts;
@@ -506,7 +523,6 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
if (0L == stageId) {
stageId = 1L;
}
-
stage.setStageId(stageId);
// add each host to this stage
@@ -523,7 +539,7 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
params);
actionContext.setTimeout(Short.valueOf((short)60));
- // !!! TODO validate the action is valid
+ // !!! TODO verify the action is valid
actionExecutionHelper.get().addExecutionCommandsToStage(actionContext, stage);
@@ -540,9 +556,42 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
private void createRestartStage(Cluster cluster, RequestStageContainer request,
StageHolder holder) throws AmbariException {
- // !!! TODO make a restart command
- createUpgradeTaskStage(cluster, request, holder);
+ // add each host to this stage
+ RequestResourceFilter filter = new RequestResourceFilter(holder.service, holder.component,
+ new ArrayList<String>(holder.hosts));
+
+ ActionExecutionContext actionContext = new ActionExecutionContext(
+ cluster.getClusterName(), "RESTART",
+ Collections.singletonList(filter),
+ Collections.<String, String>emptyMap());
+ actionContext.setTimeout(Short.valueOf((short)-1));
+ ExecuteCommandJson jsons = commandExecutionHelper.get().getCommandJson(
+ actionContext, cluster);
+
+ Stage stage = stageFactory.get().createNew(request.getId().longValue(),
+ "/tmp/ambari",
+ cluster.getClusterName(),
+ cluster.getClusterId(),
+ holder.upgradeItemEntity.getText(),
+ jsons.getClusterHostInfo(),
+ jsons.getCommandParamsForStage(),
+ jsons.getHostParamsForStage());
+
+ long stageId = request.getLastStageId() + 1;
+ if (0L == stageId) {
+ stageId = 1L;
+ }
+ stage.setStageId(stageId);
+
+ // !!! TODO verify the action is valid
+
+ Map<String, String> requestParams = new HashMap<String, String>();
+ requestParams.put("command", "RESTART");
+
+ commandExecutionHelper.get().addExecutionCommandsToStage(actionContext, stage, requestParams);
+
+ request.addStages(Collections.singletonList(stage));
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/1c655c79/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
index e068508..4b19443 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
@@ -119,62 +119,62 @@ public class AmbariManagementControllerImplTest {
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null);
-
+
//replay
replay(injector);
-
-
+
+
AmbariManagementControllerImpl controller = new AmbariManagementControllerImpl(null, null, injector);
-
+
class AmbariConfigsSetter{
public void setConfigs(AmbariManagementController controller, String masterProtocol, String masterHostname, Integer masterPort) throws Exception{
// masterProtocol
Class<?> c = controller.getClass();
Field f = c.getDeclaredField("masterProtocol");
f.setAccessible(true);
-
+
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(f, f.getModifiers() & ~Modifier.FINAL);
-
+
f.set(controller, masterProtocol);
-
+
// masterHostname
f = c.getDeclaredField("masterHostname");
f.setAccessible(true);
-
+
modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(f, f.getModifiers() & ~Modifier.FINAL);
-
+
f.set(controller, masterHostname);
-
+
// masterPort
f = c.getDeclaredField("masterPort");
f.setAccessible(true);
-
+
modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(f, f.getModifiers() & ~Modifier.FINAL);
-
+
f.set(controller, masterPort);
}
}
AmbariConfigsSetter ambariConfigsSetter = new AmbariConfigsSetter();
-
+
ambariConfigsSetter.setConfigs(controller, "http", "hostname", 8080);
assertEquals("http://hostname:8080/jdk_path", controller.getAmbariServerURI("/jdk_path"));
-
+
ambariConfigsSetter.setConfigs(controller, "https", "somesecuredhost", 8443);
assertEquals("https://somesecuredhost:8443/mysql_path", controller.getAmbariServerURI("/mysql_path"));
ambariConfigsSetter.setConfigs(controller, "https", "othersecuredhost", 8443);
assertEquals("https://othersecuredhost:8443/oracle/ojdbc/", controller.getAmbariServerURI("/oracle/ojdbc/"));
-
+
verify(injector);
}
-
+
@Test
public void testGetClusters() throws Exception {
// member state mocks
@@ -584,7 +584,7 @@ public class AmbariManagementControllerImplTest {
MaintenanceStateHelper maintHelper = createNiceMock(MaintenanceStateHelper.class);
expect(maintHelper.getEffectiveState(componentHost)).andReturn(MaintenanceState.OFF).anyTimes();
-
+
// requests
ServiceComponentHostRequest request1 = new ServiceComponentHostRequest(
"cluster1", null, "component1", "host1", null);
@@ -595,7 +595,7 @@ public class AmbariManagementControllerImplTest {
// expectations
// constructor init
injector.injectMembers(capture(controllerCapture));
-
+
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(maintHelper).anyTimes();
@@ -850,7 +850,7 @@ public class AmbariManagementControllerImplTest {
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(maintHelper).anyTimes();
-
+
// getHostComponent
expect(clusters.getCluster("cluster1")).andReturn(cluster).times(3);
expect(clusters.getClustersForHost("host1")).andReturn(Collections.singleton(cluster)).anyTimes();
@@ -927,7 +927,7 @@ public class AmbariManagementControllerImplTest {
final ServiceComponentHost componentHost2 = createNiceMock(ServiceComponentHost.class);
ServiceComponentHostResponse response1 = createNiceMock(ServiceComponentHostResponse.class);
ServiceComponentHostResponse response2 = createNiceMock(ServiceComponentHostResponse.class);
-
+
MaintenanceStateHelper maintHelper = createNiceMock(MaintenanceStateHelper.class);
expect(maintHelper.getEffectiveState(
anyObject(ServiceComponentHost.class),
@@ -1456,6 +1456,7 @@ public class AmbariManagementControllerImplTest {
Injector injector = createNiceMock(Injector.class);
Configuration configuration = createNiceMock(Configuration.class);
+
expect(cluster.getDesiredStackVersion()).andReturn(stackId);
expect(stackId.getStackName()).andReturn(SOME_STACK_NAME).anyTimes();
expect(stackId.getStackVersion()).andReturn(SOME_STACK_VERSION).anyTimes();
@@ -1483,8 +1484,17 @@ public class AmbariManagementControllerImplTest {
f.setAccessible(true);
f.set(ambariManagementControllerImpl, configuration);
- TreeMap<String, String> defaultHostParams =
- ambariManagementControllerImpl.createDefaultHostParams(cluster);
+ AmbariCustomCommandExecutionHelper helper = new AmbariCustomCommandExecutionHelper();
+ Class<?> helperClass = AmbariCustomCommandExecutionHelper.class;
+ f = helperClass.getDeclaredField("managementController");
+ f.setAccessible(true);
+ f.set(helper, ambariManagementControllerImpl);
+
+ f = helperClass.getDeclaredField("configs");
+ f.setAccessible(true);
+ f.set(helper, configuration);
+
+ Map<String, String> defaultHostParams = helper.createDefaultHostParams(cluster);
assertEquals(defaultHostParams.size(), 10);
assertEquals(defaultHostParams.get(DB_DRIVER_FILENAME), MYSQL_JAR);