diff options
| author | Kaleb S. KEITHLEY <kkeithle@redhat.com> | 2015-06-22 11:39:11 -0400 | 
|---|---|---|
| committer | Kaleb KEITHLEY <kkeithle@redhat.com> | 2015-06-26 12:35:35 -0700 | 
| commit | 254218fa39d9317f759b4bfb4433478586eda0e3 (patch) | |
| tree | f8deec03098feb8312bfbbf499dfdf8dcc38957c | |
| parent | 87af7e72d8be95ac0f2ade88f3a9ba16392fd158 (diff) | |
common-ha: fix delete-node
N.B. delete-node is a designed to be "disruptive"
surgically delete a node from the config and stop nfs-ganesh on that
node.
finish the implementation and fix a few minor issues
Change-Id: I964bb72a76ee635b5fc484ec5b541e69eeececcd
BUG: 1234474
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
Reviewed-on: http://review.gluster.org/11353
Reviewed-by: soumya k <skoduri@redhat.com>
Reviewed-by: Meghana M <mmadhusu@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
| -rwxr-xr-x | extras/ganesha/scripts/ganesha-ha.sh | 99 | 
1 files changed, 55 insertions, 44 deletions
diff --git a/extras/ganesha/scripts/ganesha-ha.sh b/extras/ganesha/scripts/ganesha-ha.sh index a935ab4b96b..ccaa3d81338 100755 --- a/extras/ganesha/scripts/ganesha-ha.sh +++ b/extras/ganesha/scripts/ganesha-ha.sh @@ -31,6 +31,7 @@ eval $(echo ${cfgline} | grep -F CONFFILE=)  GANESHA_CONF=${CONFFILE:-/etc/ganesha/ganesha.conf}  RHEL6_PCS_CNAME_OPTION="--name" +SECRET_PEM="/var/lib/glusterd/nfs/secret.pem"  usage() { @@ -69,10 +70,10 @@ manage_service ()          if [ "$SERVICE_MAN" == "/usr/sbin/systemctl" ]          then                  ssh -oPasswordAuthentication=no -oStrictHostKeyChecking=no -i \ -/var/lib/glusterd/nfs/secret.pem root@${new_node} "$SERVICE_MAN  ${action} nfs-ganesha" +${SECRET_PEM} root@${new_node} "$SERVICE_MAN  ${action} nfs-ganesha"          else                  ssh -oPasswordAuthentication=no -oStrictHostKeyChecking=no -i \ -/var/lib/glusterd/nfs/secret.pem root@${new_node} "$SERVICE_MAN nfs-ganesha ${action}" +${SECRET_PEM} root@${new_node} "$SERVICE_MAN nfs-ganesha ${action}"          fi  } @@ -184,15 +185,12 @@ setup_copy_config()      local short_host=$(hostname -s)      local tganesha_conf=$(mktemp -u) -    if [ -e /var/lib/glusterd/nfs/secret.pem ]; then +    if [ -e ${SECRET_PEM} ]; then          while [[ ${1} ]]; do              current_host=`echo ${1} | cut -d "." -f 1`              if [ ${short_host} != ${current_host} ]; then -                cp ${HA_CONFDIR}/ganesha-ha.conf ${tganesha_conf}                  scp -oPasswordAuthentication=no -oStrictHostKeyChecking=no -i \ -/var/lib/glusterd/nfs/secret.pem ${short_host}:${tganesha_conf}\ - ${1}:${HA_CONFDIR}/ganesha-ha.conf -                rm -rf ${tganesha_conf} +${SECRET_PEM} ${HA_CONFDIR}/ganesha-ha.conf ${1}:${HA_CONFDIR}/                  if [ $? -ne 0 ]; then                      logger "warning: scp ganesha-ha.conf to ${1} failed"                  fi @@ -209,27 +207,24 @@ refresh_config ()          local short_host=$(hostname -s)          local VOL=${1}          local HA_CONFDIR=${2} -        local tganesha_export=$(mktemp -u)          removed_id=`cat $HA_CONFDIR/exports/export.$VOL.conf |\  grep Export_Id | cut -d " " -f8` -        if [ -e /var/lib/glusterd/nfs/secret.pem ]; then +        if [ -e ${SECRET_PEM} ]; then          while [[ ${3} ]]; do  	    current_host=`echo ${3} | cut -d "." -f 1`              if [ ${short_host} != ${current_host} ]; then -                cp ${HA_CONFDIR}/exports/export.$VOL.conf ${tganesha_export}                  scp -oPasswordAuthentication=no -oStrictHostKeyChecking=no -i \ -/var/lib/glusterd/nfs/secret.pem ${short_host}:${tganesha_export} \ -${current_host}:${HA_CONFDIR}/exports/export.$VOL.conf -                 rm -rf ${tganesha_export} +${SECRET_PEM} ${HA_CONFDIR}/exports/export.$VOL.conf \ +${current_host}:${HA_CONFDIR}/exports/                   ssh -oPasswordAuthentication=no -oStrictHostKeyChecking=no -i \ -/var/lib/glusterd/nfs/secret.pem root@${current_host} "dbus-send --print-reply --system \ +${SECRET_PEM} root@${current_host} "dbus-send --print-reply --system \  --dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \  org.ganesha.nfsd.exportmgr.RemoveExport uint16:$removed_id"                   sleep 1                   ssh -oPasswordAuthentication=no -oStrictHostKeyChecking=no -i \ -/var/lib/glusterd/nfs/secret.pem root@${current_host} "dbus-send  --system \ +${SECRET_PEM} root@${current_host} "dbus-send  --system \  --dest=org.ganesha.nfsd  /org/ganesha/nfsd/ExportMgr \  org.ganesha.nfsd.exportmgr.AddExport  string:$HA_CONFDIR/exports/export.$VOL.conf \  string:\"EXPORT(Path=/$VOL)\"" @@ -256,11 +251,23 @@ string:"EXPORT(Path=/$VOL)"  copy_export_config ()  { -        local new_node=${1} -        scp -oPasswordAuthentication=no -oStrictHostKeyChecking=no -i \ -/var/lib/glusterd/nfs/secret.pem ${HA_VOL_SERVER}:${GANESHA_CONF} ${new_node}:/etc/ganesha/ -        scp -r -oPasswordAuthentication=no -oStrictHostKeyChecking=no -i \ -/var/lib/glusterd/nfs/secret.pem ${HA_VOL_SERVER}:${HA_CONFDIR}/exports/ ${new_node}:${HA_CONFDIR}/ +    local new_node=${1} +    local tganesha_conf=$(mktemp -u) +    local tganesha_exports=$(mktemp -d) + +    # avoid prompting for password, even with password-less scp +    # scp $host1:$file $host2:$file prompts for the password +    scp -oPasswordAuthentication=no -oStrictHostKeyChecking=no -i \ +${SECRET_PEM} ${HA_VOL_SERVER}:${GANESHA_CONF} ${tganesha_conf} +    scp -oPasswordAuthentication=no -oStrictHostKeyChecking=no -i \ +${SECRET_PEM} ${tganesha_conf} ${new_node}:${GANESHA_CONF} +    rm -f ${tganesha_conf} + +    scp -r -oPasswordAuthentication=no -oStrictHostKeyChecking=no -i \ +${SECRET_PEM} ${HA_VOL_SERVER}:${HA_CONFDIR}/exports/ ${tganesha_exports} +    scp -r -oPasswordAuthentication=no -oStrictHostKeyChecking=no -i \ +${SECRET_PEM} ${tganesha_exports} ${new_node}:${HA_CONFDIR}/ +    rm -rf ${tganesha_exports}  } @@ -706,7 +713,7 @@ deletenode_delete_resources()      # recompute their constraints      clear_resources ${cibfile} ${HA_SERVERS}      recreate_resources ${cibfile} ${ha_servers} -    HA_SERVERS="${ha_servers}" +    HA_SERVERS=$(echo "${ha_servers}" | sed -e "s/  / /")      create_virt_ip_constraints ${cibfile} ${HA_SERVERS} @@ -804,6 +811,7 @@ setup_state_volume()  } +  main()  { @@ -877,36 +885,36 @@ main()          node=${1}; shift          vip=${1}; shift -       logger "adding ${node} with ${vip} to ${HA_NAME}" +        logger "adding ${node} with ${vip} to ${HA_NAME}" -       copy_export_config ${node} ${HA_CONFDIR} +        copy_export_config ${node} ${HA_CONFDIR} -       determine_service_manager +        determine_service_manager -       manage_service "start" ${node} +        manage_service "start" ${node} -       determine_servers "add" +        determine_servers "add" -       pcs cluster node add ${node} -       if [ $? -ne 0 ]; then +        pcs cluster node add ${node} +        if [ $? -ne 0 ]; then              logger "warning: pcs cluster node add ${node} failed" -       fi +        fi -       addnode_create_resources ${node} ${vip} -       #Subsequent add-node recreates resources for all the nodes -       #that already exist in the cluster. The nodes are picked up -       #from the entries in the ganesha-ha.conf file. Adding the -       #newly added node to the file so that the resources specfic -       #to this node is correctly recreated in the future. -       echo "VIP_$node=\"$vip\"" >> ${HA_CONFDIR}/ganesha-ha.conf +        addnode_create_resources ${node} ${vip} +        #Subsequent add-node recreates resources for all the nodes +        #that already exist in the cluster. The nodes are picked up +        #from the entries in the ganesha-ha.conf file. Adding the +        #newly added node to the file so that the resources specfic +        #to this node is correctly recreated in the future. +        echo "VIP_$node=\"$vip\"" >> ${HA_CONFDIR}/ganesha-ha.conf -       NEW_NODES="$HA_CLUSTER_NODES,$node" +        NEW_NODES="$HA_CLUSTER_NODES,$node" -       sed -i s/HA_CLUSTER_NODES.*/"HA_CLUSTER_NODES=\"$NEW_NODES\""/ \ +        sed -i s/HA_CLUSTER_NODES.*/"HA_CLUSTER_NODES=\"$NEW_NODES\""/ \  $HA_CONFDIR/ganesha-ha.conf -       HA_SERVERS="${HA_SERVERS} ${node}" +        HA_SERVERS="${HA_SERVERS} ${node}" -       setup_copy_config ${HA_SERVERS} +        setup_copy_config ${HA_SERVERS}          ;;      delete | --delete) @@ -923,13 +931,16 @@ $HA_CONFDIR/ganesha-ha.conf              logger "warning: pcs cluster node remove ${node} failed"          fi -        # TODO: delete node's directory in shared state +        ha_servers=$(echo ${HA_SERVERS} | sed -e "s/ /,/") +        sed -i "s/^HA_CLUSTER_NODES=.*$/HA_CLUSTER_NODES=\"${ha_servers// /,}\"/" ${HA_CONFDIR}/ganesha-ha.conf -        determine_service_manager +        setup_copy_config ${HA_SERVERS} -        manage-service "stop" +        rm -rf ${HA_VOL_MNT}/nfs-ganesha/{node} -        cleanup_ganesha_config ${HA_CONFDIR} +        determine_service_manager + +        manage_service "stop" ${node}          ;;      status | --status)  | 
