Commit Graph

62 Commits (3613162bc04bc4a7229a46f580f65608cccecc07)

Author SHA1 Message Date
David Wilson 3613162bc0 ansible: enable forking when requested and for async jobs.
Closes #105.
References #155.

mitogen/service.py:
    Refactor services to support individually exposed methods with
    different security policies for each method.

    - @mitogen.service.expose() to expose a method and set its policy
    - @mitogen.service.arg_spec() to validate input.
    - Require basic service message format to be a tuple of
      `(method, kwargs)`, where kwargs is always a dict.
    - Update DeduplicatingService to match the new scheme.

ansible_mitogen/connection.py:
    - Rename 'method' to 'method_name' to disambiguate it from the
      service.call()'s method= argument.

ansible_mitogen/planner.py:
    - Generate an ID for every job, sync or not, and fetch job results
      from JobResultService rather than via the initiating function
      call's return value.
    - Planner subclasses now get to select whether their Runner should
      run in a forked process. The base implementation requests this if
      the 'mitogen_isolation_mode=fork' task variable is present.

ansible_mitogen/runner.py:
    Teach runners to deliver their result via JobResultService executing
    in their indirect parent mux process.

ansible_mitogen/plugins/actions/mitogen_async_status.py:
    Split the implementation up into methods, and more compatibly
    emulate Ansible's existing output.

ansible_mitogen/process.py:
    Mux processes now host JobResultService.

ansible_mitogen/services.py:
    Update existing services to the new mitogen.service scheme, and
    implement JobResultService:

    * listen() method for synchronous jobs. planner.invoke() registers a
      Sender with the service prior to invoking the job, then sleeps
      waiting for the service to write the job result to the
      corresponding Receiver.

    * Non-blocking get() method for implementing mitogen_async_status
      action.

    * Child-accessible push() method for delivering task results.

ansible_mitogen/target.py:
    New helpers for spawning a virginal subprocess on startup, from
    which asynchronous and mitogen_task_isolation=fork jobs are forked.
    Necessary to avoid a task inheriting potentially
    polluted/monkey-patched parent environment, since remaining jobs
    continue to run in the original child process.

docs/ansible.rst:
    Add/merge/remove some behaviours/risks.

tests/ansible/integration:
    New tests for forking/async.
6 years ago
David Wilson a643f13ebe issue #106: docs: tidyup. 6 years ago
David Wilson 432ebbca89 issue #106: docs: initial docs for how modules execute. 6 years ago
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.
6 years ago
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.
6 years ago
David Wilson 38311336e1 docs: link to Ansible video demo 6 years ago
David Wilson 380ef7376d ansible: Add support for free strategy. 6 years ago
David Wilson 8425b196e7 docs: merge duplicate risks 6 years ago
David Wilson 6dcefd631a issue #106: docs: remove built-in only limitation :> 6 years ago
David Wilson 8674ec42dd docs: add new risk 6 years ago
David Wilson d68833757b docs: slightly bikeshed last testimonial 6 years ago
dw d23a6174a2
Merge pull request #167 from danielcompton/patch-1
Add testimonial from Clojars
6 years ago
David Wilson b254373cd7 docs: add local task serialization risk 6 years ago
Daniel Compton 871b853b59
Add testimonial from Clojars 6 years ago
David Wilson 447353ecb8 docs: ansible.rst: note multi-host perf isn't great right now 6 years ago
David Wilson aeeeb45ccb docs: farewell, glorious iframe! 6 years ago
David Wilson 071d9fbfb3 docs: tidy ansible docs. 6 years ago
David Wilson dec3af375a issue #144: ansible: increase default pool size to 16. 6 years ago
David Wilson 7a74bb0a39 docs: update ansible risks/differences. 6 years ago
David Wilson bcc15987fc docs: extra ansible paragraph. 6 years ago
David Wilson 7a394dc73e ansible: allow establishment of duplicate SSH connections 6 years ago
David Wilson 4691ce0b95 issue #150: ansible: add basic Docker support. 6 years ago
David Wilson 67ff762ba5 issue #139: docs: remove note about bad buffering 6 years ago
David Wilson d1888f1908 docs: reorder sections 6 years ago
David Wilson 014247ce66 docs: another crazy Ansible success story 6 years ago
David Wilson 88c198ea05 issue #141: copy Ansible's connect_timeout for sudo too. 6 years ago
David Wilson 63c3fc623c docs: note the semantic difference in Mitogen vs. Ansible timeouts
Related to issue #141.
6 years ago
David Wilson 8f85943083 issue #139: mention relating buffering issue 6 years ago
David Wilson f8c85b549f docs: typo 6 years ago
David Wilson dc9dda08e1 Add link to IRC; closes #116 6 years ago
Alex Willmer 1c20c61605 docs: Convert all URLs that support https://
Excluded: graphml XML namespaces, links to e.g. Fabric homepage

Fixes #128
6 years ago
David Wilson 089f39716e docs: beginnings of testimonials section 6 years ago
David Wilson 500c4f419c docs: update limitations list for Ansible. 6 years ago
David Wilson 537a263261 docs: So many typos 6 years ago
David Wilson 6bd4c5ead5 docs: Ansible logging update (#111) 6 years ago
David Wilson 04bb5881b6 ansible: doc updates 6 years ago
David Wilson 9515291024 docs: small fix 6 years ago
David Wilson 3ddbf1a503 ansible: basic support for ssh_args 6 years ago
David Wilson 1b28252ad0 docs: get rid of "medium risk" category 6 years ago
David Wilson da00437f1e ansible: Support ansible_ssh_private_key_file 6 years ago
David Wilson a87b665099 ansible: limited support for become_flags, more docs. 6 years ago
David Wilson cd53023768 docs: Fix install docs now Ansible package layout changed. 6 years ago
David Wilson 7cf2edc3a8 ansible: Support many more common playbook variables. 6 years ago
David Wilson ba644e184d docs: Split up limitations list, add warning 6 years ago
David Wilson 3183dd4147 ansible: initial support for async jobs
Running in a thread to begin with, but this must change.
6 years ago
David Wilson e913c11e50 docs: new Ansible limitation 6 years ago
David Wilson 860a635500 docs: remove delegate_to limitation 6 years ago
David Wilson dfdb7ab128 docs: more Ansible 6 years ago
David Wilson cf7f8ff490 docs: document one more Ansible limitation 6 years ago
David Wilson 0c056ddbe2 docs: new Ansible limitation, add new heading
Some differences are eventually likely to become permanent, because the
existing behaviour is unforgiveable.
6 years ago