Commit Graph

48 Commits

Author SHA1 Message Date
David Wilson ac9b84d237 issue #321: 2.4+ compatibility fixes, disable test on Vanilla. 2018-08-19 19:26:54 +01:00
David Wilson f24f02ba06 issue #321: take remote_tmp and system_tmpdirs into account.
Can't simply ignore these settings as some users may have weird noexec
filesystems.
2018-08-19 18:50:53 +01:00
David Wilson a2686b1a2c issue #321: simplify temp directory handling. 2018-08-19 16:00:35 +01:00
David Wilson 3d588323ff issue #340: use expanded delegate_to hostname, not template.
PlayContext.delegate_to is the unexpanded template, Ansible doesn't keep
a copy of it around anywhere convenient. We either need to re-expand it
or take the expanded version that was stored on the Task, which is what
is done here.
2018-08-18 16:43:59 +01:00
David Wilson b44b823c4a ansible: make _remote_expand_user() pay attention to sudoable=.. 2018-07-25 19:27:25 +00:00
David Wilson a8e4dcc98d issue #301: correct remote_tmp evaluation context.
Vanilla Ansible expands remote_tmp variables in the context of the login
account, not any become_user account.
2018-07-23 21:43:06 -07:00
David Wilson 012745efea issue #297: local actions must execute with fixed directory.
Local actions must execute in the the parent directory of the playbook
that defines the action.
2018-07-10 17:56:05 +01:00
David Wilson 410016ff47 Initial Python 3.x port work.
* ansible: use unicode_literals everywhere since it only needs to be
  compatible back to 2.6.
* compat/collections.py: delete this entirely and rip out the parts of
  functools that require it.
* Introduce serializable Kwargs dict subclass that translates keys to
  Unicode on instantiation.
* enable_debug_logging() must set _v/_vv globals.
* cStringIO does not exist in 3.x.
* Treat IOLogger and LogForwarder input as latin-1.
* Avoid ResourceWarnings in first stage by explicitly closing fps.
* Fix preamble_size.py syntax errors.
2018-07-07 14:55:47 +01:00
David Wilson 3994f1b30a ansible: implment async job time limit. 2018-06-10 02:28:49 +01:00
David Wilson e35694acd5 ansible: flake8 fixes. 2018-06-10 01:22:46 +01:00
David Wilson fdbd954113 ansible: preload built-in modules in ModuleDepScanner.
For "ansible -m setup" over a 25ms link, avoids 65 roundtrips and
reduces runtime from 5.7s to 4.1s (-28%).

For "ansible -m setup" over a simulated 250 ms link, reduces runtime
from m27.015s to 0m8.254s (-69%).
2018-05-29 14:55:01 +01:00
David Wilson ddf28987a0 master: split Select() into new module to reduce wire size.
service.py currently imports master.py(+parent.py) just to get Select().
2018-05-24 23:59:10 +01:00
David Wilson f737ff5276 ansible: stop passing through remote_tmp variable
Ansiballz does not use remote_tmp so neither should we, per #239.
2018-05-04 15:30:51 +01:00
David Wilson dafe12b315 ansible: fix AnsibleUnicode crash when processing "~username". 2018-04-30 15:21:26 +01:00
David Wilson 71057c78f9 ansible: rename helpers.py to target.py, to reflect its purpose 2018-04-08 19:34:03 +01:00
David Wilson 4a823c7a27 issue #164: missing cast() for _remote_file_exists(). 2018-04-05 19:35:03 +01:00
David Wilson d503956493 ansible: Remove duplicate casts already done in Connection 2018-04-05 02:55:27 +01:00
David Wilson 6aeb4e9f05 issue #164: precisely emulate Ansible's stdio behaviour.
* Use identical logic to select when stdout/stderr are merged, so
  'stdout', 'stdout_lines', 'stderr', 'stderr_lines' contain the same
  output before/after the extension.

* When stdout/stderr are merged, synthesize carriage returns just like
  the TTY layer.

* Mimic the SSH connection multiplexing message on stderr. Not really
  for user code, but so compare_output_test.sh needs fewer fixups.
