CALLBACK_VERSION et al are documented as required in
https://docs.ansible.com/ansible/2.10/dev_guide/developing_plugins.html#callback-plugins.
The need for document_fragment is noted in
cfa8075537/lib/ansible/plugins/callback/default.py (L28-L32)Fixes#758
This addresses the following error, seen while running
`ansible_tests.py`.
```
TASK [Gathering Facts gather_timeout=10, gather_subset=['all']]
****************
task path:
/home/alex/src/mitogen/tests/ansible/regression/issue_109__target_has_old_ansible_installed.yml:4
[WARNING]: Failure using method (v2_runner_on_start) in callback plugin
(<ansible.plugins.callback.nice_stdout.CallbackModule object at
0x7f76b3dad090>): 'show_per_host_start'
Callback Exception:
File
"/home/alex/src/mitogen/.tox/py27-ansible2.10/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py",
line 372, in send_callback
method(*new_args, **kwargs)
File
"/home/alex/src/mitogen/.tox/py27-ansible2.10/lib/python2.7/site-packages/ansible/plugins/callback/default.py",
line 240, in v2_runner_on_start
if self.get_option('show_per_host_start'):
File
"/home/alex/src/mitogen/.tox/py27-ansible2.10/lib/python2.7/site-packages/ansible/plugins/callback/__init__.py",
line 91, in get_option
return self._plugin_options[k]
Callback Exception:
File
"/home/alex/src/mitogen/.tox/py27-ansible2.10/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py",
line 372, in send_callback
method(*new_args, **kwargs)
File
"/home/alex/src/mitogen/.tox/py27-ansible2.10/lib/python2.7/site-packages/ansible/plugins/callback/default.py",
line 240, in v2_runner_on_start
if self.get_option('show_per_host_start'):
File
"/home/alex/src/mitogen/.tox/py27-ansible2.10/lib/python2.7/site-packages/ansible/plugins/callback/__init__.py",
line 91, in get_option
return self._plugin_options[k]
[task 339882] 00:00:08.172036 D ansible_mitogen.affinity: CPU mask for
WorkerProcess: 0x000004
Callback Exception:
File
"/home/alex/src/mitogen/.tox/py27-ansible2.10/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py",
line 372, in send_callback
method(*new_args, **kwargs)
File
"/home/alex/src/mitogen/.tox/py27-ansible2.10/lib/python2.7/site-packages/ansible/plugins/callback/default.py",
line 240, in v2_runner_on_start
if self.get_option('show_per_host_start'):
File
"/home/alex/src/mitogen/.tox/py27-ansible2.10/lib/python2.7/site-packages/ansible/plugins/callback/__init__.py",
line 91, in get_option
return self._plugin_options[k]
```
* origin/v028: (383 commits)
Bump version for release.
docs: update Changelog for 0.2.8.
issue #627: add test and tweak Reaper behaviour.
docs: lots more changelog concision
docs: changelog concision
docs: more changelog tweaks
docs: reorder chapters
docs: versionless <title>
docs: update supported Ansible version, mention unsupported features
docs: changelog fixes/tweaks
issue #590: update Changelog.
issue #621: send ADD_ROUTE earlier and add test for early logging.
issue #590: whoops, import missing test modules
issue #590: rework ParentEnumerationMethod to recursively handle bad modules
issue #627: reduce the default pool size in a child to 2.
tests: add a few extra service tests.
docs: some more hyperlink joy
docs: more hyperlinks
docs: add domainrefs plugin to make link aliases everywhere \o/
docs: link IS_DEAD in changelog
docs: tweaks to better explain changelog race
issue #533: update routing to account for DEL_ROUTE propagation race
tests: use defer_sync() Rather than defer() + ancient sync_with_broker()
tests: one case from doas_test was invoking su
tests: hide memory-mapped files from lsof output
issue #615: remove meaningless test
issue #625: ignore SIGINT within MuxProcess
issue #625: use exec() instead of subprocess in mitogen_ansible_playbook
issue #615: regression test
issue #615: update Changelog.
issue #615: ensure 4GB max_message_size is configured for task workers.
issue #615: update Changelog.
issue #615: route a dead message to recipients when no reply is expected
issue #615: fetch_file() might be called with AnsibleUnicode.
issue #615: redirect 'fetch' action to 'mitogen_fetch'.
issue #615: extricate slurp brainwrong from mitogen_fetch
issue #615: ansible: import Ansible fetch.py action plug-in
issue #533: include object identity of Stream in repr()
docs: lots more changelog
issue #595: add buildah to docs and changelog.
docs: a few more internals.rst additions
ci: update to Ansible 2.8.3
tests: another random string changed in 2.8.3
tests: fix sudo_flags_failure for Ansible 2.8.3
ci: fix procps command line format warning
Whoops, merge together lgtm.yml and .lgtm.yml
issue #440: log Python version during bootstrap.
docs: update changelog
issue #558: disable test on OSX to cope with boundless mediocrity
issue #558, #582: preserve remote tmpdir if caller did not supply one
issue #613: must await 'exit' and 'disconnect' in wait=False test
Import LGTM config to disable some stuff
Fix up another handful of LGTM errors.
tests: work around AnsibleModule.run_command() race.
docs: mention another __main__ safeguard
docs: tweaks
formatting error
docs: make Sphinx install soft fail on Python 2.
issue #598: allow disabling preempt in terraform
issue #598: update Changelog.
issue #605: update Changelog.
issue #605: ansible: share a sem_t instead of a pthread_mutex_t
issue #613: add tests for all the weird shutdown methods
Add mitogen.core.now() and use it everywhere; closes#614.
docs: move decorator docs into core.py and use autodecorator
preamble_size: make it work on Python 3.
docs: upgrade Sphinx to 2.1.2, require Python 3 to build docs.
docs: fix Sphinx warnings, add LogHandler, more docstrings
docs: tidy up some Changelog text
issue #615: fix up FileService tests for new logic
issue #615: another Py3x fix.
issue #615: Py3x fix.
issue #615: update Changelog.
issue #615: use FileService for target->controll file transfers
issue #482: another Py3 fix
ci: try removing exclude: to make Azure jobs work again
compat: fix Py2.4 SyntaxError
issue #482: remove 'ssh' from checked processes
ci: Py3 fix
issue #279: add one more test for max_message_size
issue #482: ci: add stray process checks to all jobs
tests: fix format string error
core: MitogenProtocol.is_privileged was not set in children
issue #482: tests: fail DockerMixin tests if stray processes exist
docs: update Changelog.
issue #586: update Changelog.
docs: update Changelog.
[security] core: undirectional routing wasn't respected in some cases
docs: tidy up Select.all()
issue #612: update Changelog.
master: fix TypeError
pkgutil: fix Python3 compatibility
parent: use protocol for getting remote_id
docs: merge signals.rst into internals.rst
os_fork: do not attempt to cork the active thread.
parent: fix get_log_level() for split out loggers.
issue #547: fix service_test failures.
issue #547: update Changelog.
issue #547: core/service: race/deadlock-free service pool init
docs: update Changelog.
...
Ansible has no blocking services running, or really any service that
would have an outsized benefit from multiple IO waiters. Probably we
only need 1, but let's start with 2 just in case.
The undocumented 'tmp' parameter controls whether _execute_module()
would delete anything on 2.3, so mimic that. This means
_execute_remove_stat() calls will not blow away the temp directory,
which broke the unarchive plugin.
Its functionality was duplicated by _on_broker_exit() somewhere along
the way, and nothing has referred to it in a long time. I have no idea
how this happened.
Merge its docstring into _on_broker_exit() and delete it, remove the
Router "shutdown" signal after confirming it has no users, and move all
the Router-originated error messages together in a block at the top of
the class.
Already covered by router_test.AddHandlerTest.test_dead_message_sent_at_shutdown
* origin/026:
docs: update Changelog for release.
Bump version for release.
issue #555: ansible: workaround ancient reload(sys) hack.
issue #554: mitogen_action_script fix
issue #554: fix Ansible 2.4 compatibility
issue #554: don't rely on tmp_path autoremoval in test.
issue #554: track and remove multiple make_tmp_path() calls.
docs: update Changelog.
docs: drastically simplify install/changelog.
issue #552: include process identity in log messages.
issue #550: update Changelog.
issue #550: parent: add explanatory comment.
issue #550: fix up TTY ioctls on WSL 2016 Anniversary Update
docs: update Changelog.
service: make service list optional.
docs: update Changelog; closes#548.
issue #548: always treat transport=smart as 'ssh' for mitogen_via=.
docs: better intro paragraph.
.ci: copy private key file to tempdir.
os_fork: more doc tweaks
os_fork: more doc tweaks
os_fork: yet more doc tidyup
os_fork: more doc tweaks
os_fork: clean up docs
.ci: import soak scripts.
.ci: allow containers for different jobs to run simultaneously
os_fork: python 3 fixes and tests.
issue #535: activate Corker on 2.4 in master too.
issue #535: update Changelog.
issue #535: wire mitogen.os_fork into Broker and Pool.
issue #535: parent: add create_socketpair(size=..) parameter.
issue #535: introduce mitogen.os_fork module and Corker class.
issue #535: docs: update Changelog
issue #535: service: support Pool.defer() like Broker.defer()
issue #535: core: unicode.encode() may take importer lock on 2.x
issue #535: docs: fix up Select doc
issue #535: docs: update Changelog.
issue #535: core/select: support selecting from Latches.
core: increase cookie field lengths to 64-bit; closes#545.
tests: ensure serialization restrictions are in effect
tests/bench: set process affinity in throughput.py.
docs: update copyright year.
docs: update Changelog.
core: Make Latch.put(obj=) optional.
docs: change 'unreleased' Changelog format and add a hint.
docs: update Changelog; closes#542.
issue #542: return of select poller, new selection logic
issue #542: .ci: move some tests to Azure and enable Mac job.
ansible: create stub __init__.py for sdist.
This is the most minimal change for what might be relatively minimal
edge case. Alternative is replacing reload(), but let's not do that yet.
Closes#555
* origin/master: (661 commits)
Bump version for release.
docs: update Changelog; closes#481
issue #481: core: preserve stderr TTY FD if one is present.
issue #481: avoid crash if disconnect occurs during forward_modules()
Add a few more important modules to preamble_size.py.
.ci: add verbiage for run_batches() too.
.ci: add README.md.
docs: update thanks
docs: lose "approaching stability" language, we're pretty good now
docs: fix changelog syntax/order/"20KB"
tests: add new compression parameter to mitogen_get_stack results
tests: disable affinity_test on Travis :/
issue #508: fix responder stats test due to new smaller parent.py.
issue #508: tests: skip minify_test Py2.4/2.5 for profiler.py.
tests: fix fallout from 36fb318adf5c56e729296c3efce84f4dd75ced4e
issue #520: add AIX auth failure string to su.
tests: move affinity_test to Ansible tests.
core: cProfile is not available in 2.4.
issue #505: docs: add new detail graph for one scenario.
docs: update and re-record profile graphs in docs; closes#505
service: fix PushFileService exception
tests: pad out localhost-*
service: start pool shutdown on broker shutdown.
master: .encode() needed for Py3.
ansible: stash PID files in CWD if requested for debugging.
issue #508: master: minify_safe_re must be bytes for Py3.
bench: tidy up and cpu-pin some more files.
tests: add localhost-x100
ansible: double the default pool size.
ansible: raise error with correct exception type.
issue #508: master: minify all Mitogen/ansible_mitogen sources.
parent: PartialZlib docstrings.
ansible: hacky parser to alow bools to be specified on command line
parent: pre-cache bootstrap if possible.
docs: update Changelog.
ansible: add mitogen_ssh_compression variable.
service: PushFileService never recorded a file as sent.
parent: synchronize get_core_source()
service: use correct profile aggregation name.
SyntaxError.
ansible: don't pin controller if <4 cores.
tests: make soak testing work reliably on vanilla.
docs: changelog tidyups.
ansible: document and make affinity stuff portable to non-Linux
ansible: fix affinity.py test failure on 2 cores.
ansible: preheat PluginLoader caches before fork.
tests: make mitogen_shutdown_all be run_once by default.
docs: update Changelog.
ansible: use Poller for WorkerProcess; closes#491.
ansible: new multiplexer/workers configuration
docs: update Changelog.
docs: update Changelog.
ansible: pin connection multiplexer to a single core
utils: pad out reset_affinity() and integrate with detach_popen()
utils: import reset_affinity() function.
master: set Router.profiling if MITOGEN_PROFILING variable present.
parent: don't kill children when profiling is active.
ansible: hook strategy and worker processes into profiler
profiler: import from linear2 branch
core: tidy up existing profiling code and support MITOGEN_PROFILE_FMT
issue #260: redundant if statement.
ansible: ensure MuxProcess MITOGEN_PROFILING results reach disk.
ansible/bench: make end= configurable.
master: cache sent/forwarded module names
Aggregate code coverage data across tox all runs
Allow independant control of coverage erase and reporting
Fix incorrect attempt to use coverage
docs: update Changelog; closes#527.
issue #527: catch new-style module tracebacks like vanilla.
Fix DeprecationWarning in mitogen.utils.run_with_router()
Generate coverage report even if some tests fail
ci: fix incorrect partition/rpartition from 8a4caea84f
issue #260: hide force-disconnect messages.
issue #498: fix shutdown crash
issue #260: avoid start_transmit()/on_transmit()/stop_transmit()
core: ensure broker profiling output reaches disk
master: keep is_stdlib_path() result as negative cache entry
ci: Allow DISTROS="debian*32" variable, and KEEP=1
Use develop mode in tox
issue #429: fix sudo regression.
misc: rename to scripts. tab completion!!
core: Latch._wake improvements
issue #498: prevent crash on double 'disconnect' signal.
issue #413: don't double-propagate DEL_ROUTE to parent.
issue #498: wrap Router dict mutations in a lock
issue #429: enable en_US locale to unbreak debops test.
issue #499: fix another mind-numbingly stupid vanilla inconsistency
issue #497: do our best to cope with crap upstream code
ssh: fix test to match updated log format.
issue #429: update Changelog.
issue #429: update Changelog.
issue #429: teach sudo about every know i18n password string.
issue #429: install i18n-related bits in test images.
ssh: tidy up logs and stream names.
tests: ensure file is closed in connection_test.
gcloud: small updates
tests: give ansible/gcloud/ its own requirements file.
issue #499: another totally moronic implementation difference
issue #499: disable new test on vanilla.
docs: update Changelog; closes#499.
...