[Ocfs2-test-devel] [PATCH 03/11] python_common
tristan
tristan.ye at oracle.com
Wed Jun 16 18:44:04 PDT 2010
Signed-off-by: Tristan Ye <tristan.ye at oracle.com>
Marcos Matsunaga wrote:
> ocfs2-test: changed to accept an alternate NIC to be used by the test.
>
> - on untar fucntion, created an option to separate the extraction logfile
> from the general logfile. This is to try to keep the general logfile
> clean.
> - added the option to use an alternate network interface to remote_umount.py
> and remote_mount.py
> - added the option to use specify remote access method to remote_umount.py
> and remote_mount.py
> - Made remote_mount.py and remote_umount.py accept the remote communication
> method. ssh or rsh are valid.
>
> Signed-off-by: Marcos Matsunaga <Marcos.Matsunaga at oracle.com>
> ---
> programs/python_common/o2tf.py | 37 +++++++++++++++++++++----------
> programs/python_common/remote_mount.py | 28 +++++++++++++++++++++--
> programs/python_common/remote_umount.py | 27 +++++++++++++++++++++-
> 3 files changed, 75 insertions(+), 17 deletions(-)
>
> diff --git a/programs/python_common/o2tf.py b/programs/python_common/o2tf.py
> index df060cb..69081bf 100644
> --- a/programs/python_common/o2tf.py
> +++ b/programs/python_common/o2tf.py
> @@ -18,7 +18,7 @@
> #
> # o2tf - OCFS2 Tests Functions.
> #
> -import os, sys, signal, string, popen2, socket, time, pdb, shutil, platform
> +import os, sys, signal, string, socket, time, pdb, shutil, platform
> import config, stat, os.path
> #from log import log
> # Set time executable to use.
> @@ -130,7 +130,7 @@ def extract_tar(DEBUGON, logfile, dirl, tarfile):
> % wdir, logfile, 0, '')
> os.mkdir(wdir)
> os.chdir(wdir)
> - untar(DEBUGON, wdir, tarfile, logfile)
> + untar(DEBUGON, wdir, tarfile, logfile, '1')
> #
> # CreateDir is used by :
> # - o2tf.py
> @@ -162,7 +162,7 @@ def CreateDir(DEBUGON, dirl, logfile):
> #
> # untar is used by :
> # - o2tf.py
> -def untar(DEBUGON, destdir, tarfile, logfile):
> +def untar(DEBUGON, destdir, tarfile, logfile, quiet):
> 'Untar into a destdir, the tarfile, logging the output into a logfile'
> 'For the moment, it only works with compressed tar files.'
> if DEBUGON:
> @@ -174,19 +174,27 @@ def untar(DEBUGON, destdir, tarfile, logfile):
> options = 'xvf'
> compress = 'z'
> st = os.stat(destdir)
> + logdate = str(time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime()))
> + arch = str(platform.machine())
> if stat.S_ISREG(st.st_mode):
> o2tf.printlog('o2tf.untar: (%s) is a regular file. Can\'t \
> extract tarfile into a regular file.' % \
> destdir, logfile, 0, '')
> else:
> - if DEBUGON:
> - printlog('o2tf.untar: Extracting tar file %s into %s \
> - directory.' % (tarfile, destdir),
> - logfile, 0, '')
> + printlog('o2tf.untar: Extracting tar file %s into %s \
> + directory.' % (tarfile, destdir),
> + logfile, 0, '')
> + if quiet == '1':
> + tlogfile = os.path.join(dirlog,logdate+'_untar_'+arch+'_'+nodename)
> + else:
> + tlogfile = logfile
> + printlog('o2tf.untar: Extraction logfile at %s ' % logfile,
> + logfile, 0, '')
> +
> t1 = time.time()
> os.system('cd %s; tar %s %s 2>&1 1>> %s; du -sh * 1>> %s' % \
> - (destdir, options + compress, tarfile, logfile,
> - logfile))
> + (destdir, options + compress, tarfile, tlogfile,
> + tlogfile))
> t2 = time.time()
> printlog('o2tf.untar: Extraction elapsed time = %s' % \
> (t2 - t1), logfile, 0, '')
> @@ -236,7 +244,7 @@ so just do a sanity check here to test if all nodes are available.
> #
> # Calls mpirun from openmpi
> #
> -def openmpi_run(DEBUGON, nproc, cmd, nodes, remote_sh, logfile, w_flag):
> +def openmpi_run(DEBUGON, nproc, cmd, nodes, remote_sh, interface, logfile, w_flag):
> """
> Execute commands in parallel using OpenMPI.'
> """
> @@ -251,6 +259,11 @@ def openmpi_run(DEBUGON, nproc, cmd, nodes, remote_sh, logfile, w_flag):
> else:
> nprocopt='-np ' + str(nproc)
>
> + if not interface:
> + iface = ''
> + else:
> + iface = '-mca btl_tcp_if_include '+interface
> +
> if remote_sh == '' or remote_sh == 'ssh':
> shopt = '-mca plm_rsh_agent ssh:rsh'
> else:
> @@ -269,8 +282,8 @@ def openmpi_run(DEBUGON, nproc, cmd, nodes, remote_sh, logfile, w_flag):
> logfile, 0, '')
> pid = os.spawnv(os.P_NOWAIT,
> '/bin/bash', ['bash', '-xc',
> - config.MPIRUN + ' -mca btl tcp,self %s %s --host %s %s' % \
> - (shopt, nprocopt, nodes, cmd)])
> + config.MPIRUN + ' -mca btl tcp,self %s %s %s --host %s %s' % \
> + (shopt, iface, nprocopt, nodes, cmd)])
> if w_flag == 'NOWAIT':
> return pid
> else:
> diff --git a/programs/python_common/remote_mount.py b/programs/python_common/remote_mount.py
> index c688cf0..f7e0d9b 100755
> --- a/programs/python_common/remote_mount.py
> +++ b/programs/python_common/remote_mount.py
> @@ -35,7 +35,8 @@ DEBUGON = os.getenv('DEBUG',0)
> userid = pwd.getpwuid(os.getuid())[0]
> logfile = config.LOGFILE
> #
> -Usage = 'Usage: %prog [-l|-label label] \
> +Usage = 'Usage: %prog [-i|--if <Network Interface>] \
> +[-l|-label label] \
> [-m|--mountpoint mountpoint] \
> [-n|--nodes nodelist] \
> [-o|--options mountoptions]'
> @@ -47,6 +48,12 @@ if userid == 'root':
> if __name__=='__main__':
> parser = optparse.OptionParser(Usage)
> #
> + parser.add_option('-i',
> + '--if',
> + dest='interface',
> + type='string',
> + help='Network interface to be used by the test.')
> +#
> parser.add_option('-l',
> '--label',
> dest='label',
> @@ -64,13 +71,19 @@ if __name__=='__main__':
> dest='nodelist',
> type='string',
> help='List of nodes where the test will be executed.')
> -
> +#
> parser.add_option('-o',
> '--options',
> dest='mountoptions',
> type='string',
> help='Mounting options to be added.')
> #
> + parser.add_option('-s',
> + '--shell',
> + dest='remote_method',
> + type='string',
> + help='Remote access method <ssh|rsh>.')
> +#
> (options, args) = parser.parse_args()
> if len(args) != 0:
> parser.error('incorrect number of arguments')
> @@ -85,6 +98,14 @@ if __name__=='__main__':
> else:
> mt_options = ''
> #
> + if not options.remote_method:
> + remote_method = 'ssh'
> + else:
> + if options.remote_method == 'ssh' or options.remote_method == 'rsh':
> + remote_method = options.remote_method
> + else:
> + parser.error('Invalid option. Choose ssh or rsh')
> +#
> nodelist = options.nodelist.split(',')
> nodelen = len(nodelist)
> if nodelen == 1:
> @@ -111,7 +132,8 @@ ret = o2tf.openmpi_run(DEBUGON,
> nproc,
> str('%s' % command),
> options.nodelist,
> - 'ssh',
> + remote_method,
> + options.interface,
> logfile,
> 'WAIT')
>
> diff --git a/programs/python_common/remote_umount.py b/programs/python_common/remote_umount.py
> index 7b8f24d..e730f47 100755
> --- a/programs/python_common/remote_umount.py
> +++ b/programs/python_common/remote_umount.py
> @@ -35,7 +35,8 @@ DEBUGON = os.getenv('DEBUG',0)
> userid = pwd.getpwuid(os.getuid())[0]
> logfile = config.LOGFILE
> #
> -Usage = 'Usage: %prog [-m|--mountpoint mountpoint] \
> +Usage = 'Usage: %prog [-i|--if <Network Interface>] \
> +[-m|--mountpoint mountpoint] \
> [-n|--nodes nodelist]'
> #
> if userid == 'root':
> @@ -45,6 +46,12 @@ if userid == 'root':
> if __name__=='__main__':
> parser = optparse.OptionParser(Usage)
> #
> + parser.add_option('-i',
> + '--if',
> + dest='interface',
> + type='string',
> + help='Network interface to be used by the test.')
> +#
> parser.add_option('-m',
> '--mountpoint',
> dest='mountpoint',
> @@ -57,6 +64,12 @@ if __name__=='__main__':
> type='string',
> help='List of nodes where the test will be executed.')
> #
> + parser.add_option('-s',
> + '--shell',
> + dest='remote_method',
> + type='string',
> + help='Remote access method <ssh|rsh>.')
> +#
> (options, args) = parser.parse_args()
> if len(args) != 0:
> parser.error('incorrect number of arguments')
> @@ -65,6 +78,14 @@ if __name__=='__main__':
> if not options.mountpoint:
> parser.error('Please specify mountpoint.')
> #
> + if not options.remote_method:
> + remote_method = 'ssh'
> + else:
> + if options.remote_method == 'ssh' or options.remote_method == 'rsh':
> + remote_method = options.remote_method
> + else:
> + parser.error('Invalid option. Choose ssh or rsh')
> +#
> nodelist = options.nodelist.split(',')
> nodelen = len(nodelist)
> if nodelen == 1:
> @@ -89,7 +110,9 @@ ret = o2tf.openmpi_run(DEBUGON,
> nproc,
> str('%s' % command),
> options.nodelist,
> - 'ssh', logfile,
> + remote_method,
> + options.interface,
> + logfile,
> 'WAIT')
>
> if ret:
>
More information about the Ocfs2-test-devel
mailing list