summaryrefslogtreecommitdiffstats
path: root/glustolibs-misc/glustolibs/misc
diff options
context:
space:
mode:
authorPranav <prprakas@redhat.com>2020-04-15 15:57:32 +0530
committerBala Konda Reddy M <bala12352@gmail.com>2020-04-17 09:00:36 +0000
commite82203f67171838b46d82312ceb010976e1ae4c2 (patch)
tree2bef6442cfaab74031df0f3b0f6e2e915f0d3590 /glustolibs-misc/glustolibs/misc
parentfb77a9055e12b753d202d55d4e44776735588160 (diff)
[Lib] Add kill_process method
The method kills the given set of processes running on the specified node. It takes process ids or process names and uses the kill command to terminate the process and returns status as boolean value Change-Id: Ic6c316dac6b3496d34614c568115b0fa0f40d07d Signed-off-by: Pranav <prprakas@redhat.com>
Diffstat (limited to 'glustolibs-misc/glustolibs/misc')
-rwxr-xr-xglustolibs-misc/glustolibs/misc/misc_libs.py51
1 files changed, 49 insertions, 2 deletions
diff --git a/glustolibs-misc/glustolibs/misc/misc_libs.py b/glustolibs-misc/glustolibs/misc/misc_libs.py
index fea86d125..109dc9621 100755
--- a/glustolibs-misc/glustolibs/misc/misc_libs.py
+++ b/glustolibs-misc/glustolibs/misc/misc_libs.py
@@ -341,8 +341,8 @@ def install_arequal(list_of_nodes):
list_of_nodes = [list_of_nodes]
try:
- arequal_repo = (g.config['dependencies']['testing_tools']['arequal']
- ['repo'])
+ arequal_repo = (g.config['dependencies']['testing_tools']
+ ['arequal']['repo'])
except KeyError:
arequal_repo = ("https://copr.fedorainfracloud.org/coprs/nigelbabu/"
"arequal/repo/epel-7/nigelbabu-arequal-epel-7.repo")
@@ -619,3 +619,50 @@ def git_clone_and_compile(hosts, link, dir_name, compile_option='False'):
else:
g.log.info("Successfully cloned/compiled repo on %s" % host)
return True
+
+
+def kill_process(mnode, process_ids='', process_names=''):
+ """Kills the given set of process running in the specified node
+
+ Args:
+ mnode (str): Node at which the command has to be executed
+ process_ids (list|str): List of pid's to be terminated
+ process_names(list|str): List of Process names to be terminated
+
+ Returns:
+ bool : True on successful termination of all the processes
+ False, otherwise
+ Example:
+ >>> kill_process("10.70.43.68", process_ids=27664)
+ True/False
+ >>> kill_process("10.70.43.68", process_names=["glustershd",
+ "glusterd"])
+ True/False
+ """
+ if process_names:
+ process_ids = []
+ if not isinstance(process_names, list):
+ process_names = [process_names]
+
+ for process in process_names:
+ ret, pids, _ = g.run(mnode,
+ "ps -aef | grep -i '%s' | grep -v 'grep' | "
+ "awk '{ print $2 }'" % process)
+ pids = pids.split("\n")[:-1]
+ if not pids:
+ g.log.error("Getting pid for process %s failed" % process)
+ return False
+ for pid in pids:
+ if pid:
+ process_ids.append(pid)
+
+ if process_ids and not isinstance(process_ids, list):
+ process_ids = [process_ids]
+
+ # Kill process
+ for pid in process_ids:
+ ret, _, _ = g.run(mnode, "kill -9 %s" % str(pid))
+ if ret:
+ g.log.error("Failed to kill process with pid %s" % str(pid))
+ return False
+ return True