Commit Graph

3992 Commits (cd58b7eac1fcddddc4a63e49f98430c16fb23b4f)
 

Author SHA1 Message Date
Alex Willmer cd58b7eac1 mitogen: Avoid import of linecache on Python >= 2.5
It's only needed for a workaround on Python 2.4.
4 days ago
Alex Willmer 384d37f630 mitogen: Use built-in _codecs, eliminate direct import of encodings package
The package will still get imported indirectly by _something_, but every
little helps.
4 days ago
Alex Willmer 5011263bf0 mitogen: Use built-in _codecs module to encode latin1
Streamlines initilialzation slightly. Next commit will do the same for utf-8.
4 days ago
Alex Willmer c6d6ea8432
Merge pull request #1411 from moreati/pre-0.3.37
Prepare 0.3.37
1 week ago
Alex Willmer 1c5a1a3d72 Begin 0.3.38dev 1 week ago
Alex Willmer abe3671c7b Prepare v0.3.37 1 week ago
Alex Willmer 34fddee719
Merge pull request #1410 from moreati/issue1407
mitogen: Fix AttributeError in mitogen.profiler
1 week ago
Alex Willmer 0e2da7deb5 mitogen: Fix AttributeError in mitogen.profiler 1 week ago
Alex Willmer 6c81a1b550
Merge pull request #1403 from moreati/issue1398-poc
mitogen: Add initial importlib ResourceReader support
1 week ago
Alex Willmer b7eddf2cdb mitogen: Add initial support for importlib ResourceReader
The new classes are modelled closely on their existing Module* counterparts.
For now I've duplicated the code, once it's bedded in I may refactor it. I
didn't replicate the FORWARD_MODULE plumbing, it didn't seem to be necessary
and may be dead code.
2 weeks ago
Alex Willmer 73f60a3123
Merge pull request #1399 from palfrey/ssl-discovery-with-builtin
tests: Handle builtin _ssl module on Linux
3 weeks ago
Tom Parker-Shemilt 4251991c3a tests: Handle builtin _ssl module on Linux 3 weeks ago
Alex Willmer 492bd2fa1f
Merge pull request #1396 from moreati/prepare-v0.3.36
Prepare v0.3.36
1 month ago
Alex Willmer 1d62a51810 Begin 0.3.37dev 1 month ago
Alex Willmer 4111224161 Prepare v0.3.36 1 month ago
Alex Willmer 4952c5635c
Merge pull request #1389 from mhartmay/possible-fix
mitogen: first_stage: Break the while loop in case of EOF
1 month ago
Marc Hartmayer 8807cd53be mitogen: first_stage: Break the while loop in case of EOF
The current implementation can cause an infinite loop, leading to a process that
hangs and consumes 100% CPU. This occurs because the EOF condition is not
handled properly, resulting in repeated select(...) and read(...) calls.

The fix is to properly handle the EOF condition and break out of the loop when
it occurs.

-SSH command size: 822
+SSH command size: 838
 Preamble (mitogen.core + econtext) size: 18226 (17.80KiB)

-mitogen.parent        99062  96.7KiB  51235 50.0KiB 51.7%  12936 12.6KiB 13.1%
+mitogen.parent        99240  96.9KiB  51244 50.0KiB 51.6%  12956 12.7KiB 13.1%

Fixes: https://github.com/mitogen-hq/mitogen/issues/1348
Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>
1 month ago
Marc Hartmayer f5195edf08 first_stage_test: Add more tests
+ test_non_blocking_stdin
 + test_blocking_stdin
 + test_premature_eof
 + test_broker_connect_eof_error
 + test_broker_connect_timeout_because_blocking_read(self):

Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>
1 month ago
Marc Hartmayer f7ca6af62d first_stage_test: Open /dev/zero in binary mode
Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>
1 month ago
Marc Hartmayer 0ab5b425d8 first_stage_test: Refactor the test
Use testlib.subprocess instead of subprocess and make the test description a
docstring that can be used by the test runner.

Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>
1 month ago
Marc Hartmayer 2d9e90acf9 parent_test: Refactor `wait_for_child`
Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>
1 month ago
Marc Hartmayer fdaf09c4d6 mitogen/parent: Fix typo
Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>
1 month ago
Alex Willmer 2398df1159
Merge pull request #1393 from moreati/firststage-linecomments
mitogen: Line comments in first stage
1 month ago
Alex Willmer 606a21fb27 mitogen: Add first line comments to _first_stage() 1 month ago
Alex Willmer 733f4bca81 mitogen: Allow line comments in first stage, strip them. 1 month ago
Alex Willmer 9c71a158e7
Merge pull request #1390 from mhartmay/fix-hanging-tests
testlib: Fix hanging tests
1 month ago
Marc Hartmayer 0a559ec8d8 testlib: Fix hanging tests
When I run

$ MITOGEN_LOG_LEVEL=debug SKIP_ANSIBLE=1 ./run_tests -v -k first_stage_test.CommandLineTest

