From f823a0cf796957b450521d731d37be7af09951ec Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Wed, 27 May 2015 15:00:00 -0400 Subject: 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. also fix incorrect path to shared volume > backport of http://review.gluster.org/10952, BZ 1225572 Change-Id: I0d2e6cb21017472b1e0f764335cf28946cca95f0 BUG: 1226962 Signed-off-by: Kaleb S. KEITHLEY Reviewed-on: http://review.gluster.org/10952 Tested-by: Gluster Build System Reviewed-by: Niels de Vos Reviewed-on: http://review.gluster.org/11034 --- extras/ganesha/scripts/ganesha-ha.sh | 70 ++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 30 deletions(-) (limited to 'extras/ganesha/scripts') diff --git a/extras/ganesha/scripts/ganesha-ha.sh b/extras/ganesha/scripts/ganesha-ha.sh index 79a99c49c33..bd344fa50f1 100755 --- a/extras/ganesha/scripts/ganesha-ha.sh +++ b/extras/ganesha/scripts/ganesha-ha.sh @@ -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/${dirname} ]; then + mkdir ${mnt}/nfs-ganesha/${dirname} fi - if [ ! -d ${mnt}/nfs-ganesha/${1}${dname}/nfs ]; then - mkdir ${mnt}/nfs-ganesha/${1}${dname}/nfs + if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs ]; then + mkdir ${mnt}/nfs-ganesha/${dirname}/nfs 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/ganesha ]; then + mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha 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/statd ]; then + mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/statd 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 + 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/ganesha/v4old ]; then - mkdir ${mnt}/nfs-ganesha/${1}${dname}/nfs/ganesha/v4old + 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 ]; then - mkdir ${mnt}/nfs-ganesha/${1}${dname}/nfs/statd/sm + 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/sm.bak ]; then - mkdir ${mnt}/nfs-ganesha/${1}${dname}/nfs/statd/sm.bak + 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/${1}${dname}/nfs/statd/state ]; then - mkdir ${mnt}/nfs-ganesha/${1}${dname}/nfs/statd/state + 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="" -- cgit