summaryrefslogtreecommitdiffstats
path: root/SharedModules/Utils/glusterutils.py
diff options
context:
space:
mode:
Diffstat (limited to 'SharedModules/Utils/glusterutils.py')
-rw-r--r--SharedModules/Utils/glusterutils.py644
1 files changed, 0 insertions, 644 deletions
diff --git a/SharedModules/Utils/glusterutils.py b/SharedModules/Utils/glusterutils.py
deleted file mode 100644
index 0c15af1..0000000
--- a/SharedModules/Utils/glusterutils.py
+++ /dev/null
@@ -1,644 +0,0 @@
-"""glusterutils module contains wrappers for gluster commands.
-
-*) glusterd_start
-*) glusterd_start_allservers
-*) glusterd_stop
-*) glusterd_stop_allservers
-*) glusterd_restart
-*) glusterd_remove_dir
-*) glusterd_remove_dir_allservers
-*) glusterd_remove_logs_allservers
-*) volume_delete
-*) volume_create
-*) volume_start
-*) volume_stop
-*) volume_addbrick
-*) volume_replacebrick
-*) volume_set
-*) volume_reset
-*) peer_probe
-*) create_brick
-*) mount_exportdir
-*) umount_exportdir
-"""
-
-import re
-import atfutils
-import hostutils
-from atfglobals import GlobalObj
-
-
-def glusterd_start(serverkey, force=False):
- """
- """
- env = GlobalObj.getTestenvObj()
- cm = GlobalObj.getConnectionsManagerObj()
- commands_to_execute = ["which glusterd", "ps -e | grep glusterd"]
- gluster_version = env.getServer(serverkey).glusterversion
- host_connection = cm.getConnection(serverkey)
- if not host_connection:
- print "SSH connection to host '%s' has not been established" % serverkey
- return 1
-
- """ Check if gluster is already running. If already Running and force=True,
- restart glusterd process"""
- command = commands_to_execute.pop()
- output = host_connection.executecommand(command)
- return_status = atfutils.assert_success(**output)
- if not return_status:
- if force:
- return_status = glusterd_restart(serverkey)
- return return_status
- else:
- return return_status
-
- command = commands_to_execute.pop()
- output = host_connection.executecommand(command)
- if output["exitstatus"]:
- print "Unable to start glusterd"
- return_status = atfutils.assert_success(**output)
- return return_status
- else:
- if output["stdoutdata"]:
- gluster_path = None
- gluster_path = output["stdoutdata"][0].strip("\n")
- else:
- print "Unable to find gluster path"
- return_status = atfutils.assert_success(**output)
- return return_status
-
- if gluster_path:
- command = gluster_path + " --version"
- output = host_connection.executecommand(command)
- if not output["stdoutdata"] == None:
- if re.search(gluster_version, str(output["stdoutdata"])):
- print "%s : %s" % (serverkey, gluster_path)
- output = host_connection.executecommand(gluster_path)
- return_status = atfutils.assert_success(**output)
- atfutils.print_stdout(output['stdoutdata'])
- atfutils.print_stderr(output['stderrdata'])
- return return_status
- else:
- print "Unable to start glusterd"
- return 1
- else:
- print "Unable to start glusterd"
- return 1
-
-def glusterd_start_allservers(force=False):
- """
- """
- env = GlobalObj.getTestenvObj()
- all_servers = env.getServers()
- for serverkey in all_servers.keys():
- return_status = glusterd_start(serverkey)
- if return_status:
- return return_status
-
- return 0
-
-def glusterd_stop(serverkey):
- """
- """
- base_command = "kill -KILL "
- env = GlobalObj.getTestenvObj()
- cm = GlobalObj.getConnectionsManagerObj()
- host_connection = cm.getConnection(serverkey)
- if not host_connection:
- print "SSH connection to host '%s' has not been established" % serverkey
- return 1
-
- gluster_pid_list = []
- output = host_connection.executecommand("pidof glusterd")
- return_status = atfutils.assert_failure(**output)
- if not return_status:
- return return_status
-
- else:
- if output["stdoutdata"]:
- for output in output["stdoutdata"]:
- gluster_pid_list.append(output)
-
- for pid in gluster_pid_list:
- command = base_command + pid
- print "%s : %s" % (serverkey, command)
- output = host_connection.executecommand(command)
- return_status = atfutils.assert_success(**output)
- atfutils.print_stdout(output['stdoutdata'])
- atfutils.print_stderr(output['stderrdata'])
- if return_status:
- break
-
- return return_status
-
-def glusterd_stop_allservers():
- """
- """
- env = GlobalObj.getTestenvObj()
- all_servers = env.getServers()
- for serverkey in all_servers.keys():
- return_status = glusterd_stop(serverkey)
- if return_status:
- return return_status
-
- return 0
-
-def glusterd_restart(serverkey):
- """
- """
- return_status = glusterd_stop(serverkey)
- if return_status:
- return return_status
- else:
- return_status = glusterd_start(serverkey)
- return return_status
-
-def glusterd_remove_dir(serverkey):
- """
- """
- command = "rm -rf /etc/glusterd/*"
- env = GlobalObj.getTestenvObj()
- cm = GlobalObj.getConnectionsManagerObj()
-
- server_obj = env.getServer(serverkey)
- if not server_obj:
- print "Invalid Host. %s not defined in TestEnvironment" % serverkey
- return 1
-
- server_connection = cm.getConnection(serverkey)
- if not server_connection:
- print "SSH connection to host '%s' has not been established" % serverkey
- return 1
-
- print "%s : %s" % (serverkey, command)
- output = server_connection.executecommand(command)
- return_status = atfutils.assert_success(**output)
- atfutils.print_stdout(output['stdoutdata'])
- atfutils.print_stderr(output['stderrdata'])
- return 0
-
-def glusterd_remove_dir_allservers():
- """
- """
- env = GlobalObj.getTestenvObj()
- all_servers = env.getServers()
- for serverkey in all_servers.keys():
- return_status = glusterd_remove_dir(serverkey)
-
- return 0
-
-
-def glusterd_remove_logs(serverkey):
- """
- """
- base_command = "rm -rf "
- log_paths = ["/var/log/glusterfs/*.log", "/var/log/glusterfs/bricks/*"]
- absolute_path_list = []
- prefix_path = ''
- env = GlobalObj.getTestenvObj()
- cm = GlobalObj.getConnectionsManagerObj()
-
- server_obj = env.getServer(serverkey)
- if not server_obj:
- print "Invalid Host. %s not defined in TestEnvironment" % serverkey
- return 1
-
- server_connection = cm.getConnection(serverkey)
- if not server_connection:
- print "SSH connection to host '%s' has not been established" % serverkey
- return 1
-
- if server_obj.installpath:
- prefix_path = server_obj.installpath
-
- for path in log_paths:
- absolute_path_list.append(prefix_path + path)
-
- for path in absolute_path_list:
- command = base_command + path
- print "%s : %s" % (serverkey, command)
- output = server_connection.executecommand(command)
- return_status = atfutils.assert_success(**output)
- atfutils.print_stdout(output['stdoutdata'])
- atfutils.print_stderr(output['stderrdata'])
-
- return 0
-
-def glusterd_remove_logs_allservers():
- """
- """
- env = GlobalObj.getTestenvObj()
- all_servers = env.getServers()
- for serverkey in all_servers.keys():
- return_status = glusterd_remove_logs(serverkey)
-
- return 0
-
-def volume_delete(serverkey):
- """
- """
- base_command = "gluster volume delete "
- env = GlobalObj.getTestenvObj()
- cm = GlobalObj.getConnectionsManagerObj()
- active_volume = env.getActiveVolume()
- if not active_volume:
- print "Invalid Volume.ActiveVolume not defined for the TestEnvironment"
- return 1
- volumename = active_volume.volumename
- command = base_command + volumename
- host_connection = cm.getConnection(serverkey)
- if not host_connection:
- print "SSH connection to host '%s' has not been established" % serverkey
- return 1
-
- print "%s : %s" % (serverkey, command)
- output = host_connection.executecommand(command, commandInput="y\n")
- return_status = atfutils.assert_success(**output)
- atfutils.print_stdout(output['stdoutdata'])
- atfutils.print_stderr(output['stderrdata'])
- return return_status
-
-def volume_create(serverkey):
- """
- """
- base_command = "gluster volume create "
- env = GlobalObj.getTestenvObj()
- cm = GlobalObj.getConnectionsManagerObj()
- active_volume = env.getActiveVolume()
- if not active_volume:
- print "ActiveVolume not defined for the TestEnvironment"
- return 1
-
- command = base_command + \
- active_volume.volumename + " " + \
- active_volume.volumetype + " " + \
- active_volume.count + " " + \
- "transport " + active_volume.transporttype + " "
-
- for brick_obj in active_volume.bricks:
- brick_value = brick_obj.hostname + ":" + brick_obj.path
- command = command + brick_value + " "
-
- host_connection = cm.getConnection(serverkey)
- if not host_connection:
- print "SSH connection to host '%s' has not been established" % serverkey
- return 1
-
- print "%s : %s" % (serverkey, command)
- output = host_connection.executecommand(command, commandInput="y\n")
- return_status = atfutils.assert_success(**output)
- if return_status:
- if str(output["stdoutdata"]).rfind("already exists"):
- return_status = 0
- atfutils.print_stdout(output['stdoutdata'])
- atfutils.print_stderr(output['stderrdata'])
- return return_status
-
-def volume_start(serverkey, force=False):
- """
- """
- base_command = "gluster volume start "
- env = GlobalObj.getTestenvObj()
- cm = GlobalObj.getConnectionsManagerObj()
- active_volume = env.getActiveVolume()
- if not active_volume:
- print "ActiveVolume not defined for the TestEnvironment"
- return 1
- volumename = active_volume.volumename
- command = base_command + volumename
- if force:
- command = command + " force"
-
- host_connection = cm.getConnection(serverkey)
- if not host_connection:
- print "SSH connection to host '%s' has not been established" % serverkey
- return 1
-
- print "%s : %s" % (serverkey, command)
- output = host_connection.executecommand(command, commandInput="y\n")
- return_status = atfutils.assert_success(**output)
- if return_status:
- if str(output["stdoutdata"]).rfind("already started"):
- return_status = 0
- atfutils.print_stdout(output['stdoutdata'])
- atfutils.print_stderr(output['stderrdata'])
- return return_status
-
-def volume_stop(serverkey, force=False):
- """
- """
- base_command = "gluster volume stop "
- env = GlobalObj.getTestenvObj()
- cm = GlobalObj.getConnectionsManagerObj()
- active_volume = env.getActiveVolume()
- if not active_volume:
- print "ActiveVolume not defined for the TestEnvironment"
- return 1
- volumename = active_volume.volumename
- command = base_command + volumename
- if force:
- command = command + " force"
-
- host_connection = cm.getConnection(serverkey)
- if not host_connection:
- print "SSH connection to host '%s' has not been established" % serverkey
- return 1
-
- print "%s : %s" % (serverkey, command)
- output = host_connection.executecommand(command, commandInput="y\n")
- return_status = atfutils.assert_success(**output)
- atfutils.print_stdout(output['stdoutdata'])
- atfutils.print_stderr(output['stderrdata'])
- return return_status
-
-def volume_addbrick(serverkey, *bricks):
- """
- """
- base_command = "gluster volume add-brick "
- env = GlobalObj.getTestenvObj()
- cm = GlobalObj.getConnectionsManagerObj()
- active_volume = env.getActiveVolume()
- if not active_volume:
- print "ActiveVolume not defined for the TestEnvironment"
- return 1
- volumename = active_volume.volumenameGlobalObj.getConnectionsManagerObj()
- command = base_command + volumename + " "
- for brick in bricks:
- brick_obj = env.getBrick(brick)
- if not brick_obj:
- print "Invalid Brick. Brick Not defined in TestEnvironment"
- return 1
- brick_value = brick_obj.hostname + ":" + brick_obj.path
- command = command + brick_value
-
- host_connection = cm.getConnection(serverkey)
- if not host_connection:
- print "SSH connection to host '%s' has not been established" % serverkey
- return 1
-
- print "%s : %s" % (serverkey, command)
- output = host_connection.executecommand(command, commandInput="y\n")
- return_status = atfutils.assert_success(**output)
- if not return_status:
- if env.addBricksToVolume(*bricks):
- return 1
- atfutils.print_stdout(output['stdoutdata'])
- atfutils.print_stderr(output['stderrdata'])
- return return_status
-
-def volume_replacebrick(serverkey, replacebrick_key, tobrick_key):
- """
- """
- base_command = "gluster volume replace-brick "
- env = GlobalObj.getTestenvObj()
- cm = GlobalObj.getConnectionsManagerObj()
- active_volume = env.getActiveVolume()
- if not active_volume:
- print "ActiveVolume not defined for the TestEnvironment"
- return 1
- volumename = active_volume.volumename
- command = base_command + volumename + " "
- replace_brick = env.getbrick(replacebrick_key)
- to_brick = env.getbrick(tobrick_key)
- command = command + replace_brick + " " + to_brick
-
- host_connection = cm.getConnection(serverkey)
- if not host_connection:
- print "SSH connection to host '%s' has not been established" % serverkey
- return 1
-
- print "%s : %s" % (serverkey, command)
- output = host_connection.executecommand(command, commandInput="y\n")
- return_status = atfutils.assert_success(**output)
- if not return_status:
- if env.replaceBrickInVolume(replacebrick_key, tobrick_key):
- return 1
- atfutils.print_stdout(output['stdoutdata'])
- atfutils.print_stderr(output['stderrdata'])
- return return_status
-
-def volume_set(serverkey, key, value):
- """
- """
- base_command = "gluster volume set "
- env = GlobalObj.getTestenvObj()
- cm = GlobalObj.getConnectionsManagerObj()
- active_volume = env.getActiveVolume()
- if not active_volume:
- print "ActiveVolume not defined for the TestEnvironment"
- return 1
- volumename = active_volume.volumename
- command = base_command + volumename + " " + key + " " + value
- host_connection = cm.getConnection(serverkey)
- if not host_connection:
- print "SSH connection to host '%s' has not been established" % serverkey
- return 1
-
- print "%s : %s" % (serverkey, command)
- output = host_connection.executecommand(command, commandInput="y\n")
- return_status = atfutils.assert_success(**output)
- atfutils.print_stdout(output['stdoutdata'])
- atfutils.print_stderr(output['stderrdata'])
- return return_status
-
-def volume_reset(serverkey):
- """
- """
- base_command = "gluster volume reset "
- env = GlobalObj.getTestenvObj()
- cm = GlobalObj.getConnectionsManagerObj()
- active_volume = env.getActiveVolume()
- if not active_volume:
- print "ActiveVolume not defined for the TestEnvironment"
- return 1
- volumename = active_volume.volumename
- command = base_command + volumename
- host_connection = cm.getConnection(serverkey)
- if not host_connection:
- print "SSH connection to host '%s' has not been established" % serverkey
- return 1
-
- print "%s : %s" % (serverkey, command)
- output = host_connection.executecommand(command, commandInput="y\n")
- return_status = atfutils.assert_success(**output)
- atfutils.print_stdout(output['stdoutdata'])
- atfutils.print_stderr(output['stderrdata'])
- return return_status
-
-def peer_probe(fromserverkey):
- """
- """
- base_command = "gluster peer probe "
- command = base_command
- all_servers = {}
- env = GlobalObj.getTestenvObj()
- cm = GlobalObj.getConnectionsManagerObj()
- all_servers = env.getServers()
- all_servers.pop(fromserverkey)
-
- for key in all_servers.keys():
- if key is fromserverkey:
- continue
- else:
- server_obj = all_servers[key]
- command = command + server_obj.hostname + " "
-
- host_connection = cm.getConnection(fromserverkey)
- if not host_connection:
- print "SSH connection to host '%s' has not been established" % serverkey
- return 1
-
- print "%s : %s" % (fromserverkey, command)
- output = host_connection.executecommand(command)
- return_status = atfutils.assert_success(**output)
- atfutils.print_stdout(output['stdoutdata'])
- atfutils.print_stderr(output['stderrdata'])
- return return_status
-
-def create_brick(brickkey):
- """
- """
- return_status = 1
- env = GlobalObj.getTestenvObj()
- brick_obj = env.getRawBrick(brickkey)
-
- hostname_value = brick_obj.hostname
- serverkey = re.split("\.", hostname_value, maxsplit=1)[0]
-
- exportdir = brick_obj.path
- device = fstype = None
- """If the exportdir is not a mount point of a device:
- 1) Remove the existing exportdir
- 2) Create new exportdir"""
-
- if re.match("^\/", exportdir):
- dirpath = exportdir
- command = base_command + dirpath
- else:
- export_obj = env.getExportdir(exportdir)
- dirpath = export_obj.dir
- device = export_obj.device
- fstype = export_obj.fstype
-
- print "%s : %s" % (serverkey, 'create_brick')
- if device:
- if umount_device(serverkey, device):
- return return_status
- if hostutils.mkfs(serverkey, device, fstype):
- return return_status
- if mount_exportdir(serverkey, device, fstype, dirpath):
- return return_status
- return 0
-
- else:
- if hostutils.rmdir(serverkey, dirpath):
- return return_status
- if hostutils.mkdir(serverkey, dirpath):
- return return_status
-
- return 0
-
-def umount_device(serverkey, device):
- """
- """
- base_command = "umount "
- cm = GlobalObj.getConnectionsManagerObj()
-
- server_connection = cm.getConnection(serverkey)
- if not server_connection:
- print "SSH connection to host '%s' has not been established" % serverkey
- return 1
-
- mountpoints = hostutils.find_mountpoints(serverkey, device)
-
- for mountpoint in mountpoints:
- command = base_command + mountpoint
- print "%s : %s" % (serverkey, command)
- output = server_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:
- return return_status
-
- return 0
-
-def mount_exportdir(serverkey, device, fstype, dirpath):
- """
- """
- base_command = "mount "
- cm = GlobalObj.getConnectionsManagerObj()
-
- server_connection = cm.getConnection(serverkey)
- if not server_connection:
- print "SSH connection to host '%s' has not been established" % serverkey
- return 1
-
- if fstype is None:
- fstype = "xfs"
-
- command = base_command + "-t " + fstype + " " + device + " " + dirpath
-
- print "%s : %s" % (serverkey, command)
- output = server_connection.executecommand(command)
- return_status = atfutils.assert_success(**output)
- atfutils.print_stdout(output['stdoutdata'])
- atfutils.print_stderr(output['stderrdata'])
- return return_status
-
-def create_brick_allservers():
- """
- """
- env = GlobalObj.getTestenvObj()
- brick_keys = env.getBrickKeys()
- for brickkey in brick_keys:
- return_status = create_brick(brickkey)
- if return_status:
- return return_status
-
- return 0
-
-
-__all__ = ['glusterd_start',
- 'glusterd_start_allservers',
- 'glusterd_stop',
- 'glusterd_stop_allservers',
- 'glusterd_restart',
- 'glusterd_remove_dir',
- 'glusterd_remove_dir_allservers',
- 'glusterd_remove_logs_allservers',
- 'volume_delete',
- 'volume_create',
- 'volume_start',
- 'volume_stop',
- 'volume_addbrick',
- 'volume_replacebrick',
- 'volume_set',
- 'volume_reset',
- 'peer_probe',
- 'create_brick',
- 'create_brick_allservers',
- 'mount_exportdir',
- 'umount_device']
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-