mirror of
https://github.com/ansible/awx.git
synced 2026-01-17 12:41:19 -03:30
Updated IsolatedManager to take a callback that captures the remote command
This commit is contained in:
parent
96bd0f9d9e
commit
cac48e7cfb
@ -29,13 +29,14 @@ def set_pythonpath(venv_libdir, env):
|
||||
|
||||
class IsolatedManager(object):
|
||||
|
||||
def __init__(self, cancelled_callback=None):
|
||||
def __init__(self, cancelled_callback=None, check_callback=None):
|
||||
"""
|
||||
:param cancelled_callback: a callable - which returns `True` or `False`
|
||||
- signifying if the job has been prematurely
|
||||
cancelled
|
||||
"""
|
||||
self.cancelled_callback = cancelled_callback
|
||||
self.check_callback = check_callback
|
||||
self.idle_timeout = max(60, 2 * settings.AWX_ISOLATED_CONNECTION_TIMEOUT)
|
||||
self.started_at = None
|
||||
|
||||
@ -187,6 +188,13 @@ class IsolatedManager(object):
|
||||
self.private_data_dir,
|
||||
extravars=extravars)
|
||||
status, rc = runner_obj.status, runner_obj.rc
|
||||
if self.check_callback is not None:
|
||||
command_path = self.path_to('artifacts', self.ident, 'command')
|
||||
# If the command artifact has been synced back, update the model
|
||||
if os.path.exists(command_path):
|
||||
with open(command_path, 'r') as f:
|
||||
data = json.load(f)
|
||||
self.check_callback(data['command'], data['cwd'], self.runner_params['envvars'].copy())
|
||||
self.consume_events(dispatcher)
|
||||
|
||||
last_check = time.time()
|
||||
|
||||
@ -1077,6 +1077,15 @@ class BaseTask(object):
|
||||
self.instance = self.update_model(self.instance.pk, job_args=json.dumps(runner_config.command),
|
||||
job_cwd=runner_config.cwd, job_env=job_env)
|
||||
|
||||
def check_handler(self, command, cwd, env):
|
||||
'''
|
||||
IsolatedManager callback triggered by the repeated checks of the isolated node
|
||||
'''
|
||||
self.instance = self.update_model(self.instance.pk,
|
||||
job_args=command,
|
||||
job_cwd=cwd,
|
||||
job_env=build_safe_env(env))
|
||||
|
||||
|
||||
@with_path_cleanup
|
||||
def run(self, pk, **kwargs):
|
||||
@ -1212,7 +1221,8 @@ class BaseTask(object):
|
||||
)
|
||||
ansible_runner.utils.dump_artifacts(params)
|
||||
isolated_manager_instance = isolated_manager.IsolatedManager(
|
||||
cancelled_callback=lambda: self.update_model(self.instance.pk).cancel_flag
|
||||
cancelled_callback=lambda: self.update_model(self.instance.pk).cancel_flag,
|
||||
check_callback=self.check_callback,
|
||||
)
|
||||
status, rc = isolated_manager_instance.run(self.instance,
|
||||
private_data_dir,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user