2018-04-05 01:16:34 +01:00
David Wilson 26cc0f2724 issue #164: fix remote_tmp handling on <2.5 2018-04-04 20:19:46 +01:00
David Wilson e0381606af Ensure remote_tmp is respected everywhere.
Logic is still somewhat different from Ansible: we don't have to care
about sudo/non-sudo cases, etc.
2018-04-04 14:05:57 +01:00
David Wilson e5723e4f5f ansible: fix _make_tmp_path() regression on 2.3.x.
Due to issue #177.
2018-04-01 21:59:59 +01:00
David Wilson 16b64392e2 issue #106: support WANT_JSON modules. 2018-04-01 18:19:34 +01:00
David Wilson df6daaf3c4 issue #106: working/semantically compatible binary support. 2018-04-01 16:39:10 +01:00
David Wilson 43e4f5009a issue #106: remove 2 needless Invocation attributes. 2018-04-01 16:39:10 +01:00
David Wilson c891ab078a issue #106: working old-style native module execution
Still abusing Python import mechanism, but one big step closer to
eliminating that.
2018-04-01 16:39:10 +01:00
David Wilson 98c15942f7 issue #177: fix bizarre syntax error in last commit. 2018-04-01 16:38:22 +01:00
David Wilson cf25437019 issue #177: populate Shell.tempdir global on creating a tempdir.
It looks a lot like multiple calls to _make_tmp_path() will result in
multiple temporary directories on the remote machine, only the last of
which will be cleaned up.

We must be bug-for-bug compatible for now, so ignore the problem in the
meantime.
2018-04-01 15:58:44 +01:00
David Wilson 6eed3aa1fa issue #177: fetch and cache HOME value during connection setup.
This ensures only 1 roundtrip is required for every invocation of
_remote_expand_user().
2018-04-01 15:57:46 +01:00
David Wilson 037bed895b issue #110: _transfer_data() must handle dicts and Unicode(!) 2018-03-19 21:58:33 +05:45
David Wilson d34025fae9 ansible: _transfer_data() must return remote_path.
Fixes DebOps bug.
2018-03-19 21:58:33 +05:45
David Wilson a9db27d424 ansible: instrument every ActionMixin override. 2018-03-19 21:58:33 +05:45
David Wilson 9b7991cd45 issue #118: log exceptions for emulated commands, fix AttributeError in helpers.py
Turns out Ansible can't be trusted to actually check the result
dictionary everywhere it expects one, so put the real exception text
into -vvv output too.
2018-03-19 21:58:33 +05:45
David Wilson b63af1de85 ansible: implement _transfer_data for <2.4 template action 2018-03-19 21:58:33 +05:45
David Wilson b527628b17 issue #109: do exactly what Ansible does
Could it be that some empty dict magically gets populated from somewhere
invisible?
2018-03-19 21:58:32 +05:45
David Wilson e0382ab2db ansible: teach ActionModule to disappear for non-Mitogen Connections
Closes #103.
2018-03-19 21:58:32 +05:45
David Wilson 734fb75203 ansible: mixins.py docstrings. 2018-03-19 21:58:32 +05:45
David Wilson 7080751f13 ansible: support environment: too. 2018-03-19 21:58:32 +05:45
David Wilson 7cf2edc3a8 ansible: Support many more common playbook variables. 2018-03-19 21:58:32 +05:45
David Wilson 3183dd4147 ansible: initial support for async jobs
Running in a thread to begin with, but this must change.
2018-03-19 21:58:31 +05:45
David Wilson ff617824a1 ansible: fix some flake8 errors
* Unused imports
* Undefined names in helpers.py
* Copyright header wrapping
2018-03-19 21:58:31 +05:45
David Wilson 76e739a0ba ansible: inverted sense of execute paramter 2018-03-19 21:58:31 +05:45
David Wilson 83f2862431 ansible: _remote_chmod() / _fixup_perms2() can be called sometimes.
It's used at least by the copy module, even though the result is still
mostly a no-op. _remote_chmod() doesn't accept octal mode, it accepts
symbolic mode. So implement a symbolic parser in helpers.py.
2018-03-19 21:58:31 +05:45
David Wilson f3315fc172 ansible: better emulate _low_level_execute_command()
Still needs a ton of work to emulate argument handling, shell selection,
and output emulation in every case. Unsurprisingly, Ansible documents
none of this.
2018-03-19 21:58:31 +05:45
David Wilson cccfebec74 ansible: correct temp file cleanup for template action. 2018-03-19 21:58:30 +05:45
David Wilson 1e9fd63343 ansible: Ansible 2.4 compatibility. 2018-03-19 21:58:30 +05:45
David Wilson 91116810a1 ansible: delete utils.py and promote cast() to mitogen.utils 2018-03-19 21:58:30 +05:45
David Wilson 57894b18e0 ansible: support class_only=True in wrapped loader 2018-03-19 21:58:29 +05:45
David Wilson 331f77ee2b ansible: generalized action module wrapping. 2018-03-19 21:58:29 +05:45