3604df
From 31bdb2c85a4418c42fca892533eb95104580218c Mon Sep 17 00:00:00 2001
3604df
From: "Kaleb S. KEITHLEY" <kkeithle@redhat.com>
3604df
Date: Fri, 16 Dec 2016 07:32:40 -0500
3604df
Subject: [PATCH 244/246] common-ha: add node create new node dirs in shared
3604df
 storage
3604df
3604df
When adding a node to the ganesha HA cluster, create the directory
3604df
tree in shared storage for the added node and create sets of symlinks
3604df
to match what is/was created for the other nodes.  I.e. in a four
3604df
node cluster the new node needs a set of links to the four existing
3604df
nodes:
3604df
 /run/gluster/shared/nfs-ganesha/$new/nfs/{ganesha,statd}/$e1 -> e1
3604df
 /run/gluster/shared/nfs-ganesha/$new/nfs/{ganesha,statd}/$e2 -> e2
3604df
 /run/gluster/shared/nfs-ganesha/$new/nfs/{ganesha,statd}/$e3 -> e3
3604df
 /run/gluster/shared/nfs-ganesha/$new/nfs/{ganesha,statd}/$e4 -> e4
3604df
and all the existing nodes need links added for the new node:
3604df
 /run/gluster/shared/nfs-ganesha/$e1/nfs/{ganesha,statd}/$new -> new
3604df
 /run/gluster/shared/nfs-ganesha/$e2/nfs/{ganesha,statd}/$new -> new
3604df
 /run/gluster/shared/nfs-ganesha/$e3/nfs/{ganesha,statd}/$new -> new
3604df
 /run/gluster/shared/nfs-ganesha/$e5/nfs/{ganesha,statd}/$new -> new
3604df
3604df
Likewise when deleting, remove the dir and symlinks.
3604df
3604df
upstream master change ID Id2f78f70946f29c3503e1e6db141b66cb431e0ea
3604df
upstream master bz: 1400613
3604df
upstream master  http://review.gluster.org/16036
3604df
3604df
Change-Id: Ibb8aebc54b61429e6a3e9b2b6fa3bb16809240c7
3604df
BUG: 1400599
3604df
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
3604df
Reviewed-on: https://code.engineering.redhat.com/gerrit/93172
3604df
Reviewed-by: Jiffin Thottan <jthottan@redhat.com>
3604df
Reviewed-by: Soumya Koduri <skoduri@redhat.com>
3604df
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
3604df
---
3604df
 extras/ganesha/scripts/ganesha-ha.sh | 95 +++++++++++++++++++++++++++++++++++-
3604df
 1 file changed, 94 insertions(+), 1 deletion(-)
3604df
3604df
diff --git a/extras/ganesha/scripts/ganesha-ha.sh b/extras/ganesha/scripts/ganesha-ha.sh
3604df
index 020ad3e..99b71e7 100644
3604df
--- a/extras/ganesha/scripts/ganesha-ha.sh
3604df
+++ b/extras/ganesha/scripts/ganesha-ha.sh
3604df
@@ -800,6 +800,96 @@ setup_state_volume()
3604df
 }
3604df
 
3604df
 
