mirror of
https://github.com/ZwareBear/awx.git
synced 2026-05-03 05:11:49 -05:00
Merge pull request #3596 from jbradberry/capture-isolated-command
Updated IsolatedManager to take a callback that captures the remote command Reviewed-by: https://github.com/softwarefactory-project-zuul[bot]
This commit is contained in:
@@ -1079,6 +1079,19 @@ 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, config):
|
||||
'''
|
||||
IsolatedManager callback triggered by the repeated checks of the isolated node
|
||||
'''
|
||||
job_env = build_safe_env(config['env'])
|
||||
for k, v in self.safe_cred_env.items():
|
||||
if k in job_env:
|
||||
job_env[k] = v
|
||||
self.instance = self.update_model(self.instance.pk,
|
||||
job_args=json.dumps(config['command']),
|
||||
job_cwd=config['cwd'],
|
||||
job_env=job_env)
|
||||
|
||||
|
||||
@with_path_cleanup
|
||||
def run(self, pk, **kwargs):
|
||||
@@ -1100,6 +1113,7 @@ class BaseTask(object):
|
||||
Needs to be an object property because status_handler uses it in a callback context
|
||||
'''
|
||||
self.safe_env = {}
|
||||
self.safe_cred_env = {}
|
||||
private_data_dir = None
|
||||
isolated_manager_instance = None
|
||||
|
||||
@@ -1152,8 +1166,11 @@ class BaseTask(object):
|
||||
for credential in credentials:
|
||||
if credential:
|
||||
credential.credential_type.inject_credential(
|
||||
credential, env, self.safe_env, args, private_data_dir
|
||||
credential, env, self.safe_cred_env, args, private_data_dir
|
||||
)
|
||||
|
||||
self.safe_env.update(self.safe_cred_env)
|
||||
|
||||
self.write_args_file(private_data_dir, args)
|
||||
|
||||
password_prompts = self.get_password_prompts(passwords)
|
||||
@@ -1215,7 +1232,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_handler,
|
||||
)
|
||||
status, rc = isolated_manager_instance.run(self.instance,
|
||||
private_data_dir,
|
||||
|
||||
Reference in New Issue
Block a user