in a interactive Shell (with a tty), it ends in a hanging process as the
`have_python2` and `have_python3` ends up ends up in an interactive Python
shell. Therefore check the Python version instead.

Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>
1 month ago
Alex Willmer 7be79d05e9
Merge pull request #1013 from moreati/issue1011-blacklist-msg
mitogen: Clarify blacklisted import error message
2 months ago
Alex Willmer ccaaf4b7fe mitogen: Clarify blacklisted ModuleNotFoundError message
Previous phrasing was misleading - it implied a given module was explicitly on
the blacklist, even if it was due to a restrictive whitelist and the blacklist
was empty.

Arguably the blacklist/whitelist semantics are themselves misleading. A
redesign is tempting.
2 months ago
Alex Willmer 073fc48afc tests: Remove BlacklistTest stubs (covered by ImporterBlacklistTest) 2 months ago
Alex Willmer e0de4d3b8e
Merge pull request #1386 from moreati/issue1237
Tidy ups
2 months ago
Alex Willmer 64a581b2ac tests: Add Ubuntu 16.04 to image_prep inventory
I missed this when committing what built 2025.02 iamges
2 months ago
Alex Willmer 823d1d8b47 docs: Document Ansible 13 (ansible-core 2.20) support 2 months ago
Alex Willmer 9b46882478 ansible_mitogen: Remove a use of ansible.module_utils.six 2 months ago
Alex Willmer b105877f4d mitogen: Re-declare Python 2.4 compatibility
With CentOS 5 now covered by the Mitogen unit tests I'm content to
reverse/clarify 104865e866
2 months ago
Alex Willmer fb9efb24ca
Merge pull request #1383 from moreati/prepare-v0.3.35
Prepare v0.3.35
2 months ago
Alex Willmer 9ce6a43329 Begin 0.3.36dev 2 months ago
Alex Willmer 4af6a75278 Prepare v0.3.35 2 months ago
Alex Willmer be3d496110
Merge pull request #1382 from moreati/issue1225-interpreter-python-fallback
ansible_mitogen: Use INTERPRETER_PYTHON_FALLBACK as python candidates
2 months ago
Alex Willmer 699a8ebfb5 ansible_mitogen: Use INTERPRETER_PYTHON_FALLBACK as python candidates
This shouldn't change the interpreter ultimately chosen by Ansible. It should
only improve the hit rate of performing interpreter discovery, particular in
cases where only pythonX.Y is present on the target.

Interpreter discovery may take longer or shorter, depending on the Ansible
version and the interpreters present on the target.
2 months ago
Alex Willmer abb77e77e1
Merge pull request #1374 from moreati/prepare-v0.3.34
Prepare v0.3.34
2 months ago
Alex Willmer 19938ec05a Begin 0.3.35.dev 2 months ago
Alex Willmer 8e6a93dd0f Prepare v0.3.34 2 months ago
Alex Willmer 682faf85fc
Merge pull request #1126 from moreati/issue1124
Ansible: Avoid sending `__main__` and its dependencies from controller to targets
2 months ago
Alex Willmer 83b6cdb616 ansible_mitogen: Speedup startup by not sending `__main__`
On my laptop his reduces the time to execute `ansible -mping ...` by approx
300 ms with `strategy=mitogen_linear`.

Until this commit Mitogen was unnecessarily sending large chunks of Ansible
from the controller to targets, due to `__main__` being identified as a
related module of `ansible.module_utils.basic`, and resolving to something
within `ansible.cli...`.

On Ansible target hosts executing any Ansible Module `__main__` is imported by
`ansible.module_utils.basic` as part of Ansible's module delivery mechanism.
When `mitogen.master.ModuleResponder` (on the controller) processes the
request for `ansible.module_utils.basic` from the target, it scans
`ansible.module_utils.basic` for related imports and finds `__main__`. However
`__main__` on the controller is not the same module as `__main__` on the
target. On the controller it is a module in `ansible.cli...` that implements
one of the ansible commands (e.g. `ansible`, `ansible-playbook`).
2 months ago
Alex Willmer f191f050bf mitogen: Log why a module is sent or not sent by ModuleResponder
This should not change the logic
2 months ago
Alex Willmer f556ec12b1
Merge pull request #1373 from moreati/issue1118-new-os-releases
CI: Expand test coverage of OS releases
2 months ago
Alex Willmer a208daa461 CI: Add OS release coverage: Ubuntu 22.04, Ubuntu 24.04 2 months ago
Alex Willmer 14e8334705 CI: Add OS release coverage: Debian 12 2 months ago
Alex Willmer 1fe55f1c67 CI: Add OS release coverage: CentOS 5
Only the Mitogen unit tests will run against CentOS 5, providing atleast some
Python 2.4test coverage. There is no version of Ansible that supports Python
2.4 that is also supported by Mitogen 0.3.

The SSH key exchange argument is to persuade newer SSH clients to talk with
such an old SSH server.

See https://www.openssh.org/legacy.html
2 months ago