3604df
+addnode_state_volume()
3604df
+{
3604df
+    local newnode=${1}; shift
3604df
+    local mnt=${HA_VOL_MNT}
3604df
+    local longname=""
3604df
+    local dname=""
3604df
+    local dirname=""
3604df
+
3604df
+    longname=$(hostname)
3604df
+    dname=${longname#$(hostname -s)}
3604df
+
3604df
+    if [[ ${newnode} == *${dname} ]]; then
3604df
+        dirname=${newnode}
3604df
+    else
3604df
+        dirname=${newnode}${dname}
3604df
+    fi
3604df
+
3604df
+    if [ ! -d ${mnt}/nfs-ganesha/tickle_dir ]; then
3604df
+        mkdir ${mnt}/nfs-ganesha/tickle_dir
3604df
+    fi
3604df
+    if [ ! -d ${mnt}/nfs-ganesha/${dirname} ]; then
3604df
+        mkdir ${mnt}/nfs-ganesha/${dirname}
3604df
+    fi
3604df
+    if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs ]; then
3604df
+        mkdir ${mnt}/nfs-ganesha/${dirname}/nfs
3604df
+    fi
3604df
+    if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha ]; then
3604df
+        mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha
3604df
+    fi
3604df
+    if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/statd ]; then
3604df
+        mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/statd
3604df
+    fi
3604df
+    if [ ! -e ${mnt}/nfs-ganesha/${dirname}/nfs/state ]; then
3604df
+        touch ${mnt}/nfs-ganesha/${dirname}/nfs/state
3604df
+    fi
3604df
+    if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/v4recov ]; then
3604df
+        mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/v4recov
3604df
+    fi
3604df
+    if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/v4old ]; then
3604df
+        mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/v4old
3604df
+    fi
3604df
+    if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm ]; then
3604df
+        mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm
3604df
+    fi
3604df
+    if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm.bak ]; then
3604df
+        mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm.bak
3604df
+    fi
3604df
+    if [ ! -e ${mnt}/nfs-ganesha/${dirname}/nfs/statd/state ]; then
3604df
+        touch ${mnt}/nfs-ganesha/${dirname}/nfs/statd/state
3604df
+    fi
3604df
+
3604df
+    for server in ${HA_SERVERS} ; do
3604df
+        ln -s ${mnt}/nfs-ganesha/${server}/nfs/ganesha ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/${server}
3604df
+        ln -s ${mnt}/nfs-ganesha/${server}/nfs/statd ${mnt}/nfs-ganesha/${dirname}/nfs/statd/${server}
3604df
+
3604df
+        ln -s ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha ${mnt}/nfs-ganesha/${server}/nfs/ganesha/${dirname}
3604df
+        ln -s ${mnt}/nfs-ganesha/${dirname}/nfs/statd ${mnt}/nfs-ganesha/${server}/nfs/statd/${dirname}
3604df
+    done
3604df
+
3604df
+}
3604df
+
3604df
+
3604df
+delnode_state_volume()
3604df
+{
3604df
+    local delnode=${1}; shift
3604df
+    local mnt=${HA_VOL_MNT}
3604df
+    local longname=""
3604df
+    local dname=""
3604df
+    local dirname=""
3604df
+
3604df
+    longname=$(hostname)
3604df
+    dname=${longname#$(hostname -s)}
3604df
+
3604df
+    if [[ ${delnode} == *${dname} ]]; then
3604df
+        dirname=${delnode}
3604df
+    else
3604df
+        dirname=${delnode}${dname}
3604df
+    fi
3604df
+
3604df
+    rm -rf ${mnt}/nfs-ganesha/${dirname}
3604df
+
3604df
+    for server in ${HA_SERVERS} ; do
3604df
+        if [[ "${server}" != "${dirname}" ]]; then
3604df
+            rm -f ${mnt}/nfs-ganesha/${server}/nfs/ganesha/${dirname}
3604df
+            rm -f ${mnt}/nfs-ganesha/${server}/nfs/statd/${dirname}
3604df
+        fi
3604df
+    done
3604df
+}
3604df
+
3604df
+
3604df
 status()
3604df
 {
3604df
     local scratch=$(mktemp)
3604df
@@ -989,6 +1079,9 @@ main()
3604df
 
3604df
         sed -i s/HA_CLUSTER_NODES.*/"HA_CLUSTER_NODES=\"$NEW_NODES\""/ \
3604df
 $HA_CONFDIR/ganesha-ha.conf
3604df
+
3604df
+        addnode_state_volume ${node}
3604df
+
3604df
         HA_SERVERS="${HA_SERVERS} ${node}"
3604df
 
3604df
         HA_NUM_SERVERS=$(expr ${HA_NUM_SERVERS} + 1)
3604df
@@ -1011,7 +1104,7 @@ $HA_CONFDIR/ganesha-ha.conf
3604df
 
3604df
         deletenode_update_haconfig ${node}
3604df
 
3604df
-        rm -rf ${HA_VOL_MNT}/nfs-ganesha/${node}
3604df
+        delnode_state_volume ${node}
3604df
 
3604df
         determine_service_manager
3604df
 
3604df
-- 
3604df
2.9.3
3604df