2013-09-17 17:01:07 +05:30
#!/bin/bash
#The post-upgrade script must be executed after all the nodes in the cluster
#have upgraded.
#Also, all the clients accessing the given volume must also be upgraded
#before the script is run.
#Make sure glusterd and the brick processes are running on all nodes in the
#cluster post upgrade.
#Execute this script on the node where the pre-upgrade script for quota was run.
VOL = $1 ;
BACKUP_DIR = /var/tmp/glusterfs/quota-config-backup
function set_limits {
local var = $( gluster volume info $1 | grep 'features.quota' | cut -d" " -f2) ;
2014-05-16 16:58:20 +02:00
if [ -z " $var " ] || [ " $var " = "off" ] ; then
2013-09-17 17:01:07 +05:30
if [ $2 -eq '0' ] ; then
echo " Volume $1 does not have quota enabled. " \
"Exiting ..."
exit 1
fi
else
gluster volume set $1 default-soft-limit 80%
if [ $? -ne '0' ] ; then
echo "Post-upgrade process failed." \
"Please address the error and run " \
" post-upgrade-script.sh on volume $VOL again. "
exit 1
fi
gluster volume start $1 force
sleep 3;
local path_array = ( $( cat $BACKUP_DIR /vol_$1 | tail -n +3 | awk '{print $1}' ) )
local limit_array = ( $( cat $BACKUP_DIR /vol_$1 | tail -n +3 | awk '{print $2}' ) )
local len = ${# path_array [@] }
for ( ( j = 0; j<$len ; j++) )
do
gluster volume quota $1 limit-usage ${ path_array [ $j ] } ${ limit_array [j] } ;
if [ $? -eq 0 ] ; then
echo " Setting limit ( ${ limit_array [j] } ) on " \
" path ${ path_array [ $j ] } has been " \
"successful"
fi
done
fi ;
}
if [ -z $1 ] ; then
echo "Please provide volume name or 'all'" ;
exit 1;
fi
2014-05-16 16:58:20 +02:00
if [ " $1 " = "all" ] ; then
2013-09-17 17:01:07 +05:30
for VOL in ` gluster volume list` ;
do
set_limits $VOL '1' ;
done
else
set_limits $1 '0' ;
fi