Comments
Patch
new file mode 100755
@@ -0,0 +1,131 @@
+#!/usr/bin/python
+"""
+(GLUSTER-3743) nfs.volume-access: read-only [Does NOT work]
+"""
+
+from __future__ import with_statement
+import subprocess
+import sys
+import re
+import time
+import os
+
+def bug(gdir):
+ cmd_dir = 'mkdir -p /exportdir/doa/'
+ dir_obj = subprocess.Popen(cmd_dir, shell=True, stdout=subprocess.PIPE)
+ ret = dir_obj.wait()
+ stderrdata = dir_obj.communicate()[1]
+ if ret:
+ print stderrdata
+ return 1
+ else:
+ pass
+
+ cmd_dir = 'mkdir -p /exportdir/client/'
+ dir_obj = subprocess.Popen(cmd_dir, shell=True, stdout=subprocess.PIPE)
+ ret = dir_obj.wait()
+ stderrdata = dir_obj.communicate()[1]
+ if ret:
+ print stderrdata
+ return 1
+ else:
+ pass
+
+
+ cmd_vol = gdir+"/gluster volume create doa `hostname`:/exportdir/doa/d1 `hostname`:/exportdir/doa/d2"
+ vol_obj = subprocess.Popen(cmd_vol, shell=True, stdout=subprocess.PIPE)
+ ret_vol = vol_obj.wait()
+ stderrdata=vol_obj.communicate()[1]
+
+ if ret_vol:
+ #print "error on creating vol"
+ print stderrdata
+ return 1
+ else:
+ pass
+
+ cmd_start = gdir+"/gluster volume start doa"
+ start_obj = subprocess.Popen(cmd_start, shell=True, stdout=subprocess.PIPE)
+ ret_start = start_obj.wait()
+ stderrdata=start_obj.communicate()[1]
+
+ if ret_start:
+ print stderrdata
+ return 1
+ else:
+ pass
+
+ cmd_set = gdir+"/gluster volume set doa nfs.volume-access read-only"
+ cmd_obj = subprocess.Popen(cmd_set, shell=True, stdout=subprocess.PIPE)
+ ret = cmd_obj.wait()
+ stderrdata = cmd_obj.communicate()[1]
+
+ if ret:
+ #print " set volume fail"
+ print stderrdata
+ return 1
+ else:
+ pass
+
+ time.sleep(10)
+
+ cmd_obj = subprocess.Popen('showmount -e',shell=True, stdout=subprocess.PIPE)
+ stdoutdata = cmd_obj.communicate()
+ match = re.search('/doa',stdoutdata[0])
+ if match:
+ pass
+ else:
+ print "showmount"
+ print stdoutdata[1]
+ return 1
+
+
+
+ time.sleep(10)
+ cmd_mnt = "mount -t nfs -o nolock,vers=3 `hostname`:/doa /exportdir/client/"
+ cmd_obj = subprocess.Popen(cmd_mnt, shell=True, stdout=subprocess.PIPE)
+ ret = cmd_obj.wait()
+ stderrdata= cmd_obj.communicate()[0]
+ if ret:
+ print "error"
+ print stderrdata
+ return 1
+ else:
+ pass
+
+ cmd_tch = "touch a"
+ os.chdir('/exportdir/client')
+ cmd_obj = subprocess.Popen(cmd_tch, shell=True, stdout=subprocess.PIPE)
+ ret = cmd_obj.wait()
+ stderrdata = cmd_obj.communicate()
+ match = re.search('Read-only file system',stderrdata[0])
+
+ if ret:
+ print stderrdata[1]
+ return 0
+ else:
+ return 1
+
+
+def main():
+ gdir = sys.argv[1]
+ return_status = bug(gdir)
+ obj = subprocess.Popen('umount -l /exportdir/client/', shell=True, stdout=subprocess.PIPE)
+ ret = obj.wait()
+ obj = subprocess.Popen('rm -rf /exportdir/', shell=True, stdout=subprocess.PIPE)
+ ret = obj.wait()
+ obj = subprocess.Popen('rm -rf /etc/glusterd/', shell=True, stdout=subprocess.PIPE)
+ ret = obj.wait()
+ obj = subprocess.Popen('/etc/init.d/glusterd restart', shell=True, stdout=subprocess.PIPE)
+ ret = obj.wait()
+
+ if return_status:
+ print "unsuccessful"
+ sys.exit(1)
+ else:
+ print "successful"
+ sys.exit(0)
+
+
+if __name__=='__main__':
+ main()
new file mode 100755
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+python $cwd/dvm/$global_bug_id/$global_bug_id.py $GLUSTERFSDIR
+ret=$?
+exit $ret;