From 8a754e0858d922e955e71b253c139e071ecec432 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 28 Apr 2024 18:04:21 +0200 Subject: Adding upstream version 2.14.3. Signed-off-by: Daniel Baumann --- .../library/respawnme.py | 44 ++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 test/integration/targets/module_utils_common.respawn/library/respawnme.py (limited to 'test/integration/targets/module_utils_common.respawn/library/respawnme.py') diff --git a/test/integration/targets/module_utils_common.respawn/library/respawnme.py b/test/integration/targets/module_utils_common.respawn/library/respawnme.py new file mode 100644 index 0000000..6471dba --- /dev/null +++ b/test/integration/targets/module_utils_common.respawn/library/respawnme.py @@ -0,0 +1,44 @@ +#!/usr/bin/python + +# Copyright: (c) 2021, Ansible Project +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +import os +import sys + +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.common.respawn import respawn_module, has_respawned + + +def main(): + mod = AnsibleModule(argument_spec=dict( + mode=dict(required=True, choices=['multi_respawn', 'no_respawn', 'respawn']) + )) + + # just return info about what interpreter we're currently running under + if mod.params['mode'] == 'no_respawn': + mod.exit_json(interpreter_path=sys.executable) + elif mod.params['mode'] == 'respawn': + if not has_respawned(): + new_interpreter = os.path.join(mod.tmpdir, 'anotherpython') + os.symlink(sys.executable, new_interpreter) + respawn_module(interpreter_path=new_interpreter) + + # respawn should always exit internally- if we continue executing here, it's a bug + raise Exception('FAIL, should never reach this line') + else: + # return the current interpreter, as well as a signal that we created a different one + mod.exit_json(created_interpreter=sys.executable, interpreter_path=sys.executable) + elif mod.params['mode'] == 'multi_respawn': + # blindly respawn with the current interpreter, the second time should bomb + respawn_module(sys.executable) + + # shouldn't be any way for us to fall through, but just in case, that's also a bug + raise Exception('FAIL, should never reach this code') + + +if __name__ == '__main__': + main() -- cgit v1.2.3