Commit Graph

101 Commits

Author SHA1 Message Date
David Wilson 04b65020ac issue #278: ansible: support mitogen_ssh_debug_level variable. 2018-06-22 16:32:24 +01:00
David Wilson 3994f1b30a ansible: implment async job time limit. 2018-06-10 02:28:49 +01:00
David Wilson d2accbce53 docs: remove more Ansible limitations 2018-06-10 01:34:15 +01:00
David Wilson daa9cfd0a8 ansible: MITOGEN_DUMP_THREAD_STACKS for mux process too 2018-05-29 18:10:08 +01:00
David Wilson aba6cb302a docs: add example sudoers rule
hat tip @seuf :)
2018-05-28 23:33:21 +01:00
David Wilson 70376d861a issue #217: docs: remove limitation 2018-05-15 01:57:09 +01:00
David Wilson 4cd9e09130 issue #249: docs: remove limitation 2018-05-15 00:22:02 +01:00
David Wilson 48535cc661 docs: more accurate bullet. 2018-05-08 04:28:39 +01:00
David Wilson d148e3db4e docs: move installation section above demo 2018-05-08 04:24:33 +01:00
David Wilson 3058efc80f docs: more updates.
- accurate description of Ansible timeouts
- rough detach() sketch
2018-05-03 17:37:24 +01:00
David Wilson 78c401ba4d ansible: support su become method. 2018-05-02 03:49:44 +01:00
David Wilson 187e3a3fc1 ansible: support 2.3 too. 2018-04-30 19:15:51 +01:00
David Wilson 58eb9828b0 docs: remove limitation. 2018-04-29 19:35:43 +01:00
David Wilson b0309b539c ansible: disable interpreter recycling for connections.
Must explicitly specify enable_lru=True in ContextService.get() to
trigger recycling.
2018-04-29 09:53:16 +01:00
David Wilson ec22fee7a7 docs: more ansible updates 2018-04-29 09:37:49 +01:00
David Wilson 79fd35092b docs: more links 2018-04-29 04:00:11 +01:00
David Wilson 65e6a44fe7 docs: add links. 2018-04-29 02:31:32 +01:00
David Wilson 29f6c46e97 docs: add file transfer safety section. 2018-04-29 02:14:29 +01:00
David Wilson bba2a42e44 ansible: add mitogen_sudo method, split out connection subclasses.
Slowly moving towards real implementations in those files.
2018-04-29 01:45:52 +01:00
David Wilson 7c5bbc5168 setns: support changing user.
To match existing third party plugin.
2018-04-29 00:38:53 +01:00
David Wilson 58d8f60f57 docs: better connection type docs 2018-04-28 21:36:51 +01:00
David Wilson 79c2d6c289 docs: links to Ansible docs 2018-04-27 06:50:03 +01:00
David Wilson 098995539d ansible: implement FreeBSD jail support. 2018-04-27 06:21:10 +01:00
David Wilson d8e71799e7 docs: typo 2018-04-27 05:01:59 +01:00
David Wilson b1563cd8c1 ansible: hijack lxd connections too. 2018-04-27 04:45:40 +01:00
David Wilson 131bc768c7 ansible: implement LXC support. 2018-04-27 04:40:56 +01:00
David Wilson 9d0949eb99 docker: fixes & add username parameter. 2018-04-27 03:00:11 +01:00
David Wilson 02ce332b26 docs: show become_user example for connection delegation. 2018-04-27 01:40:17 +01:00
David Wilson 3ce6b36932 docs: major Ansible page update. 2018-04-27 01:32:51 +01:00
David Wilson d2345d11e9 docs: remove warning labels. 2018-04-22 02:53:14 +01:00
David Wilson 5913be64d7 docs: remove last remaining major risk :D 2018-04-22 02:50:04 +01:00
David Wilson 6aad45748b docs: typo 2018-04-13 15:18:30 +01:00
David Wilson 9f94fb78c8 issue #159: make LRU size configurable. 2018-04-13 15:16:54 +01:00
David Wilson a96969ee29 docs: concision 2018-04-13 13:54:53 +01:00
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.
2018-04-13 13:49:16 +01:00
David Wilson e9f94e1bbb docs: tidy up big list of bullets. 2018-04-09 15:12:39 +01:00
David Wilson 43ecbe350c docs: rearrange more ansible risks 2018-04-09 00:32:52 +01:00
David Wilson 19a418cc6f docs: document mitogen_task_isolation. 2018-04-09 00:10:21 +01:00
David Wilson ba74f8f743 docs: remove Ansible risk 2018-04-09 00:05:57 +01:00
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.
2018-04-09 00:03:09 +01:00
David Wilson a643f13ebe issue #106: docs: tidyup. 2018-04-06 17:18:37 +01:00
David Wilson 432ebbca89 issue #106: docs: initial docs for how modules execute. 2018-04-06 17:09:14 +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 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 38311336e1 docs: link to Ansible video demo 2018-04-03 11:13:41 +01:00
David Wilson 380ef7376d ansible: Add support for free strategy. 2018-04-02 00:01:28 +01:00
David Wilson 8425b196e7 docs: merge duplicate risks 2018-04-01 22:34:53 +01:00
David Wilson 6dcefd631a issue #106: docs: remove built-in only limitation :> 2018-04-01 22:09:56 +01:00
David Wilson 8674ec42dd docs: add new risk 2018-03-30 01:37:17 +05:45
David Wilson d68833757b docs: slightly bikeshed last testimonial 2018-03-26 18:37:12 +05:45