summaryrefslogtreecommitdiff
path: root/0357-ganesha-ha-updates-for-pcs-0.10.x-i.e.-in-Fedora-29-.patch
blob: a67b89c0fd671bc85639820e315696261b8c57cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
From 2d5e678f8331d4d99ee4dff6e166cbf01c83ab36 Mon Sep 17 00:00:00 2001
From: "Kaleb S. KEITHLEY" <kkeithle@redhat.com>
Date: Wed, 12 Feb 2020 12:47:57 -0500
Subject: [PATCH 357/357] ganesha-ha: updates for pcs-0.10.x (i.e. in Fedora-29
 and RHEL-8)

pcs-0.10 has introduced changes options to pcs commands

pcs-0.10.x is in Fedora-29 and later and RHEL-8.

Also some minor cleanup. Namely use bash built-in [[...]] in a few
more places instead of test(1), i.e. [...], and use correct "==" for
comparison.

master: https://review.gluster.org/24115

Change-Id: I3fb2fcd71406964c77fdc4f18580ca133f365fd6
BUG: 1802727
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
Reviewed-on: https://code.engineering.redhat.com/gerrit/194467
Tested-by: RHGS Build Bot <nigelb@redhat.com>
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
---
 extras/ganesha/scripts/ganesha-ha.sh | 84 ++++++++++++++++++++++++------------
 1 file changed, 56 insertions(+), 28 deletions(-)

diff --git a/extras/ganesha/scripts/ganesha-ha.sh b/extras/ganesha/scripts/ganesha-ha.sh
index 32af1ca..0b0050a 100644
--- a/extras/ganesha/scripts/ganesha-ha.sh
+++ b/extras/ganesha/scripts/ganesha-ha.sh
@@ -28,7 +28,12 @@ HA_VOL_MNT="/var/run/gluster/shared_storage"
 HA_CONFDIR=$HA_VOL_MNT"/nfs-ganesha"
 SERVICE_MAN="DISTRO_NOT_FOUND"
 
-RHEL6_PCS_CNAME_OPTION="--name"
+# rhel, fedora id, version
+ID=""
+VERSION_ID=""
+
+PCS9OR10_PCS_CNAME_OPTION=""
+PCS9OR10_PCS_CLONE_OPTION="clone"
 SECRET_PEM="/var/lib/glusterd/nfs/secret.pem"
 
 # UNBLOCK RA uses shared_storage which may become unavailable
@@ -101,9 +106,9 @@ determine_service_manager () {
         then
                 SERVICE_MAN="/sbin/service"
         fi
-        if [ "${SERVICE_MAN}" == "DISTRO_NOT_FOUND" ]
+        if [[ "${SERVICE_MAN}X" == "DISTRO_NOT_FOUNDX" ]]
         then
-                echo "Service manager not recognized, exiting"
+                logger "Service manager not recognized, exiting"
                 exit 1
         fi
 }
@@ -114,7 +119,7 @@ manage_service ()
         local new_node=${2}
         local option=
 
-        if [ "${action}" == "start" ]; then
+        if [[ "${action}" == "start" ]]; then
                 option="yes"
         else
                 option="no"
@@ -122,7 +127,7 @@ manage_service ()
         ssh -oPasswordAuthentication=no -oStrictHostKeyChecking=no -i \
 ${SECRET_PEM} root@${new_node} "${GANESHA_HA_SH} --setup-ganesha-conf-files $HA_CONFDIR $option"
 
-        if [ "${SERVICE_MAN}" == "/bin/systemctl" ]
+        if [[ "${SERVICE_MAN}" == "/bin/systemctl" ]]
         then
                 ssh -oPasswordAuthentication=no -oStrictHostKeyChecking=no -i \
 ${SECRET_PEM} root@${new_node} "${SERVICE_MAN}  ${action} nfs-ganesha"
@@ -140,7 +145,7 @@ check_cluster_exists()
 
     if [ -e /var/run/corosync.pid ]; then
         cluster_name=$(pcs status | grep "Cluster name:" | cut -d ' ' -f 3)
-        if [ ${cluster_name} -a ${cluster_name} = ${name} ]; then
+        if [[ "${cluster_name}X" == "${name}X" ]]; then
             logger "$name already exists, exiting"
             exit 0
         fi
@@ -155,7 +160,7 @@ determine_servers()
     local tmp_ifs=${IFS}
     local ha_servers=""
 
-    if [ "X${cmd}X" != "XsetupX" -a "X${cmd}X" != "XstatusX" ]; then
+    if [ "${cmd}X" != "setupX" -a "${cmd}X" != "statusX" ]; then
         ha_servers=$(pcs status | grep "Online:" | grep -o '\[.*\]' | sed -e 's/\[//' | sed -e 's/\]//')
         IFS=$' '
         for server in ${ha_servers} ; do
