Merge pull request #360 from matburt/fix_el6_job_cancel

Fix overall job cancel behavior
This commit is contained in:
Matthew Jones
2015-08-05 19:39:11 -04:00

View File

@@ -23,7 +23,10 @@ import uuid
from distutils.version import LooseVersion as Version from distutils.version import LooseVersion as Version
import dateutil.parser import dateutil.parser
import yaml import yaml
try:
import psutil import psutil
except:
psutil = None
# Pexpect # Pexpect
import pexpect import pexpect
@@ -434,11 +437,14 @@ class BaseTask(Task):
if instance.cancel_flag: if instance.cancel_flag:
try: try:
if settings.AWX_PROOT_ENABLED: if settings.AWX_PROOT_ENABLED:
if not psutil:
os.kill(child.pid, signal.SIGKILL)
else:
main_proc = psutil.Process(pid=child.pid) main_proc = psutil.Process(pid=child.pid)
if hasattr(main_proc, "children"): if hasattr(main_proc, "children"):
child_procs = main_proc.children(recursive=False) child_procs = main_proc.children(recursive=True)
else: else:
child_procs = main_proc.get_children(recursive=False) child_procs = main_proc.get_children(recursive=True)
for child_proc in child_procs: for child_proc in child_procs:
os.kill(child_proc.pid, signal.SIGTERM) os.kill(child_proc.pid, signal.SIGTERM)
else: else: