You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ao...@apache.org on 2014/12/08 17:10:19 UTC
ambari git commit: AMBARI-4504. role_command_order is not inherited
from the parent stack (aonishuk)
Repository: ambari
Updated Branches:
refs/heads/trunk 4ae267ce2 -> 438326f69
AMBARI-4504. role_command_order is not inherited from the parent stack (aonishuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/438326f6
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/438326f6
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/438326f6
Branch: refs/heads/trunk
Commit: 438326f69de353b92331e6df4c59739afd22fa66
Parents: 4ae267c
Author: Andrew Onishuk <ao...@hortonworks.com>
Authored: Mon Dec 8 18:09:57 2014 +0200
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Mon Dec 8 18:09:57 2014 +0200
----------------------------------------------------------------------
.../server/metadata/RoleCommandOrder.java | 44 +-------
.../ambari/server/stack/StackDirectory.java | 52 +++++++++
.../apache/ambari/server/stack/StackModule.java | 14 +++
.../apache/ambari/server/state/StackInfo.java | 10 ++
.../state/stack/StackRoleCommandOrder.java | 113 +++++++++++++++++++
.../stacks/HDP/2.1/role_command_order.json | 53 +--------
.../stacks/HDP/2.2/role_command_order.json | 67 +----------
.../ambari/server/stack/StackManagerTest.java | 26 ++++-
.../stacks/HDP/2.0.8/role_command_order.json | 15 +--
.../stacks/HDP/2.1.1/role_command_order.json | 13 +--
10 files changed, 220 insertions(+), 187 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/438326f6/ambari-server/src/main/java/org/apache/ambari/server/metadata/RoleCommandOrder.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/metadata/RoleCommandOrder.java b/ambari-server/src/main/java/org/apache/ambari/server/metadata/RoleCommandOrder.java
index 32668fa..f424f81 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/metadata/RoleCommandOrder.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/metadata/RoleCommandOrder.java
@@ -55,7 +55,6 @@ public class RoleCommandOrder {
private final static String NAMENODE_HA_DEPS_KEY = "namenode_optional_ha";
private final static String RESOURCEMANAGER_HA_DEPS_KEY = "resourcemanager_optional_ha";
private final static String COMMENT_STR = "_comment";
- private static final String ROLE_COMMAND_ORDER_FILE = "role_command_order.json";
/**
* Commands that are independent, role order matters
@@ -137,19 +136,6 @@ public class RoleCommandOrder {
this.dependencies.get(rcp1).add(rcp2);
}
- private File getRCOFile(String stackName, String stackVersion) {
- StackInfo stackInfo;
- String rcoFileLocation = null;
- try {
- stackInfo = ambariMetaInfo.getStack(stackName, stackVersion);
- rcoFileLocation = stackInfo.getRcoFileLocation();
- } catch (AmbariException e) {
- LOG.warn("Error getting stack info for :" + stackName + "-" + stackVersion);
- }
-
- return rcoFileLocation == null ? null : new File(rcoFileLocation);
- }
-
void addDependencies(Map<String, Object> jsonSection) {
for (Object blockedObj : jsonSection.keySet()) {
String blocked = (String) blockedObj;
@@ -203,33 +189,15 @@ public class RoleCommandOrder {
} catch (AmbariException e) {
}
- // Read data from JSON
- ObjectMapper mapper = new ObjectMapper();
- StackId currentStackVersion = cluster.getCurrentStackVersion();
- String stackName = currentStackVersion.getStackName();
- String stackVersion = currentStackVersion.getStackVersion();
- File rcoFile = getRCOFile(stackName, stackVersion);
- Map<String,Object> userData;
-
+ StackId stackId = cluster.getCurrentStackVersion();
+ StackInfo stack = null;
try {
-
- TypeReference<Map<String,Object>> rcoElementTypeReference = new TypeReference<Map<String,Object>>() {};
-
- if (rcoFile != null) {
- userData = mapper.readValue(rcoFile, rcoElementTypeReference);
- LOG.info("Role command order info was loaded from file: " + rcoFile.getAbsolutePath());
- } else {
- InputStream rcoInputStream = ClassLoader.getSystemResourceAsStream(ROLE_COMMAND_ORDER_FILE);
- userData = mapper.readValue(rcoInputStream, rcoElementTypeReference);
- LOG.info("Role command order info was loaded from classpath: " +
- ClassLoader.getSystemResource(ROLE_COMMAND_ORDER_FILE));
- }
-
- } catch (IOException e) {
- LOG.error("Can not read role command order info", e);
- return;
+ stack = ambariMetaInfo.getStack(stackId.getStackName(),
+ stackId.getStackVersion());
+ } catch (AmbariException e) {
}
+ Map<String,Object> userData = stack.getRoleCommandOrder().getContent();
Map<String,Object> generalSection =
(Map<String, Object>) userData.get(GENERAL_DEPS_KEY);
addDependencies(generalSection);
http://git-wip-us.apache.org/repos/asf/ambari/blob/438326f6/ambari-server/src/main/java/org/apache/ambari/server/stack/StackDirectory.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/stack/StackDirectory.java b/ambari-server/src/main/java/org/apache/ambari/server/stack/StackDirectory.java
index 2a30e40..1e1e3a0 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/stack/StackDirectory.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/stack/StackDirectory.java
@@ -22,13 +22,18 @@ import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.state.stack.RepositoryXml;
import org.apache.ambari.server.state.stack.StackMetainfoXml;
+import org.apache.ambari.server.state.stack.StackRoleCommandOrder;
import org.apache.ambari.server.state.stack.UpgradePack;
import org.apache.commons.io.FilenameUtils;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.type.TypeReference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.xml.bind.JAXBException;
import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
@@ -63,6 +68,11 @@ public class StackDirectory extends StackDefinitionDirectory {
private RepositoryXml repoFile;
/**
+ * role command order
+ */
+ private StackRoleCommandOrder roleCommandOrder;
+
+ /**
* repository directory
*/
private String repoDir;
@@ -114,6 +124,11 @@ public class StackDirectory extends StackDefinitionDirectory {
private static final String UPGRADE_PACK_FOLDER_NAME = "upgrades";
/**
+ * role command order file name
+ */
+ private static final String ROLE_COMMAND_ORDER_FILE = "role_command_order.json";
+
+ /**
* logger instance
*/
private final static Logger LOG = LoggerFactory.getLogger(StackDirectory.class);
@@ -212,6 +227,16 @@ public class StackDirectory extends StackDefinitionDirectory {
}
/**
+ * Obtain the object representation of the stack role_command_order.json file
+ *
+ * @return object representation of the stack role_command_order.json file
+ */
+
+ public StackRoleCommandOrder getRoleCommandOrder() {
+ return roleCommandOrder;
+ }
+
+ /**
* Parse the stack directory.
*
* @throws AmbariException if unable to parse the directory
@@ -236,6 +261,7 @@ public class StackDirectory extends StackDefinitionDirectory {
parseServiceDirectories(subDirs);
parseRepoFile(subDirs);
parseMetaInfoFile();
+ parseRoleCommandOrder();
}
/**
@@ -362,4 +388,30 @@ public class StackDirectory extends StackDefinitionDirectory {
upgradePacks = upgradeMap;
}
}
+
+ /**
+ * Parse role command order file
+ */
+
+ private void parseRoleCommandOrder() {
+ HashMap<String, Object> result = null;
+ ObjectMapper mapper = new ObjectMapper();
+ try {
+ TypeReference<Map<String, Object>> rcoElementTypeReference = new TypeReference<Map<String, Object>>() {
+ };
+ if (rcoFilePath != null) {
+ File file = new File(rcoFilePath);
+ result = mapper.readValue(file, rcoElementTypeReference);
+ LOG.info("Role command order info was loaded from file: {}", file.getAbsolutePath());
+ } else {
+ InputStream rcoInputStream = ClassLoader.getSystemResourceAsStream(ROLE_COMMAND_ORDER_FILE);
+ result = mapper.readValue(rcoInputStream, rcoElementTypeReference);
+ LOG.info("Role command order info was loaded from classpath: " +
+ ClassLoader.getSystemResource(ROLE_COMMAND_ORDER_FILE));
+ }
+ roleCommandOrder = new StackRoleCommandOrder(result);
+ } catch (IOException e) {
+ LOG.error(String.format("Can not read role command order info %s", rcoFilePath), e);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/438326f6/ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java b/ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java
index 3629b36..ea355c8 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java
@@ -218,6 +218,7 @@ public class StackModule extends BaseModule<StackModule, StackInfo> {
resolveStack(parentStack, allStacks);
mergeConfigurations(parentStack, allStacks);
+ mergeRoleCommandOrder(parentStack);
if (stackInfo.getStackHooksFolder() == null) {
stackInfo.setStackHooksFolder(parentStack.getModuleInfo().getStackHooksFolder());
@@ -314,6 +315,7 @@ public class StackModule extends BaseModule<StackModule, StackInfo> {
stackInfo.setRcoFileLocation(stackDirectory.getRcoFilePath());
stackInfo.setUpgradesFolder(stackDirectory.getUpgradesDir());
stackInfo.setUpgradePacks(stackDirectory.getUpgradePacks());
+ stackInfo.setRoleCommandOrder(stackDirectory.getRoleCommandOrder());
populateConfigurationModules();
}
@@ -495,4 +497,16 @@ public class StackModule extends BaseModule<StackModule, StackInfo> {
}
return ri;
}
+
+ /**
+ * Merge role command order with the parent stack
+ *
+ * @param parentStack parent stack
+ */
+
+ private void mergeRoleCommandOrder(StackModule parentStack) {
+
+ stackInfo.getRoleCommandOrder().merge(parentStack.stackInfo.getRoleCommandOrder());
+
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/438326f6/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java b/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java
index f19cf81..b99dcd6 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java
@@ -26,6 +26,7 @@ import java.util.List;
import java.util.Map;
import org.apache.ambari.server.controller.StackVersionResponse;
+import org.apache.ambari.server.state.stack.StackRoleCommandOrder;
import org.apache.ambari.server.state.stack.UpgradePack;
public class StackInfo implements Comparable<StackInfo>{
@@ -41,6 +42,7 @@ public class StackInfo implements Comparable<StackInfo>{
private List<PropertyInfo> properties;
private Map<String, Map<String, Map<String, String>>> configTypes;
private Map<String, UpgradePack> upgradePacks;
+ private StackRoleCommandOrder roleCommandOrder;
/**
* Meaning: stores subpath from stack root to exact hooks folder for stack. These hooks are
@@ -214,6 +216,14 @@ public class StackInfo implements Comparable<StackInfo>{
this.parentStackVersion = parentStackVersion;
}
+ public StackRoleCommandOrder getRoleCommandOrder() {
+ return roleCommandOrder;
+ }
+
+ public void setRoleCommandOrder(StackRoleCommandOrder roleCommandOrder) {
+ this.roleCommandOrder = roleCommandOrder;
+ }
+
public String getRcoFileLocation() {
return rcoFileLocation;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/438326f6/ambari-server/src/main/java/org/apache/ambari/server/state/stack/StackRoleCommandOrder.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/StackRoleCommandOrder.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/StackRoleCommandOrder.java
new file mode 100644
index 0000000..e791859
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/StackRoleCommandOrder.java
@@ -0,0 +1,113 @@
+/**
+ * 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.state.stack;
+
+import org.apache.commons.collections.map.MultiValueMap;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Represents the stack <code>role_command_order.json</code> file.
+ */
+
+public class StackRoleCommandOrder {
+
+ private final static String GENERAL_DEPS_KEY = "general_deps";
+ private final static String GLUSTERFS_DEPS_KEY = "optional_glusterfs";
+ private final static String NO_GLUSTERFS_DEPS_KEY = "optional_no_glusterfs";
+ private final static String NAMENODE_HA_DEPS_KEY = "namenode_optional_ha";
+ private final static String RESOURCEMANAGER_HA_DEPS_KEY = "resourcemanager_optional_ha";
+
+ private HashMap<String, Object> content;
+
+ /**
+ * Initialize object
+ */
+ public StackRoleCommandOrder() {
+ }
+
+ /**
+ * Initialize object
+ *
+ * @param content role command order content
+ */
+ public StackRoleCommandOrder(HashMap<String, Object> content) {
+ this.content = content;
+ }
+
+ /**
+ * Get role command order content
+ *
+ * @return role command order content
+ */
+
+ public HashMap<String, Object> getContent() {
+ return content;
+ }
+
+ /**
+ * Set role command order content
+ *
+ * @param content role command order content
+ */
+
+ public void setContent(HashMap<String, Object> content) {
+ this.content = content;
+ }
+
+ /**
+ * merge StackRoleCommandOrder content with parent
+ *
+ * @param parent parent StackRoleCommandOrder instance
+ */
+
+ public void merge(StackRoleCommandOrder parent) {
+
+ HashMap<String, Object> mergedRoleCommandOrders = new HashMap<String, Object>();
+ HashMap<String, Object> parentData = parent.getContent();
+
+ List<String> keys = Arrays.asList(GENERAL_DEPS_KEY, GLUSTERFS_DEPS_KEY,
+ NO_GLUSTERFS_DEPS_KEY, NAMENODE_HA_DEPS_KEY, RESOURCEMANAGER_HA_DEPS_KEY);
+
+ for (String key : keys) {
+ if (parentData.containsKey(key) && content.containsKey(key)) {
+ Map<String, Object> result = new HashMap<String, Object>();
+ Map<String, Object> parentProperties = (Map<String, Object>) parentData.get(key);
+ Map<String, Object> childProperties = (Map<String, Object>) content.get(key);
+ MultiValueMap childAndParentProperties = new MultiValueMap();
+ childAndParentProperties.putAll(childProperties);
+ childAndParentProperties.putAll(parentProperties);
+ for (Object property : childAndParentProperties.keySet()) {
+ List propertyValues = (List) childAndParentProperties.get(property);
+ result.put((String) property, propertyValues.get(0));
+ }
+ mergedRoleCommandOrders.put(key, result);
+ } else if (content.containsKey(key)) {
+ mergedRoleCommandOrders.put(key, content.get(key));
+ } else if (parentData.containsKey(key)) {
+ mergedRoleCommandOrders.put(key, parentData.get(key));
+ }
+ }
+ this.content = mergedRoleCommandOrders;
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/ambari/blob/438326f6/ambari-server/src/main/resources/stacks/HDP/2.1/role_command_order.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.1/role_command_order.json b/ambari-server/src/main/resources/stacks/HDP/2.1/role_command_order.json
index 2d152ba..50505c9 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.1/role_command_order.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.1/role_command_order.json
@@ -8,65 +8,14 @@
"STORM_UI_SERVER-START" : ["NIMBUS-START"],
"DRPC_SERVER-START" : ["NIMBUS-START"],
"STORM_REST_API-START" : ["NIMBUS-START", "STORM_UI_SERVER-START", "SUPERVISOR-START", "DRPC_SERVER-START"],
- "HBASE_MASTER-START": ["ZOOKEEPER_SERVER-START"],
- "HBASE_REGIONSERVER-START": ["HBASE_MASTER-START"],
- "OOZIE_SERVER-START": ["NODEMANAGER-START", "RESOURCEMANAGER-START"],
- "WEBHCAT_SERVER-START": ["NODEMANAGER-START", "HIVE_SERVER-START"],
- "HIVE_METASTORE-START": ["MYSQL_SERVER-START"],
- "HIVE_SERVER-START": ["NODEMANAGER-START", "MYSQL_SERVER-START"],
- "HUE_SERVER-START": ["HIVE_SERVER-START", "HCAT-START", "OOZIE_SERVER-START"],
- "FLUME_HANDLER-START": ["OOZIE_SERVER-START"],
- "MAPREDUCE_SERVICE_CHECK-SERVICE_CHECK": ["NODEMANAGER-START", "RESOURCEMANAGER-START"],
- "OOZIE_SERVICE_CHECK-SERVICE_CHECK": ["OOZIE_SERVER-START"],
- "HBASE_SERVICE_CHECK-SERVICE_CHECK": ["HBASE_MASTER-START", "HBASE_REGIONSERVER-START"],
- "HIVE_SERVICE_CHECK-SERVICE_CHECK": ["HIVE_SERVER-START", "HIVE_METASTORE-START", "WEBHCAT_SERVER-START"],
- "HCAT_SERVICE_CHECK-SERVICE_CHECK": ["HIVE_SERVER-START"],
- "PIG_SERVICE_CHECK-SERVICE_CHECK": ["NODEMANAGER-START", "RESOURCEMANAGER-START"],
- "SQOOP_SERVICE_CHECK-SERVICE_CHECK": ["NODEMANAGER-START", "RESOURCEMANAGER-START"],
- "ZOOKEEPER_SERVICE_CHECK-SERVICE_CHECK": ["ZOOKEEPER_SERVER-START"],
- "ZOOKEEPER_QUORUM_SERVICE_CHECK-SERVICE_CHECK": ["ZOOKEEPER_SERVER-START"],
"STORM_SERVICE_CHECK-SERVICE_CHECK": ["NIMBUS-START", "SUPERVISOR-START", "STORM_UI_SERVER-START",
"DRPC_SERVER-START"],
- "ZOOKEEPER_SERVER-STOP" : ["HBASE_MASTER-STOP", "HBASE_REGIONSERVER-STOP"],
- "HBASE_MASTER-STOP": ["HBASE_REGIONSERVER-STOP"],
"NIMBUS-STOP" : ["SUPERVISOR-STOP", "STORM_UI_SERVER-STOP", "DRPC_SERVER-STOP"]
},
- "_comment" : "GLUSTERFS-specific dependencies",
- "optional_glusterfs": {
- "HBASE_MASTER-START": ["PEERSTATUS-START"],
- "GLUSTERFS_SERVICE_CHECK-SERVICE_CHECK": ["PEERSTATUS-START"]
- },
"_comment" : "Dependencies that are used when GLUSTERFS is not present in cluster",
"optional_no_glusterfs": {
- "SECONDARY_NAMENODE-START": ["NAMENODE-START"],
- "RESOURCEMANAGER-START": ["NAMENODE-START", "DATANODE-START"],
- "NODEMANAGER-START": ["NAMENODE-START", "DATANODE-START", "RESOURCEMANAGER-START"],
- "HISTORYSERVER-START": ["NAMENODE-START", "DATANODE-START"],
- "HBASE_MASTER-START": ["NAMENODE-START", "DATANODE-START"],
"APP_TIMELINE_SERVER-START": ["NAMENODE-START", "DATANODE-START"],
"FALCON_SERVER-START": ["NAMENODE-START", "DATANODE-START"],
- "FALCON_SERVICE_CHECK-SERVICE_CHECK": ["FALCON_SERVER-START"],
- "HIVE_SERVER-START": ["DATANODE-START"],
- "WEBHCAT_SERVER-START": ["DATANODE-START"],
- "HDFS_SERVICE_CHECK-SERVICE_CHECK": ["NAMENODE-START", "DATANODE-START",
- "SECONDARY_NAMENODE-START"],
- "MAPREDUCE2_SERVICE_CHECK-SERVICE_CHECK": ["NODEMANAGER-START",
- "RESOURCEMANAGER-START", "HISTORYSERVER-START", "YARN_SERVICE_CHECK-SERVICE_CHECK"],
- "YARN_SERVICE_CHECK-SERVICE_CHECK": ["NODEMANAGER-START", "RESOURCEMANAGER-START"],
- "RESOURCEMANAGER_SERVICE_CHECK-SERVICE_CHECK": ["RESOURCEMANAGER-START"],
- "PIG_SERVICE_CHECK-SERVICE_CHECK": ["RESOURCEMANAGER-START", "NODEMANAGER-START"],
- "NAMENODE-STOP": ["RESOURCEMANAGER-STOP", "NODEMANAGER-STOP",
- "HISTORYSERVER-STOP", "HBASE_MASTER-STOP", "FALCON_SERVER-STOP"],
- "DATANODE-STOP": ["RESOURCEMANAGER-STOP", "NODEMANAGER-STOP",
- "HISTORYSERVER-STOP", "HBASE_MASTER-STOP", "FALCON_SERVER-STOP"]
- },
- "_comment" : "Dependencies that are used in HA NameNode cluster",
- "namenode_optional_ha": {
- "NAMENODE-START": ["ZKFC-START", "JOURNALNODE-START", "ZOOKEEPER_SERVER-START"],
- "ZKFC-START": ["ZOOKEEPER_SERVER-START"]
- },
- "_comment" : "Dependencies that are used in ResourceManager HA cluster",
- "resourcemanager_optional_ha" : {
- "RESOURCEMANAGER-START": ["ZOOKEEPER_SERVER-START"]
+ "FALCON_SERVICE_CHECK-SERVICE_CHECK": ["FALCON_SERVER-START"]
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/438326f6/ambari-server/src/main/resources/stacks/HDP/2.2/role_command_order.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/role_command_order.json b/ambari-server/src/main/resources/stacks/HDP/2.2/role_command_order.json
index 72b49fa..e8bbe32 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.2/role_command_order.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.2/role_command_order.json
@@ -3,77 +3,12 @@
"_comment" : "blockedRole-blockedCommand: [blockerRole1-blockerCommand1, blockerRole2-blockerCommand2, ...]",
"general_deps" : {
"_comment" : "dependencies for all cases",
- "NIMBUS-START" : ["ZOOKEEPER_SERVER-START", "NODEMANAGER-START", "RESOURCEMANAGER-START"],
- "SUPERVISOR-START" : ["NIMBUS-START"],
- "STORM_UI_SERVER-START" : ["NIMBUS-START"],
- "DRPC_SERVER-START" : ["NIMBUS-START"],
- "STORM_REST_API-START" : ["NIMBUS-START", "STORM_UI_SERVER-START", "SUPERVISOR-START", "DRPC_SERVER-START"],
- "HBASE_MASTER-START": ["ZOOKEEPER_SERVER-START"],
- "HBASE_REGIONSERVER-START": ["HBASE_MASTER-START"],
- "OOZIE_SERVER-START": ["NODEMANAGER-START", "RESOURCEMANAGER-START"],
- "WEBHCAT_SERVER-START": ["NODEMANAGER-START", "HIVE_SERVER-START"],
- "HIVE_METASTORE-START": ["MYSQL_SERVER-START"],
- "HIVE_SERVER-START": ["NODEMANAGER-START", "MYSQL_SERVER-START"],
- "HUE_SERVER-START": ["HIVE_SERVER-START", "HCAT-START", "OOZIE_SERVER-START"],
- "FLUME_HANDLER-START": ["OOZIE_SERVER-START"],
"FALCON_SERVER-START": ["NAMENODE-START", "DATANODE-START", "OOZIE_SERVER-START"],
- "MAPREDUCE_SERVICE_CHECK-SERVICE_CHECK": ["NODEMANAGER-START", "RESOURCEMANAGER-START"],
- "OOZIE_SERVICE_CHECK-SERVICE_CHECK": ["OOZIE_SERVER-START"],
"WEBHCAT_SERVICE_CHECK-SERVICE_CHECK": ["WEBHCAT_SERVER-START"],
- "HBASE_SERVICE_CHECK-SERVICE_CHECK": ["HBASE_MASTER-START", "HBASE_REGIONSERVER-START"],
- "HIVE_SERVICE_CHECK-SERVICE_CHECK": ["HIVE_SERVER-START", "HIVE_METASTORE-START", "WEBHCAT_SERVER-START"],
- "HCAT_SERVICE_CHECK-SERVICE_CHECK": ["HIVE_SERVER-START"],
- "PIG_SERVICE_CHECK-SERVICE_CHECK": ["NODEMANAGER-START", "RESOURCEMANAGER-START"],
- "SQOOP_SERVICE_CHECK-SERVICE_CHECK": ["NODEMANAGER-START", "RESOURCEMANAGER-START"],
- "ZOOKEEPER_SERVICE_CHECK-SERVICE_CHECK": ["ZOOKEEPER_SERVER-START"],
- "ZOOKEEPER_QUORUM_SERVICE_CHECK-SERVICE_CHECK": ["ZOOKEEPER_SERVER-START"],
- "STORM_SERVICE_CHECK-SERVICE_CHECK": ["NIMBUS-START", "SUPERVISOR-START", "STORM_UI_SERVER-START",
- "DRPC_SERVER-START"],
"FLUME_SERVICE_CHECK-SERVICE_CHECK": ["FLUME_HANDLER-START"],
"FALCON_SERVICE_CHECK-SERVICE_CHECK": ["FALCON_SERVER-START"],
"SLIDER_SERVICE_CHECK-SERVICE_CHECK" : ["NODEMANAGER-START", "RESOURCEMANAGER-START"],
"KAFKA_BROKER-START" : ["ZOOKEEPER_SERVER-START"],
- "KAFKA_SERVICE_CHECK-SERVICE_CHECK": ["KAFKA_BROKER-START"],
- "ZOOKEEPER_SERVER-STOP" : ["HBASE_MASTER-STOP", "HBASE_REGIONSERVER-STOP"],
- "HBASE_MASTER-STOP": ["HBASE_REGIONSERVER-STOP"],
- "NIMBUS-STOP" : ["SUPERVISOR-STOP", "STORM_UI_SERVER-STOP", "DRPC_SERVER-STOP"]
- },
- "_comment" : "GLUSTERFS-specific dependencies",
- "optional_glusterfs": {
- "HBASE_MASTER-START": ["PEERSTATUS-START"],
- "GLUSTERFS_SERVICE_CHECK-SERVICE_CHECK": ["PEERSTATUS-START"]
- },
- "_comment" : "Dependencies that are used when GLUSTERFS is not present in cluster",
- "optional_no_glusterfs": {
- "SECONDARY_NAMENODE-START": ["NAMENODE-START"],
- "RESOURCEMANAGER-START": ["NAMENODE-START", "DATANODE-START"],
- "NODEMANAGER-START": ["NAMENODE-START", "DATANODE-START", "RESOURCEMANAGER-START"],
- "HISTORYSERVER-START": ["NAMENODE-START", "DATANODE-START"],
- "HBASE_MASTER-START": ["NAMENODE-START", "DATANODE-START"],
- "APP_TIMELINE_SERVER-START": ["NAMENODE-START", "DATANODE-START"],
- "FALCON_SERVER-START": ["NAMENODE-START", "DATANODE-START"],
- "FALCON_SERVICE_CHECK-SERVICE_CHECK": ["FALCON_SERVER-START"],
- "HIVE_SERVER-START": ["DATANODE-START"],
- "WEBHCAT_SERVER-START": ["DATANODE-START"],
- "HDFS_SERVICE_CHECK-SERVICE_CHECK": ["NAMENODE-START", "DATANODE-START",
- "SECONDARY_NAMENODE-START"],
- "MAPREDUCE2_SERVICE_CHECK-SERVICE_CHECK": ["NODEMANAGER-START",
- "RESOURCEMANAGER-START", "HISTORYSERVER-START", "YARN_SERVICE_CHECK-SERVICE_CHECK"],
- "YARN_SERVICE_CHECK-SERVICE_CHECK": ["NODEMANAGER-START", "RESOURCEMANAGER-START"],
- "RESOURCEMANAGER_SERVICE_CHECK-SERVICE_CHECK": ["RESOURCEMANAGER-START"],
- "PIG_SERVICE_CHECK-SERVICE_CHECK": ["RESOURCEMANAGER-START", "NODEMANAGER-START"],
- "NAMENODE-STOP": ["RESOURCEMANAGER-STOP", "NODEMANAGER-STOP",
- "HISTORYSERVER-STOP", "HBASE_MASTER-STOP", "FALCON_SERVER-STOP"],
- "DATANODE-STOP": ["RESOURCEMANAGER-STOP", "NODEMANAGER-STOP",
- "HISTORYSERVER-STOP", "HBASE_MASTER-STOP", "FALCON_SERVER-STOP"]
- },
- "_comment" : "Dependencies that are used in HA NameNode cluster",
- "namenode_optional_ha": {
- "NAMENODE-START": ["ZKFC-START", "JOURNALNODE-START", "ZOOKEEPER_SERVER-START"],
- "ZKFC-START": ["ZOOKEEPER_SERVER-START"]
- },
- "_comment" : "Dependencies that are used in ResourceManager HA cluster",
- "resourcemanager_optional_ha" : {
- "RESOURCEMANAGER-START": ["ZOOKEEPER_SERVER-START"]
+ "KAFKA_SERVICE_CHECK-SERVICE_CHECK": ["KAFKA_BROKER-START"]
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/438326f6/ambari-server/src/test/java/org/apache/ambari/server/stack/StackManagerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/stack/StackManagerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/stack/StackManagerTest.java
index 940c65a..9d75643 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/stack/StackManagerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/stack/StackManagerTest.java
@@ -30,11 +30,7 @@ import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.File;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.configuration.Configuration;
@@ -621,5 +617,25 @@ public class StackManagerTest {
verify(dao, actionMetadata, osFamily);
}
+ @Test
+ public void testMergeRoleCommandOrder() throws Exception {
+ StackInfo stack = stackManager.getStack("HDP", "2.1.1");
+ // merged role command order with parent stacks
+ Map<String, Object> roleCommandOrder = stack.getRoleCommandOrder().getContent();
+ assertTrue(roleCommandOrder.containsKey("optional_glusterfs"));
+ assertTrue(roleCommandOrder.containsKey("general_deps"));
+ assertTrue(roleCommandOrder.containsKey("optional_no_glusterfs"));
+ assertTrue(roleCommandOrder.containsKey("namenode_optional_ha"));
+ assertTrue(roleCommandOrder.containsKey("resourcemanager_optional_ha"));
+ Map<String, Object> generalDeps = (Map<String, Object>) roleCommandOrder.get("general_deps");
+ assertTrue(generalDeps.containsKey("HBASE_MASTER-START"));
+ assertTrue(generalDeps.containsKey("HBASE_REGIONSERVER-START"));
+ Map<String, Object> optionalNoGlusterfs = (Map<String, Object>) roleCommandOrder.get("optional_no_glusterfs");
+ assertTrue(optionalNoGlusterfs.containsKey("SECONDARY_NAMENODE-START"));
+ ArrayList<String> hbaseMasterStartValues = (ArrayList<String>) generalDeps.get("HBASE_MASTER-START");
+ assertTrue(hbaseMasterStartValues.get(0).equals("ZOOKEEPER_SERVER-START, ZOOKEEPER_SERVER-START"));
+
+ }
+
//todo: component override assertions
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/438326f6/ambari-server/src/test/resources/stacks/HDP/2.0.8/role_command_order.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.8/role_command_order.json b/ambari-server/src/test/resources/stacks/HDP/2.0.8/role_command_order.json
index 1404ef6..70d7802 100644
--- a/ambari-server/src/test/resources/stacks/HDP/2.0.8/role_command_order.json
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.8/role_command_order.json
@@ -3,7 +3,6 @@
"_comment" : "blockedRole-blockedCommand: [blockerRole1-blockerCommand1, blockerRole2-blockerCommand2, ...]",
"general_deps" : {
"_comment" : "dependencies for all cases",
- "HBASE_MASTER-START": ["ZOOKEEPER_SERVER-START"],
"HBASE_REGIONSERVER-START": ["HBASE_MASTER-START"],
"OOZIE_SERVER-START": ["JOBTRACKER-START", "TASKTRACKER-START"],
"WEBHCAT_SERVER-START": ["TASKTRACKER-START", "HIVE_SERVER-START"],
@@ -43,17 +42,9 @@
"GANGLIA_SERVER-UPGRADE" : ["SQOOP-UPGRADE"],
"GANGLIA_MONITOR-UPGRADE" : ["GANGLIA_SERVER-UPGRADE"]
},
- "_comment" : "GLUSTERFS-specific dependencies",
- "optional_glusterfs": {
- "HBASE_MASTER-START": ["PEERSTATUS-START"],
- "JOBTRACKER-START": ["PEERSTATUS-START"],
- "TASKTRACKER-START": ["PEERSTATUS-START"],
- "GLUSTERFS_SERVICE_CHECK-SERVICE_CHECK": ["PEERSTATUS-START"],
- "JOBTRACKER-UPGRADE": ["GLUSTERFS_CLIENT-UPGRADE"]
- },
"_comment" : "Dependencies that are used when GLUSTERFS is not present in cluster",
"optional_no_glusterfs": {
- "SECONDARY_NAMENODE-START": ["NAMENODE-START"],
+
"RESOURCEMANAGER-START": ["NAMENODE-START", "DATANODE-START"],
"NODEMANAGER-START": ["NAMENODE-START", "DATANODE-START", "RESOURCEMANAGER-START"],
"HISTORYSERVER-START": ["NAMENODE-START", "DATANODE-START"],
@@ -83,10 +74,6 @@
"NAMENODE-START": ["JOURNALNODE-START", "ZOOKEEPER_SERVER-START"],
"ZKFC-START": ["NAMENODE-START"],
"HDFS_SERVICE_CHECK-SERVICE_CHECK": ["ZKFC-START"]
- },
- "_comment" : "Dependencies that are used in ResourceManager HA cluster",
- "resourcemanager_optional_ha" : {
- "RESOURCEMANAGER-START": ["ZOOKEEPER_SERVER-START"]
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/438326f6/ambari-server/src/test/resources/stacks/HDP/2.1.1/role_command_order.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.1.1/role_command_order.json b/ambari-server/src/test/resources/stacks/HDP/2.1.1/role_command_order.json
index 1404ef6..656bb63 100644
--- a/ambari-server/src/test/resources/stacks/HDP/2.1.1/role_command_order.json
+++ b/ambari-server/src/test/resources/stacks/HDP/2.1.1/role_command_order.json
@@ -3,8 +3,7 @@
"_comment" : "blockedRole-blockedCommand: [blockerRole1-blockerCommand1, blockerRole2-blockerCommand2, ...]",
"general_deps" : {
"_comment" : "dependencies for all cases",
- "HBASE_MASTER-START": ["ZOOKEEPER_SERVER-START"],
- "HBASE_REGIONSERVER-START": ["HBASE_MASTER-START"],
+ "HBASE_MASTER-START": ["ZOOKEEPER_SERVER-START, ZOOKEEPER_SERVER-START"],
"OOZIE_SERVER-START": ["JOBTRACKER-START", "TASKTRACKER-START"],
"WEBHCAT_SERVER-START": ["TASKTRACKER-START", "HIVE_SERVER-START"],
"HIVE_METASTORE-START": ["MYSQL_SERVER-START"],
@@ -77,16 +76,6 @@
"DATANODE-UPGRADE": ["SECONDARY_NAMENODE-UPGRADE"],
"HDFS_CLIENT-UPGRADE": ["DATANODE-UPGRADE"],
"JOBTRACKER-UPGRADE": ["HDFS_CLIENT-UPGRADE"]
- },
- "_comment" : "Dependencies that are used in HA NameNode cluster",
- "namenode_optional_ha": {
- "NAMENODE-START": ["JOURNALNODE-START", "ZOOKEEPER_SERVER-START"],
- "ZKFC-START": ["NAMENODE-START"],
- "HDFS_SERVICE_CHECK-SERVICE_CHECK": ["ZKFC-START"]
- },
- "_comment" : "Dependencies that are used in ResourceManager HA cluster",
- "resourcemanager_optional_ha" : {
- "RESOURCEMANAGER-START": ["ZOOKEEPER_SERVER-START"]
}
}