Commit Graph

90 Commits (3322eaef455863998598e0b9d4ecf41e36fd7a08)

Author SHA1 Message Date
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