From 18445ae1a94366c955cc7626fb8ec749dedcf73e Mon Sep 17 00:00:00 2001 From: Shwetha-H-Panduranga Date: Tue, 6 Dec 2011 14:11:13 +0530 Subject: Adding New/Updated Automation Files --- SharedModules/Utils/clientutils.py | 282 +++++++++++++++++++++++++++++++++++++ 1 file changed, 282 insertions(+) create mode 100644 SharedModules/Utils/clientutils.py (limited to 'SharedModules/Utils/clientutils.py') diff --git a/SharedModules/Utils/clientutils.py b/SharedModules/Utils/clientutils.py new file mode 100644 index 0000000..ad5d593 --- /dev/null +++ b/SharedModules/Utils/clientutils.py @@ -0,0 +1,282 @@ +"""clientutils module contains functions required for performing +certain operations on client + +Supported Wrappers :- +----------- +*) umount +*) umountall +*) mount +*) mountall +""" + +import atfutils +import hostutils +from atfglobals import GlobalObj + +def umount(mountkey): + """unmounts a mountpoint + + Parameters: + mountkey : name given to a mount as specified in testenv.cfg file. + Ex:-"mount1" + + Returns: + Success : 0 + Failure : 1` + """ + base_command = "umount " + env = GlobalObj.getTestenvObj() + cm = GlobalObj.getConnectionsManagerObj() + + mount_obj = env.getMount(mountkey) + if not mount_obj: + print "InValid Mount. %s not defined in TestEnvironment" % mountkey + return 1 + + clientkey = mount_obj.client + client_connection = cm.getConnection(clientkey) + if not client_connection: + print "SSH connection to host '%s' has not been established" % clientkey + return 1 + + command = base_command + mount_obj.dir + print "%s : %s" % (clientkey, command) + output = client_connection.executecommand(command) + return_status = atfutils.assert_success(**output) + atfutils.print_stdout(output['stdoutdata']) + atfutils.print_stderr(output['stderrdata']) + if return_status: + stdoutdata = str(output["stdoutdata"]) + if ((stdoutdata.rfind("not found")) or (stdoutdata.rfind("not mount"))): + return_status = 0 + + else: + print "Unable to umount %s" % mountkey + + return return_status + +def umountall(): + """unmounts all mount specified in testenv.cfg file. + Ex:- mount1, mount2 etc + + Parameters: + None + + Returns: + Success : 0 + Failure : 1` + """ + env = GlobalObj.getTestenvObj() + failure_flag = False + + mounts_keys = env.getMountsKeys() + for mountkey in mounts_keys: + return_status = umount(mountkey) + if return_status: + failure_flag = True + + if failure_flag: + return 1 + else: + return 0 + +def mount(mountkey): + """mounts a filesystem + + Parameters: + mountkey : name given to a mount as specified in testenv.cfg file. + Ex:-"mount1" + + Returns: + Success : 0 + Failure : 1` + """ + + base_command = command = "mount " + env = GlobalObj.getTestenvObj() + cm = GlobalObj.getConnectionsManagerObj() + + mount_obj = env.getMount(mountkey) + if not mount_obj: + print "InValid Mount. %s not defined in TestEnvironment" % mountkey + return 1 + + clientkey = mount_obj.client + client_connection = cm.getConnection(clientkey) + if not client_connection: + print "SSH connection to host '%s' has not been established" % clientkey + return 1 + + mountdevice_obj = mount_obj.device + device = mountdevice_obj.hostname + ":/" + mountdevice_obj.volumename + options = ["-t", mount_obj.type] + if mount_obj.logfile: + options.extend(["-o", ("log-file="+mount_obj.logfile), + "log-level=INFO"]) + + if mount_obj.options: + options.extend([mount_obj.option]) + + options.extend([device, mount_obj.dir]) + for index, option in enumerate(options): + command = command + option + " " + + return_status = hostutils.mkdir(clientkey, mount_obj.dir) + if return_status: + return return_status + + print "%s : %s" % (clientkey, command) + output = client_connection.executecommand(command) + return_status = atfutils.assert_success(**output) + atfutils.print_stdout(output['stdoutdata']) + atfutils.print_stderr(output['stderrdata']) + return return_status + +def mountall(): + """mounts a filesystem for all mounts specified in testenv.cfg file. + + Parameters: + None + + Returns: + Success : 0 + Failure : 1` + """ + env = GlobalObj.getTestenvObj() + + mounts_keys = env.getMountsKeys() + for mountkey in mounts_keys: + return_status = mount(mountkey) + if return_status: + return return_status + + return 0 + + +def execute_on_mount(mountkey, command, commandInput=None): + """ + """ + env = GlobalObj.getTestenvObj() + mount_obj = env.getMount(mountkey) + if not mount_obj: + print "InValid Mount. %s not defined in TestEnvironment" % mountkey + return 1 + + clientkey = mount_obj.client + mountdir = mount_obj.dir + command = "cd " + mountdir + " ;" + command + return_status = hostutils.execute_command(clientkey, command, commandInput) + return return_status + +__all__ = ['execute_on_mount', + 'umount', + 'umountall', + 'mount', + 'mountall'] + +##def umountall(clientkey): +## """ +## """ +## base_command = "umount " +## env = GlobalObj.get_testenv_obj() +## cm = GlobalObj.get_connectionsmanager_obj() +## client_obj = env.getclient(clientkey) +## mountdir = client_obj.mountdir +## volume = client_obj.device +## client = cm.getconnection(clientkey) +## +## mountpoints = [] +## success_flag = False +## failure_flag = False +## command = "mount | grep " + mountdir +## output = client.executecommand(command) +## if not output["exitstatus"]: +## for data in output["stdoutdata"]: +## mountpoints.append(data.split(" ")[2]) +## +## for mountpoint in mountpoints: +## command = base_command + mountpoint +## output = client.executecommand(command) +## return_code = utils.assert_success(**output) +## if return_code: +## failure_flag = True +## else: +## success_flag = True +## continue +## +## if failure_flag: +## return 1 +## +## mountpoints = [] +## success_flag = False +## failure_flag = False +## command = "mount | grep " + volume +## output = client.executecommand(command) +## if not output["exitstatus"]: +## for data in output["stdoutdata"]: +## mountpoints.append(data.split(" ")[2]) +## +## for mountpoint in mountpoints: +## command = base_command + mountpoint +## output = client.executecommand(command) +## return_code = utils.assert_success(**output) +## if return_code: +## failure_flag = True +## else: +## success_flag = True +## continue +## +## if failure_flag: +## return 1 +## +## return 0 + +##def cd_mount(mountkey): +## """ +## """ +## env = GlobalObj.getTestenvObj() +## mount_obj = env.getMount(mountkey) +## if not mount_obj: +## print "InValid Mount. %s not defined in TestEnvironment" % mountkey +## return 1 +## +## clientkey = mount_obj.client +## dirpath = mount_obj.dir +## return_status = hostutils.cd(clientkey, dirpath) +## return return_status +## +##def cd_allmounts(): +## """ +## """ +## env = GlobalObj.getTestenvObj() +## mounts_keys = env.getMountsKeys() +## for mountkey in mounts_keys: +## return_status = cd_mount(mountkey) +## if return_status: +## return return_status +## +## return 0 + + + + + + + + + + + + + + + + + + + + + + + + -- cgit