@@ -193,15 +198,21 @@ setup_cluster()
 
     logger "setting up cluster ${name} with the following ${servers}"
 
-    pcs cluster auth ${servers}
-    # pcs cluster setup --name ${name} ${servers}
-    pcs cluster setup ${RHEL6_PCS_CNAME_OPTION} ${name} --enable --transport udpu ${servers}
+    # pcs cluster setup --force ${PCS9OR10_PCS_CNAME_OPTION} ${name} ${servers}
+    pcs cluster setup --force ${PCS9OR10_PCS_CNAME_OPTION} ${name} --enable ${servers}
     if [ $? -ne 0 ]; then
-        logger "pcs cluster setup ${RHEL6_PCS_CNAME_OPTION} ${name} --enable --transport udpu ${servers} failed"
+        logger "pcs cluster setup ${PCS9OR10_PCS_CNAME_OPTION} ${name} --enable ${servers} failed, shutting down ganesha and bailing out"
         #set up failed stop all ganesha process and clean up symlinks in cluster
         stop_ganesha_all "${servers}"
         exit 1;
     fi
+
+    # pcs cluster auth ${servers}
+    pcs cluster auth
+    if [ $? -ne 0 ]; then
+        logger "pcs cluster auth failed"
+    fi
+
     pcs cluster start --all
     if [ $? -ne 0 ]; then
         logger "pcs cluster start failed"
@@ -217,7 +228,7 @@ setup_cluster()
     done
 
     unclean=$(pcs status | grep -u "UNCLEAN")
-    while [[ "${unclean}X" = "UNCLEANX" ]]; do
+    while [[ "${unclean}X" == "UNCLEANX" ]]; do
          sleep 1
          unclean=$(pcs status | grep -u "UNCLEAN")
     done
@@ -244,7 +255,7 @@ setup_finalize_ha()
     local stopped=""
 
     stopped=$(pcs status | grep -u "Stopped")
-    while [[ "${stopped}X" = "StoppedX" ]]; do
+    while [[ "${stopped}X" == "StoppedX" ]]; do
          sleep 1
          stopped=$(pcs status | grep -u "Stopped")
     done
@@ -265,7 +276,7 @@ refresh_config ()
         if [ -e ${SECRET_PEM} ]; then
         while [[ ${3} ]]; do
             current_host=`echo ${3} | cut -d "." -f 1`
