common-ha: handle long node names and node names with '-' and '.' in them

sourcing the /etc/ganesha/ganesha-ha.conf file seemed like a simple
and elegant solution for reading config params, but bash variable names
do not allow '-' and '.' in them.

Change-Id: I0d2e6cb21017472b1e0f764335cf28946cca95f0
BUG: 1225572
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
Reviewed-on: http://review.gluster.org/10952
Tested-by: NetBSD Build System
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Niels de Vos <ndevos@redhat.com>
This commit is contained in:
Kaleb S. KEITHLEY 2015-05-27 15:00:00 -04:00 committed by Niels de Vos
parent 378fa28f2e
commit 54b193760c
2 changed files with 59 additions and 35 deletions

View File

@ -1,12 +1,26 @@
# Name of the HA cluster created.
# must be unique within the subnet
HA_NAME="ganesha-ha-360"
# The server from which you intend to mount
# the shared volume.
#
# The gluster server from which to mount the shared data volume.
HA_VOL_SERVER="server1"
#
# N.B. you may use short names, long names, or IP addresses. Once you
# select one, stay with it as it will be mildly unpleasant to clean up
# if you switch later on. Ensure that all names - short and/or long -
# are in DNS or /etc/hosts on all machines in the cluster.
#
# The subset of nodes of the Gluster Trusted Pool
# that forms the ganesha HA cluster. IP/Hostname
# is specified.
HA_CLUSTER_NODES="server1,server2,..."
# Virtual IPs of each of the nodes specified above.
VIP_server1="10.x.x.x"
VIP_server2="10.x.x.x"
#HA_CLUSTER_NODES="server1.lab.redhat.com,server2.lab.redhat.com,..."
#HA_CLUSTER_NODES="10.0.1.1,10.0.1.2,..."
#
# Virtual IPs for each of the nodes specified above.
VIP_server1="10.0.2.1"
VIP_server2="10.0.2.2"
#VIP_server1.lab.redhat.com="10.0.2.1"
#VIP_server2.lab.redhat.com="10.0.2.2"
#VIP_10.0.1.1="10.0.2.1"
#VIP_10.0.1.2="10.0.2.2"

View File

