Commit Graph

16581 Commits (bafcd7becd0c0c72f1182b25f1ff7fcb030c69e8)
 

Author SHA1 Message Date
Marius Gedminas f5d4935197 Python 3: treat python as a function in module_utils/basic.py
NB: we can't use 'from __future__ import print_function', but luckily
print(one_thing) works fine on both Python 2 and Python 3 without that.
9 years ago
Marius Gedminas e71a986e16 Python 3: avoid octal constants in module_utils/basic.py 9 years ago
Marius Gedminas d2bec7f81f Python 3: avoid "except ..., e:" in module_utils/basic.py
Make the code compatible with Pythons 2.4 through 3.5 by using
sys.exc_info()[1] instead.

This is necessary but not sufficient for Python 3 compatibility.
9 years ago
James Cammarata 65630d2ce1 Fixing one more bug related to staticmethods in LookupBase 9 years ago
James Cammarata cbbb270761 Cleanup bug from moving base lookup methods to staticmethods 9 years ago
Abhijit Menon-Sen ac98fe9e89 Implement ssh connection handling as a state machine
The event loop (even after it was brought into one place in _run in the
previous commit) was hard to follow. The states and transitions weren't
clear or documented, and the privilege escalation code was non-blocking
while the rest was blocking.

Now we have a state machine with four states: awaiting_prompt,
awaiting_escalation, ready_to_send (initial data), and awaiting_exit.
The actions in each state and the transitions between then are clearly
documented.

The check_incorrect_password() method no longer checks for empty strings
(since they will always match), and check_become_success() uses equality
rather than a substring match to avoid thinking an echoed command is an
indication of successful escalation. Also adds a check_missing_password
connection method to detect the error from sudo -n/doas -n.
9 years ago
Abhijit Menon-Sen 840a32bc08 Reorganise ssh.py to cleanly separate responsibilities
The main exec_command/put_file/fetch_file methods now _build_command and
call _run to handle input from/output to the ssh process. The purpose is
to bring connection handling together in one place so that the locking
doesn't have to be split across functions.

Note that this doesn't change the privilege escalation and connection IO
code at all—just puts it all into one function.

Most of the changes are just moving code from one place to another (e.g.
from _connect to _build_command, from _exec_command and _communicate to
_run), but there are some other notable changes:

1. We test for the existence of sshpass the first time we need to use
   password authentication, and remember the result.
2. We set _persistent in _build_command if we're using ControlPersist,
   for later use in close(). (The detection could be smarter.)
3. Some apparently inadvertent inconsistencies between put_file and
   fetch_file (e.g. argument quoting, sftp -b use) have been removed.

Also reorders functions into a logical sequence, removes unused imports
and functions, etc.

Aside: the high-level EXEC/PUT/FETCH description should really be logged
from ConnectionBase, while individual subclasses log transport-specific
details.
9 years ago
James Cammarata 95c6fe88e4 Fix handling of conditional vars_files which contain variables
Fixes #12484
9 years ago
Jeff Widman 3f135e3fac Clarified that .yml, .yaml, and .json are allowable file extensions for inventory variables files. 9 years ago
Toshio Kuratomi c83f51b7f2 Some LookupBase cleanups:
* Make LookupBase an abc with required methods (run()) marked as an
  abstractmethod
