#!/bin/bash # # Copyright (c) 2015 Brocade Communications Systems, Inc. and others. All rights reserved. # Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. # # This program and the accompanying materials are made available under the # terms of the Eclipse Public License v1.0 which accompanies this distribution, # and is available at http://www.eclipse.org/legal/epl-v10.html # function usage() { # Print any error messages test "$1" != "" && echo " ERROR: $1" # Print standard usage help cat << EOF This script is used to configure cluster parameters on this controller. The user should restart controller to apply changes. Usage: $0 - seed_nodes_list: List of seed nodes, separated by comma or space. The script checks that one (any) of the the controller's active IP addresses is present in the seed_nodes_list. When running this script on multiple seed nodes, keep the seed_node_list same on all nodes. Optionally, shards can be configured in a more granular way by modifying the file "custom_shard_configs.txt" in the same folder as this tool. Please see that file for more details. This script is currently limited to IPv4 addresses. If you have problems running this script, please use 'configure_cluster.sh'. EOF exit 1 } function start_banner { cat < ${MODULESHARDSCONF} modules_builder > ${MODULESCONF} cat ${MODULESCONF} fi echo "Configuring replication type in module-shards.conf" sed -i -e "/^[^#].*replicas[ ]*=/ { :loop /.*\]/ b done; N; b loop; :done s/replicas.*\]/replicas = [${MEMBER_NAME_LIST}]/}" ${MODULESHARDSCONF} } function verify_configuration_files { # Constants BIN_DIR=`dirname $0` test ${BIN_DIR} == '.' && BIN_DIR=${PWD} CONTROLLER_DIR=`dirname ${BIN_DIR}` CONF_DIR=${CONTROLLER_DIR}/configuration/initial AKKACONF=${CONF_DIR}/akka.conf MODULESCONF=${CONF_DIR}/modules.conf MODULESHARDSCONF=${CONF_DIR}/module-shards.conf # Verify configuration files are present in expected location. if [ ! -f ${AKKACONF} -o ! -f ${MODULESHARDSCONF} ]; then # Check if the configuration files exist in the system # directory, then copy them over. ORIG_CONF_DIR=${CONTROLLER_DIR}/system/org/opendaylight/controller/sal-clustering-config version=$(sed -n -e 's/.*\(.*\)<\/version>/\1/p' ${ORIG_CONF_DIR}/maven-metadata-local.xml) ORIG_CONF_DIR=${ORIG_CONF_DIR}/${version} ORIG_AKKA_CONF=sal-clustering-config-${version}-akkaconf.xml ORIG_MODULES_CONF=sal-clustering-config-${version}-moduleconf.xml ORIG_MODULESHARDS_CONF=sal-clustering-config-${version}-moduleshardconf.xml if [ -f ${ORIG_CONF_DIR}/${ORIG_AKKA_CONF} -a \ -f ${ORIG_CONF_DIR}/${ORIG_MODULES_CONF} -a \ -f ${ORIG_CONF_DIR}/${ORIG_MODULESHARDS_CONF} ]; then cat <