nodeDef.setNodeId(node.getName()); // temp id, will be updated when installed.
nodeDef.setConfigs(null);
this.nodes.add(nodeDef);
for (String type : group.getRoles()) {
AvailableServiceRole roleType = AvailableServiceRoleContainer.load(type);
AvailableServiceRole serviceType = roleType.getParent();
if (serviceType.getDisplayName().equals("IMPALA")) {
hasImpala = true;
}
CmServiceDef service = serviceDefOfType(serviceType, blueprint.getConfiguration());
CmRoleDef roleDef = new CmRoleDef();
roleDef.setName(node.getName() + NAME_SEPARATOR + service.getType().getName() + NAME_SEPARATOR + roleType.getName()); // temp name
roleDef.setDisplayName(roleDef.getName());
roleDef.setType(roleType);
roleDef.setNodeRef(nodeDef.getNodeId());
switch (roleType.getDisplayName()) {
case "HDFS_NAMENODE":
roleDef.addConfig(Constants.CONFIG_DFS_NAME_DIR_LIST, dataDirs(node.getVolumes(), "/dfs/nn"));
if (failoverEnabled) {
if (!alreadyHasActive) {
nameServiceIndex++;
}
roleDef.addConfig(Constants.CONFIG_AUTO_FAILOVER_ENABLED, "true");
roleDef.addConfig(Constants.CONFIG_DFS_FEDERATION_NAMESERVICE, "nameservice" + nameServiceIndex.toString()); // TODO: federation
roleDef.addConfig(Constants.CONFIG_DFS_NAMENODE_QUORUM_JOURNAL_NAME, "nameservice" + nameServiceIndex.toString());
//roleDef.addConfig(Constants.CONFIG_DFS_NAMESERVICE_MOUNTPOINTS, "/");
roleDef.setActive(!alreadyHasActive);
// auto-complete Failover Controller role
if (!group.getRoles().contains("HDFS_FAILOVER_CONTROLLER")) {
CmRoleDef failoverRole = new CmRoleDef();
AvailableServiceRole failoverRoleType = AvailableServiceRoleContainer.load("HDFS_FAILOVER_CONTROLLER");
failoverRole.setName(node.getName() + NAME_SEPARATOR + service.getType().getName() + NAME_SEPARATOR + failoverRoleType.getName()); // temp name
failoverRole.setType(failoverRoleType);
failoverRole.setNodeRef(nodeDef.getNodeId());
failoverRole.addConfigs(blueprint.getConfiguration());
failoverRole.addConfigs(group.getConfiguration()); // group level configs will override cluster level configs
failoverRole.setActive(!alreadyHasActive);