-            if [ ${short_host} != ${current_host} ]; then
+            if [[ ${short_host} != ${current_host} ]]; then
                 output=$(ssh -oPasswordAuthentication=no \
 -oStrictHostKeyChecking=no -i ${SECRET_PEM} root@${current_host} \
 "dbus-send --print-reply --system --dest=org.ganesha.nfsd \
@@ -398,7 +409,7 @@ wrap_create_virt_ip_constraints()
     # the result is "node2 node3 node4"; for node2, "node3 node4 node1"
     # and so on.
     while [[ ${1} ]]; do
-        if [ "${1}" = "${primary}" ]; then
+        if [[ ${1} == ${primary} ]]; then
             shift
             while [[ ${1} ]]; do
                 tail=${tail}" "${1}
@@ -429,15 +440,15 @@ setup_create_resources()
     local cibfile=$(mktemp -u)
 
     # fixup /var/lib/nfs
-    logger "pcs resource create nfs_setup ocf:heartbeat:ganesha_nfsd ha_vol_mnt=${HA_VOL_MNT} --clone"
-    pcs resource create nfs_setup ocf:heartbeat:ganesha_nfsd ha_vol_mnt=${HA_VOL_MNT} --clone
+    logger "pcs resource create nfs_setup ocf:heartbeat:ganesha_nfsd ha_vol_mnt=${HA_VOL_MNT} ${PCS9OR10_PCS_CLONE_OPTION}"
+    pcs resource create nfs_setup ocf:heartbeat:ganesha_nfsd ha_vol_mnt=${HA_VOL_MNT} ${PCS9OR10_PCS_CLONE_OPTION}
     if [ $? -ne 0 ]; then
-        logger "warning: pcs resource create nfs_setup ocf:heartbeat:ganesha_nfsd ha_vol_mnt=${HA_VOL_MNT} --clone failed"
+        logger "warning: pcs resource create nfs_setup ocf:heartbeat:ganesha_nfsd ha_vol_mnt=${HA_VOL_MNT} ${PCS9OR10_PCS_CLONE_OPTION} failed"
     fi
 
-    pcs resource create nfs-mon ocf:heartbeat:ganesha_mon --clone
+    pcs resource create nfs-mon ocf:heartbeat:ganesha_mon ${PCS9OR10_PCS_CLONE_OPTION}
     if [ $? -ne 0 ]; then
-        logger "warning: pcs resource create nfs-mon ocf:heartbeat:ganesha_mon --clone failed"
+        logger "warning: pcs resource create nfs-mon ocf:heartbeat:ganesha_mon ${PCS9OR10_PCS_CLONE_OPTION} failed"
     fi
 
     # see comment in (/usr/lib/ocf/resource.d/heartbeat/ganesha_grace
@@ -445,9 +456,9 @@ setup_create_resources()
     # ganesha-active crm_attribute
     sleep 5
 
-    pcs resource create nfs-grace ocf:heartbeat:ganesha_grace --clone notify=true
+    pcs resource create nfs-grace ocf:heartbeat:ganesha_grace ${PCS9OR10_PCS_CLONE_OPTION} notify=true
     if [ $? -ne 0 ]; then
-        logger "warning: pcs resource create nfs-grace ocf:heartbeat:ganesha_grace --clone failed"
+        logger "warning: pcs resource create nfs-grace ocf:heartbeat:ganesha_grace ${PCS9OR10_PCS_CLONE_OPTION} failed"
     fi
 
     pcs constraint location nfs-grace-clone rule score=-INFINITY grace-active ne 1
@@ -616,7 +627,7 @@ addnode_recreate_resources()
     --after ${add_node}-nfs_block
     if [ $? -ne 0 ]; then
         logger "warning pcs resource create ${add_node}-cluster_ip-1 ocf:heartbeat:IPaddr \
-	ip=${add_vip} cidr_netmask=32 op monitor interval=15s failed"
+        ip=${add_vip} cidr_netmask=32 op monitor interval=15s failed"
     fi
 
     pcs -f ${cibfile} constraint order nfs-grace-clone then ${add_node}-cluster_ip-1
@@ -780,7 +791,7 @@ setup_state_volume()
             touch ${mnt}/nfs-ganesha/${dirname}/nfs/statd/state
         fi
         for server in ${HA_SERVERS} ; do
-            if [ ${server} != ${dirname} ]; then
+            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
@@ -794,7 +805,7 @@ setup_state_volume()
 enable_pacemaker()
 {
     while [[ ${1} ]]; do
-        if [ "${SERVICE_MAN}" == "/usr/bin/systemctl" ]; then
+        if [[ "${SERVICE_MAN}" == "/bin/systemctl" ]]; then
             ssh -oPasswordAuthentication=no -oStrictHostKeyChecking=no -i \
 ${SECRET_PEM} root@${1} "${SERVICE_MAN} enable pacemaker"
         else
@@ -892,7 +903,7 @@ delnode_state_volume()
     rm -rf ${mnt}/nfs-ganesha/${dirname}
 
     for server in ${HA_SERVERS} ; do
-        if [[ "${server}" != "${dirname}" ]]; then
+        if [[ ${server} != ${dirname} ]]; then
             rm -f ${mnt}/nfs-ganesha/${server}/nfs/ganesha/${dirname}
             rm -f ${mnt}/nfs-ganesha/${server}/nfs/statd/${dirname}
         fi
@@ -963,7 +974,7 @@ status()
 
 create_ganesha_conf_file()
 {
-        if [ $1 == "yes" ];
+        if [[ "$1" == "yes" ]];
         then
                 if [  -e $GANESHA_CONF ];
                 then
@@ -1012,6 +1023,13 @@ main()
      semanage boolean -m gluster_use_execmem --on
     fi
 
+    local osid=""
+
+    osid=$(grep ^ID= /etc/os-release)
+    eval $(echo ${osid} | grep -F ID=)
+    osid=$(grep ^VERSION_ID= /etc/os-release)
+    eval $(echo ${osid} | grep -F VERSION_ID=)
+
     HA_CONFDIR=${1%/}; shift
     local ha_conf=${HA_CONFDIR}/ganesha-ha.conf
     local node=""
@@ -1032,7 +1050,17 @@ main()
 
         determine_servers "setup"
 
-        if [ "X${HA_NUM_SERVERS}X" != "X1X" ]; then
+        # Fedora 29+ and rhel/centos 8 has PCS-0.10.x
+        # default is pcs-0.10.x options but check for
+        # rhel/centos 7 (pcs-0.9.x) and adjust accordingly
+        if [[ ${ID} =~ {rhel,centos} ]]; then
+            if [[ ${VERSION_ID} == 7.* ]]; then
+                PCS9OR10_PCS_CNAME_OPTION="--name"
+                PCS9OR10_PCS_CLONE_OPTION="--clone"
+            fi
+        fi
+
+        if [[ "${HA_NUM_SERVERS}X" != "1X" ]]; then
 
             determine_service_manager
 
-- 
1.8.3.1