Commit Graph

155 Commits (e7035220102238c7e823946f3bbd6174dc87b57e)

Author SHA1 Message Date
David Wilson d493a3d7ca Merge branch 'python3'
Hooray \o/

Remaining issues:

- Two unit test races that appear related to our broken zombie process
  reaping, doesn't impact Ansible.

Closes #16.
6 years ago
David Wilson 0461738ca6 docs: small reference fixes. 6 years ago
David Wilson 18c9cd2365 docs: update supported Python version list. 6 years ago
David Wilson 6632f682da docs: change install docs to point at stable branch. 6 years ago
David Wilson 04b65020ac issue #278: ansible: support mitogen_ssh_debug_level variable. 6 years ago
David Wilson 3994f1b30a ansible: implment async job time limit. 6 years ago
David Wilson d2accbce53 docs: remove more Ansible limitations 6 years ago
David Wilson daa9cfd0a8 ansible: MITOGEN_DUMP_THREAD_STACKS for mux process too 6 years ago
David Wilson aba6cb302a docs: add example sudoers rule
hat tip @seuf :)
6 years ago
David Wilson 70376d861a issue #217: docs: remove limitation 6 years ago
David Wilson 4cd9e09130 issue #249: docs: remove limitation 6 years ago
David Wilson 48535cc661 docs: more accurate bullet. 6 years ago
David Wilson d148e3db4e docs: move installation section above demo 6 years ago
David Wilson 3058efc80f docs: more updates.
- accurate description of Ansible timeouts
- rough detach() sketch
6 years ago
David Wilson 78c401ba4d ansible: support su become method. 6 years ago
David Wilson 187e3a3fc1 ansible: support 2.3 too. 6 years ago
David Wilson 58eb9828b0 docs: remove limitation. 6 years ago
David Wilson b0309b539c ansible: disable interpreter recycling for connections.
Must explicitly specify enable_lru=True in ContextService.get() to
trigger recycling.
6 years ago
David Wilson ec22fee7a7 docs: more ansible updates 6 years ago
David Wilson 79fd35092b docs: more links 6 years ago
David Wilson 65e6a44fe7 docs: add links. 6 years ago
David Wilson 29f6c46e97 docs: add file transfer safety section. 6 years ago
David Wilson bba2a42e44 ansible: add mitogen_sudo method, split out connection subclasses.
Slowly moving towards real implementations in those files.
6 years ago
David Wilson 7c5bbc5168 setns: support changing user.
To match existing third party plugin.
6 years ago
David Wilson 58d8f60f57 docs: better connection type docs 6 years ago
David Wilson 79c2d6c289 docs: links to Ansible docs 6 years ago
David Wilson 098995539d ansible: implement FreeBSD jail support. 6 years ago
David Wilson d8e71799e7 docs: typo 6 years ago
David Wilson b1563cd8c1 ansible: hijack lxd connections too. 6 years ago
David Wilson 131bc768c7 ansible: implement LXC support. 6 years ago
David Wilson 9d0949eb99 docker: fixes & add username parameter. 6 years ago
David Wilson 02ce332b26 docs: show become_user example for connection delegation. 6 years ago
David Wilson 3ce6b36932 docs: major Ansible page update. 6 years ago
David Wilson d2345d11e9 docs: remove warning labels. 6 years ago
David Wilson 5913be64d7 docs: remove last remaining major risk :D 6 years ago
David Wilson 6aad45748b docs: typo 6 years ago
David Wilson 9f94fb78c8 issue #159: make LRU size configurable. 6 years ago
David Wilson a96969ee29 docs: concision 6 years ago
David Wilson cc980569a3 issue #159: initial context LRU implementation
Now Connection.close() *must* be called in the worker, to ensure the
reference count for a context drops correctly.

Remove 'discriminator' for now, I'm not using it for testing any more
and it complicated this code.

This code is a car crash, it needs rewritten again. Ideally some/most of
this behaviour could live on services.DeduplicatingService somehow, but
I couldn't come up with a sensible design.
6 years ago
David Wilson e9f94e1bbb docs: tidy up big list of bullets. 6 years ago
David Wilson 43ecbe350c docs: rearrange more ansible risks 6 years ago
David Wilson 19a418cc6f docs: document mitogen_task_isolation. 6 years ago
David Wilson ba74f8f743 docs: remove Ansible risk 6 years ago
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
David Wilson 56b563161b docs: single-threaded connection is the most important limitation 6 years ago
David Wilson dd9d3494e0 docs: small ansible.rst updates 6 years ago
David Wilson ce6648da51 docs: mention CPU usage reduction 6 years ago
David Wilson 270db025c0 docs: fix up Ansible install docs. 6 years ago
David Wilson e9060b3b7f docs: more modest and accurate numbers for Ansible 6 years ago
David Wilson a817f5e9e8 docs: more marketing, add lots of drama bold. 6 years ago
David Wilson de1b3602e5 docs: tidy up ansible.rst 6 years ago