* Mark methods that don't use self as @staticmethod
* Document how to implement the run method of a lookup plugin.
9 years ago
James Cammarata 1e860d020e Merge pull request #12479 from jeffwidman/patch-1
Add mention of roles_path parameter to `ansible-galaxy install` command
9 years ago
Jeff Widman 983ee0898d Add mention of roles_path parameter to `ansible-galaxy install` command 9 years ago
Toshio Kuratomi 049952fa50 Update submodule refs. 9 years ago
Brian Coca a421fa5bb9 added new route53_health_check module 9 years ago
James Cammarata 1e7fd2196d Fixing synchronize + delegate_to user bug
Fixes #12464
9 years ago
James Cammarata 3ffc2783c4 Don't bomb out on handlers with undefined variables in their names 9 years ago
Toshio Kuratomi 4b0d52d2cb Merge pull request #12420 from ansible/win_prefix_modules
Fix for user defined modules not overriding modules from core.
9 years ago
James Cammarata 1076155d8d When failing because of vars_files templating, try and bubble up the file/line info 9 years ago
Toshio Kuratomi 18e2ee16ef Fix for user defined modules not overriding modules from core.
This fix takes into account that powershell modules are somewhat
different than regular modules and have to be kept separate.
9 years ago
Toshio Kuratomi f61fb9787d Update submodule refs 9 years ago
Rene Moser 9514ac860d cloudstack: more integration tests 9 years ago
Rene Moser b43939dfd6 cloudstack: make tags handling idempotence
Credits to @jeffersongirao, who provided the patch.
9 years ago
James Cammarata c30e464388 Additional tweaks to callback output for delegate_to 9 years ago
James Cammarata 513619867a Show delegated-to host in callback message
Fixes #12465
9 years ago
Rene Moser efd122c2f0 cloudstack: add returns_to_int return handling into utils
It is not uncommon that the API returns string for int values e.g. ports in listFirewallRules or listPortForwardings,
9 years ago
Rene Moser c9a3801a25 cloudstack: common argument_spec and requried_together to utils 9 years ago
James Cammarata f563b22446 Merge pull request #12461 from mgedmin/py3k
Python 3: there's no basestring
9 years ago
James Cammarata d2949f5449 Merge pull request #12463 from mgedmin/fix-ansible-doc
Fix option descriptions in ansible-doc output
9 years ago
James Cammarata 0fb4a6a67b Tweak to the way new host variables are created for delegated hosts 9 years ago
Marius Gedminas 339790adc4 Fix option descriptions in ansible-doc output
Fixes #12462.
9 years ago
James Cammarata 18adfc6d1a Set some default vars on hosts created for delegate_to connections 9 years ago
James Cammarata a22f7b883d Restrict role param vars to tasks within that role
Fixes #12460
9 years ago
Marius Gedminas fc0dcc3947 Python 3: there's no basestring
Fixes one failing test.

Now technically a filename can be a bytestring, even on Python 3.  I
hope this is unlikely for Ansible.
9 years ago
James Cammarata ecf7d8c9ee Fix relative path bug in copy action
Without rebreaking #12055

Fixes #ansible-modules-core/2098
9 years ago
James Cammarata 53794b692c Merge pull request #12457 from ansible/warn-if-core-modules-not-present
Detect if core modules aren't installed and warn if that is the  case
9 years ago
Toshio Kuratomi 627f9d73ba Detect if core modules aren't installed and warn if that is the case
Fixes #11206
9 years ago
Brian Coca d27b73e7b5 fixed case in which boto3 is present but module is not using it yet 9 years ago
James Cammarata cc646c0a82 Merge pull request #12452 from lambeau/devel
Fix typo
9 years ago
James Cammarata cb7060c9fe Allow undefined var errors to bubble up when templating vars_files in certain conditions
Follow up to 8769f03c, which allows the undefined var error to be raised
if we're getting vars with a full context (play/host/task) and the host
has already gathered facts. In this way, vars_files containing variables
that fail to be templated are not silently ignored.
9 years ago
Nathaniel Schaaf 356cae9e5d Fix typo 9 years ago
Brian Coca f96255f7fd fixed typo 9 years ago
James Cammarata 86566e691a Merge pull request #12447 from mgedmin/py3k
Python 3: there is no 'basestring'
9 years ago
James Cammarata 8769f03c16 Also catch AnsibleUndefinedVariable errors when templating vars_files names
Fixes #12449
9 years ago
Brian Coca d851df3b31 Merge pull request #12448 from ansible/close-module-path
Close module file once we're done reading from it
9 years ago
Gert Leenders 2dc61bc73f Installation update for people using Fishshell 9 years ago
Toshio Kuratomi 2a614c1c0f Close module file once we're done reading from it 9 years ago
Marius Gedminas 9cdb6ebae3 Python 3: there is no 'basestring'
This fixes a failing unit test.

In actual use (which is still quite far), I'm not sure if bytes ->
unicode conversion should be done here (in which case the code will fail
with an AttributeError: 'bytes' object has no attribute 'readlines'), or
inside self._connection.exec_command() (in which case my change is
correct).
9 years ago
James Cammarata 3f5ea43fb8 Merge pull request #12446 from mcsalgado/dict_get
Use dict.get()
9 years ago
Victor Salgado 20bbd66e85 Use dict.get() 9 years ago
James Cammarata 65bf14cbb0 Merge pull request #12431 from hslee16/devel
Stops using _groups_list to check for host when using 'add_host'
9 years ago