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) |