@ -363,10 +363,7 @@ setup_create_resources()
while [[ ${1} ]]; do
# ipaddr=$(grep ^${1} ${HA_CONFIG_FILE} | cut -d = -f 2)
ipaddrx="VIP_${1//-/_}"
ipaddr=${!ipaddrx}
ipaddr=$(grep "^VIP_${1}=" ${HA_CONFDIR}/ganesha-ha.conf | cut -d = -f 2)
pcs -f ${cibfile} resource create ${1}-cluster_ip-1 ocf:heartbeat:IPaddr ip=${ipaddr} cidr_netmask=32 op monitor interval=15s
if [ $? -ne 0 ]; then
@ -460,9 +457,7 @@ recreate_resources()
local cibfile=${1}; shift
while [[ ${1} ]]; do
ipaddrx="VIP_${1//-/_}"
ipaddr=${!ipaddrx}
ipaddr=$(grep "VIP_${1}=" ${HA_CONFDIR}/ganesha-ha.conf | cut -d = -f 2)
pcs -f ${cibfile} resource create ${1}-cluster_ip-1 ocf:heartbeat:IPaddr ip=${ipaddr} cidr_netmask=32 op monitor interval=15s
if [ $? -ne 0 ]; then
@ -679,43 +674,52 @@ setup_state_volume()
local longname=""
local shortname=""
local dname=""
local dirname=""
longname=$(hostname)
dname=${longname#$(hostname -s)}
while [[ ${1} ]]; do
if [ ! -d ${mnt}/nfs-ganesha/${1}${dname} ]; then
mkdir ${mnt}/nfs-ganesha/${1}${dname}
if [[ ${1} == *${dname} ]]; then
dirname=${1}
else
dirname=${1}${dname}
fi
if [ ! -d ${mnt}/nfs-ganesha/${1}${dname}/nfs ]; then
mkdir ${mnt}/nfs-ganesha/${1}${dname}/nfs
if [ ! -d ${mnt}/nfs-ganesha/${dirname} ]; then
mkdir ${mnt}/nfs-ganesha/${dirname}
fi
if [ ! -d ${mnt}/nfs-ganesha/${1}${dname}/nfs/ganesha ]; then
mkdir ${mnt}/nfs-ganesha/${1}${dname}/nfs/ganesha
if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs ]; then
mkdir ${mnt}/nfs-ganesha/${dirname}/nfs
fi
if [ ! -d ${mnt}/nfs-ganesha/${1}${dname}/nfs/statd ]; then
mkdir ${mnt}/nfs-ganesha/${1}${dname}/nfs/statd
if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha ]; then
mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha
fi
touch ${mnt}/nfs-ganesha/${1}${dname}/nfs/state
if [ ! -d ${mnt}/nfs-ganesha/${1}${dname}/nfs/ganesha/v4recov ]; then
mkdir ${mnt}/nfs-ganesha/${1}${dname}/nfs/ganesha/v4recov
if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/statd ]; then
mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/statd
fi
if [ ! -d ${mnt}/nfs-ganesha/${1}${dname}/nfs/ganesha/v4old ]; then
mkdir ${mnt}/nfs-ganesha/${1}${dname}/nfs/ganesha/v4old
touch ${mnt}/nfs-ganesha/${dirname}/nfs/state
if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/v4recov ]; then
mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/v4recov
fi
if [ ! -d ${mnt}/nfs-ganesha/${1}${dname}/nfs/statd/sm ]; then
mkdir ${mnt}/nfs-ganesha/${1}${dname}/nfs/statd/sm
if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/v4old ]; then
mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/v4old
fi
if [ ! -d ${mnt}/nfs-ganesha/${1}${dname}/nfs/statd/sm.bak ]; then
mkdir ${mnt}/nfs-ganesha/${1}${dname}/nfs/statd/sm.bak
if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm ]; then
mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm
fi
if [ ! -d ${mnt}/nfs-ganesha/${1}${dname}/nfs/statd/state ]; then
mkdir ${mnt}/nfs-ganesha/${1}${dname}/nfs/statd/state
if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm.bak ]; then
mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm.bak
fi
if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/statd/state ]; then
mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/statd/state
fi
for server in ${HA_SERVERS} ; do
if [ ${server} != ${1}${dname} ]; then
ln -s ${mnt}/nfs-ganesha/${server}/nfs/ganesha ${mnt}/nfs-ganesha/${1}${dname}/nfs/ganesha/${server}
ln -s ${mnt}/nfs-ganesha/${server}/nfs/statd ${mnt}/nfs-ganesha/${1}${dname}/nfs/statd/${server}
if [ ${server} != ${dirname} ]; then
ln -s ${mnt}/nfs-ganesha/${server}/nfs/ganesha ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/${server}
ln -s ${mnt}/nfs-ganesha/${server}/nfs/statd ${mnt}/nfs-ganesha/${dirname}/nfs/statd/${server}
fi
done
shift
@ -728,10 +732,16 @@ main()
{
local cmd=${1}; shift
HA_CONFDIR=${1}; shift
local ha_conf=${HA_CONFDIR}/ganesha-ha.conf
local node=""
local vip=""
. ${HA_CONFDIR}/ganesha-ha.conf
ha_name=$(grep ^HA_NAME= ${ha_conf} | cut -d = -f 2)
HA_NAME=${ha_name//\"/}
ha_vol_server=$(grep ^HA_VOL_SERVER= ${ha_conf} | cut -d = -f 2)
HA_VOL_SERVER=${ha_vol_server//\"/}
ha_cluster_nodes=$(grep ^HA_CLUSTER_NODES= ${ha_conf} | cut -d = -f 2)
HA_CLUSTER_NODES=${ha_cluster_nodes//\"/}
if [ -e /etc/os-release ]; then
RHEL6_PCS_CNAME_OPTION=""