Commit Graph

5404 Commits (bafcd7becd0c0c72f1182b25f1ff7fcb030c69e8)

Author SHA1 Message Date
James Cammarata 82faba619e Also add args_path param to powershell shell plugin 10 years ago
James Cammarata 30d481ac57 Fix old-style (non-python) module support 10 years ago
Toshio Kuratomi e40e08d799 Update core sumodule ref to fix docs 10 years ago
Abhijit Menon-Sen b127221f50 Pass default None to getattr, remove repeated call 10 years ago
Abhijit Menon-Sen 96c4dc273a Set explicit default for ANSIBLE_SSH_ARGS
The earlier code behaved exactly as though this default had been set,
but it was actually handled as a(n unnecessary) special case inside the
connection plugin, rather than set as an explicit default.

If the default is overriden either in ansible.cfg or the environment,
the new code will continue to work (in fact, it won't know or care,
since it just uses the value set in the PlayContext).

This is submitted as a separate commit for easier review to address
backwards-compatibility concerns.
10 years ago
Abhijit Menon-Sen 1981bf2b95 Aggregate ssh arguments in PlayContext instead of the connection plugin
Using set_host_overrides() in the connection plugin to access the ssh
argument variables from the inventory didn't see group_vars/host_vars
settings, as noted earlier. Instead, we can set the correct values in
the PlayContext, which has access to all command-line options, task
settings, and variables.

The only downside of doing so is that the source of the settings is no
longer available in ssh.py, and therefore can't be logged. But the code
is simpler, and it actually works.

This change was suggested by @jimi-c in response to the FIXME in the
earlier commit.
10 years ago
Abhijit Menon-Sen 3ad9b4cba6 Rework additional ssh argument handling
Now we have the following ways to set additional arguments:

1. [ssh_connection]ssh_args in ansible.cfg: global setting, prepended to
   every command line for ssh/scp/sftp. Overrides default ControlPersist
   settings.
2. ansible_ssh_common_args inventory variable. Appended to every command
   line for ssh/scp/sftp. Used in addition to ssh_args, if set above, or
   the default settings.
3. ansible_{sftp,scp,ssh}_extra_args inventory variables. Appended to
   every command line for the relevant binary only. Used in addition to
   #1 and #2, if set above, or the default settings.
3. Using the --ssh-common-args or --{sftp,scp,ssh}-extra-args command
   line options (which are overriden by #2 and #3 above).

This preserves backwards compatibility (for ssh_args in ansible.cfg),
but also permits global settings (e.g. ProxyCommand via _common_args) or
ssh-specific options (e.g. -R via ssh_extra_args).

Fixes #12576
10 years ago
Toshio Kuratomi f13d5201b8 Update module refs 10 years ago
Brian Coca 4c9f58a152 added no_log censoring to item output
should be last commit that fixes #12214
10 years ago
Brian Coca ba4afcbbb6 added no_log to results
normalized outputs to use display class
cleaned up unused imports
10 years ago
Brian Coca c27bd4fab0 {sudo,su}_user does not imply become 10 years ago
James Cammarata 57372906aa Pull host/group vars when adding hosts/groups
Fixes #12582
10 years ago
James Cammarata aa3687d736 Fix syntax error for octal in encrypt methods 10 years ago
James Cammarata 538568305a Submodule pointer update for accelerate module fixes 10 years ago
James Cammarata 8ef78b1cf8 Fixing accelerated connection plugin 10 years ago
Brian Coca 3705d54485 fixed error reporting on splitter 10 years ago
Brian Coca de2f62bd9e fixed error reporting for unkown become user 10 years ago
Brian Coca 6d6bfbc3d2 added missing import for pwd, was being obscured by exception catching and fallback 10 years ago
Brian Coca a680ef66dd fixed vault password file script execution 10 years ago
Brian Coca 6b842d9c49 fixed incorrect data passing on certain events 10 years ago
Brian Coca 2463922306 fixed error reporting when missing redis import 10 years ago
Brian Coca 6e96188085 added missing entry for dealing with bcc 10 years ago
Brian Coca 6ec5abf1c3 fixed some pyflakes 10 years ago
Abhijit Menon-Sen 49b35ad5dd Remove mysterious old cruft
The two lines were added in 2673eb0a and modified in 60e1a1f8, but foo
is completely unused. Removing it doesn't break anything: out it goes!
10 years ago
Brian Coca fe0e4f27ad Merge pull request #12584 from amenonsen/fixups
Remove an unwanted FIXME annotation
ok, confirmed we don't want to support it
10 years ago
Brian Coca 6c190aa8a4 updated ansible-doc to ignore more stuff that has been added to the module repos 10 years ago
Brian Coca 1a56a5c442 created debug method, renamed debug attribute to _debug 10 years ago
James Cammarata deff045aa9 Fix bug caused by options not having start_at_task when used through adhoc
Fixes #12590
10 years ago
Toshio Kuratomi a0920c06e1 Pull submodule refs to fix docs builds 10 years ago
Toshio Kuratomi 4dae7eeca1 Update submodule refs 10 years ago
Toshio Kuratomi 56fa9a5098 Port to v2 API 10 years ago
Toshio Kuratomi d35c9a30fb Minor refactorings 10 years ago
Toshio Kuratomi 888bcd65a8 Create error messages instead of tracebacks. 10 years ago
Abhijit Menon-Sen 93515468c4 Remove an unwanted FIXME annotation
<crab> jimi|ansible: do you think it should be possible to add both
       foo:22 and foo:23 to the inventory?
<jimi|ansible> no

…so we don't want an invitation to FIXME.
10 years ago
Toshio Kuratomi 4cfcf5d61b Merge pull request #12568 from mgedmin/py3k
Python 3: fix most tests for ansible.module_utils.basic
10 years ago
Trond Hindenes 94cfbe7ee9 Get-AnsibleParam 10 years ago
James Cammarata dcb8caf9e8 Remember if we already skipped tasks via --start-at-task
Fixes #12482
10 years ago
chouseknecht 57adf11262 Fix metadata description for galaxy_tags. 10 years ago
chouseknecht f4690e3bfe Changing tag to galaxy_tag. 10 years ago
chouseknecht 8360a1b3f2 Replace categories with tags.
Also added --ignore-certs option for use with install and search commands. Helpful when
overriding server and server has self signed cert.
10 years ago
Abhijit Menon-Sen 0bb34fd076 Make «ansible-vault view» not write plaintext to a tempfile
CLI already provides a pager() method that feeds $PAGER on stdin, so we
just feed that the plaintext from the vault file. We can also eliminate
the redundant and now-unused shell_pager_command method in VaultEditor.
10 years ago
Brian Coca bf06e36382 updated async to pass along no_log setting 10 years ago
Marius Gedminas cc1e1648f5 Tweak comment style 10 years ago
Marius Gedminas 213029a21e Python 3: don't convert unicode to unicode 10 years ago
Marius Gedminas c7be004c19 Python 3 has no dict.iteritems()
(Reminder: cannot use six here, module_utils get shipped to remote
machines that may not have six installed -- besides six doens't support
Python 2.4.)
10 years ago
Marius Gedminas 9f3e5ceb14 Make sure 'basestring', 'bytes' and 'unicode' are defined
Python 3 doesn't have 'basestring' and 'unicode'.

Python 2.4 doesn't have 'bytes'
10 years ago
Brian Coca ddafed4403 Merge pull request #12528 from bcoca/task_logging
task logging revamp
10 years ago
Brian Coca 7b64126c9d pushed up openvz detection for cases of 'stacked' virtualization 10 years ago
Linus Unnebäck 45f9800754 facts: correctly detect docker inside a xen host 10 years ago
James Cammarata 3bd71d0619 Use delegated_to field for play context remote_addr, if none other exists
Fixes #12527
10 years ago
James Cammarata 40bdf09998 Merge pull request #12561 from srvg/anotherdirpy
Inject existing groups at InventoryDir initialization
10 years ago
James Cammarata 6fcd292c5e Merge pull request #12569 from amenonsen/fixes
Bring groups handling in ini.py up-to-date (trivial fix)
10 years ago
James Cammarata dfa33d0f23 Tweak variable manager use in role includes to avoid test failures 10 years ago
Abhijit Menon-Sen 50d75f8d6d Bring groups handling in ini.py up-to-date
Since c8f2483d, ini.py expects to always be passed in a pre-created list
of groups, and can no longer deal sensibly with an empty list; this just
makes that expectation clear.
10 years ago
James Cammarata a89412ecb1 Fail all hosts if a run_once task fails
Fixes #12563
10 years ago
James Cammarata 7173f587ed Allow delegate_to on a role again
Fixes #12560
10 years ago
James Cammarata a3e913da62 Don't assume handlers exist in the same role (if any)
Fixes #12536
10 years ago
Serge van Ginderachter 7461ba9998 Inject existing groups at InventoryDir initialization
This fixes a corner case where ini files live in a subdir
of the main inventory directory.

Reproducing the original error:

mkdir -p inventory/ini
cat > inventory/ini/hosts << EOF
[www]
www1
EOF

$ ansible -i inventory/ all -m ping
ERROR! 'all'

(or without the [www] group, it would complain about 'ungrouped')
10 years ago
James Cammarata 79e364d98b Properly template role dependency names
Fixes #12505
10 years ago
Marius Gedminas 5edd6d9be4 Python 3: there's no basestring
Fixes another failing test.

(I don't want to do a global search/replace for 'basestring' because I
want to have unit tests covering each occurrence.  When I run out of
existing failing tests, I'll try to write new ones.)
10 years ago
Toshio Kuratomi 95ede22a1e Add a comment about the docker connection and usage by non-root users 10 years ago
Toshio Kuratomi 0e110d23f8 Misc cleanups and some fixes for docker connection plugin
* Remove extraneous imports
* Fix some error handling
* Enable pipelining
* Disable su since it doesn't work
* Add error message when installed docker is not recent enough to
  support this plugin
* Move nested functions to class level
* Make transport a class attribute
* Make exec_command, put_file and fetch_file more robust
10 years ago
Toshio Kuratomi 1d119a1f46 Cleanup some extraneous imports 10 years ago
James Cammarata ffdba96668 Save the included directory for playbook includes for use as the basedir
Fixes #12524
10 years ago
Konstantin Manna 4226e49bc6 bugfix: statement had no effect => statement now has assumed effect 10 years ago
Konstantin Manna 1ccfeafa76 bugfix: use correct close calls 10 years ago
Brian Coca c1ad96e5cf removed fixme as it is already implemented below. 10 years ago
RedRampage 922b5c8109 Removed deletion of salt by 'password' lookup
Removed deletion of salt param from lookup file by 'password' lookup_filter.
Old behaviour leads to constant changed status when two tasks uses same lookup,
one with 'encrypt' parameter, and other without.

For example:

    tasks:
      - name: Create user
        user:
          password: "{{ lookup('password', inventory_dir + '/creds/user/pass' ncrypt=sha512_crypt) }}"
          ...
    # Lookup file 'creds/user/pass' now contain password with salt
      - name: Create htpasswd
        htpasswd:
          password: "{{ lookup('password', inventory_dir + '/creds/user/pass') }}"
          ...
    # Salt gets deleted from lookup file 'creds/user/pass'
    # Next run of "Create user" task will create it again and will have 'changed' status
10 years ago
Toshio Kuratomi 12a2585e84 chroot plugin minor touchups:
* Disable su as it's not currently working 100% (and was disabled in v1).
* Move BUFSIZE out of the class to match other conenction plugins
* _connect shouldn't return self.
10 years ago
Toshio Kuratomi 7a4266e9c5 One more try -- the error message should reference the become method
requested via play context
10 years ago
Toshio Kuratomi 696cf32d63 Correct name of variable 10 years ago
Brian Coca 8d024c3747 Merge pull request #12472 from resmo/for_ansible
cloudstack: improvements and tests
10 years ago
Toshio Kuratomi 0dfa1fb43a Correct call to method typo 10 years ago
Toshio Kuratomi d827325644 Re-order the methods in ssh.py so that methods needed for implementation are near and just above the relevant public methods.
Standard with the rest of the code base.
10 years ago
Toshio Kuratomi 37844a5c1b Update submodule refs 10 years ago
Toshio Kuratomi c811668a4d Merge pull request #12546 from amenonsen/ssh-cleanups
A couple of ssh cleanups
10 years ago
Toshio Kuratomi 05af4c8e91 Merge pull request #12471 from amenonsen/pipelining
Make pipelining a connection variable
10 years ago
Abhijit Menon-Sen 38c7422da5 Move ControlPersist/Path checking into a separate method
This is also peripheral to what _build_command needs, can be improved
and tested independently, and so makes more sense in a separate method.

This commit doesn't change any functionality (and I've verified that it
works with the various combinations: control_path set in ansible.cfg,
ssh_args adding or not adding ControlMaster/ControlPersist, etc.).
10 years ago
Toshio Kuratomi c3a05b1181 Update to fix one more doc error 10 years ago
Abhijit Menon-Sen f33d541964 Move sshpass checking into a separate method
Checking for sshpass is peripheral to the calling code, so it's easier
to follow when the details are moved into a method.
10 years ago
Abhijit Menon-Sen 565c6f1ae7 Make ansible_pipelining a connection variable
SSH pipelining can be a significant performance improvement, but it will
not work if sudoers is configured to requiretty. With this change, one
could have pipelining enabled in ansible.cfg, but use sudo to turn off
requiretty in a separate play (or task) where pipelining is disabled:

    - hosts: foo
      vars:
          ansible_pipelining: no
      tasks:
        - lineinfile: dest=/etc/sudoers line='Defaults requiretty' state=absent
          sudo_user: root

(Note that sudoers has a complicated syntax, so the above lineinfile
invocation may be too simplistic for production use; but the point is
that a separate play can do something to disable requiretty.)
10 years ago
Toshio Kuratomi fd267989fb Fix docs build 10 years ago
Toshio Kuratomi 69ebb899a7 Update submodule refs 10 years ago
James Cammarata c860775b5d Another fix for --limit in adhoc 10 years ago
James Cammarata babf47decb Clean up some bugs related to --limit on adhoc commands 10 years ago
James Cammarata 621575681a Merge pull request #12542 from amenonsen/qfix
Clarify why we add -q only for ssh
10 years ago
Abhijit Menon-Sen 2ce219b5af Clarify why we add -q only for ssh 10 years ago
Marius Gedminas 9b39af8e9a Python 3: the StringIO module is gone
Fixes 17 failing tests on Python 3.4, restoring the 8 failures we had
last Friday.
10 years ago
Jesper Geertsen Jonsson 353b549eb0 Fix HTTPError message not being reachable 10 years ago
James Cammarata 4cd810a674 Only append -q option for ssh if we're using ssh 10 years ago
James Cammarata 46984a067c Don't wrap vars from include_vars with UnsafeProxy 10 years ago
James Cammarata abfeb104df Merge pull request #12529 from soarpenguin/bug-fix
fix no self pointer out of class.
10 years ago
Toshio Kuratomi 342bc97322 Port chroot conection plugin to the latest v2 connection API.
Also get pipelining working for people who look to chroot as an example
for their own connection plugins

Note: In the latest v2 API, action handles become but chroot doesn't
reliably handle become.  Maybe we need to add a has_become attribute
that the action can display an appropriate error.
10 years ago
Toshio Kuratomi 056a020357 Do not fail if /proc/uptime is not present
This can happen in chroot environments that don't have all of /proc
available
10 years ago
Toshio Kuratomi ae66d01a33 Document how a command is executed on the remote machine
Helps connection plugin implementors understand how to structure
exec_command()
10 years ago
James Cammarata 6dd38c2a10 Fix parent attribute lookup to be default
Fixes #12526
10 years ago
James Cammarata a1c38a3fda Adding delegate_to to Blocks 10 years ago
Brian Coca bb6141ec41 renamed managed_syslog to no_target_syslog 10 years ago
Abhijit Menon-Sen 8251ab2e37 Update outdated comment
Since #12165 was merged, hostnames are properly validated.
10 years ago
Abhijit Menon-Sen 6ff4d40d74 Update outdated comment
We now use "sudo -n" instead of "sudo -k && sudo …"
10 years ago
soarpenguin 1ea66e234f fix logic judgment error. 10 years ago
soarpenguin 2caa52a981 fix no self pointer out of class. 10 years ago
Brian Coca 37a918438b task logging revamp
* allow global no_log setting, no need to set at play or task level, but can be overriden by them
 * allow turning off syslog only on task execution from target host (manage_syslog), overlaps with no_log functionality
 * created log function for task modules to use, now we can remove all syslog references, will use systemd journal if present
 * added debug flag to modules, so they can make it call new log function conditionally
 * added debug logging in module's run_command
10 years ago
James Cammarata 60e1a1f8eb Fix bug in nested lookup where pop is called indiscriminately 10 years ago
Brian Coca 191ae0831d fixed syntax error 10 years ago
Brian Coca 48412c13b2 fixed copy n paste typo on future code 10 years ago
James Cammarata bb1101498d Clean up typo from cdc6c52 10 years ago
James Cammarata cdc6c5208e Clean string data run through the template engine
Also strip UnsafeProxy off of low level srings and objects to ensure
they don't cause issues later down the road

Fixes #12513
10 years ago
James Cammarata ae9b34b1d9 Fix for equality checking in Host to make sure things are like types 10 years ago
Toshio Kuratomi fa9ea32a86 Fix test of whether a result has a failed host 10 years ago
Brian Coca 1c49e3b842 draft shared service code for modules, part of spliting service module 10 years ago
Toshio Kuratomi 41756be4d3 Update core module ref 10 years ago
Toshio Kuratomi dcdcd9e9c5 Move is_executable to the toplevel of basic.py so we can utilize it from other code 10 years ago
James Cammarata ccddda1ebc Merge pull request #12502 from mgedmin/py3k
Python 3: make test_variable_manager_precedence pass
10 years ago
James Cammarata eb8d7dcd14 Make sure formatted strings don't bomb on tuples
Fixes #12501
10 years ago
James Cammarata 31d5f88a1d Use the task loop to calculate multiple delegated hosts
Due to the way we're now calculating delegate_to, if that value is based
on a loop variable ('item') we need to calculate all of the possible
delegated_to variables for that loop.

Fixes #12499
10 years ago
Toshio Kuratomi a1428d6bed Remove tmp as a parameter to the connection plugins
There doesn't appear to be anything that actually uses tmp_path in the
connection plugins so we don't need to pass that in to exec_command.
That change also means that we don't need to pass tmp_path around in
many places in the action plugins any more.  there may be more cleanup
that can be done there as well (the action plugin's public run() method
takes tmp as a keyword arg but that may not be necessary).

As a sideeffect of this patch, some potential problems with chmod and
the patch, assemble, copy, and template modules has been fixed (those
modules called _remote_chmod() with the wrong order for their
parameters.  Removing the tmp parameter fixed them.)
10 years ago
James Cammarata 95b371dd60 Use AnsibleFileNotFound instead of AnsibleParsingError when YAML files are not found
And update portions of code to expect the proper error.

Fixes #12512
10 years ago
Toshio Kuratomi 0250beb68a Remove compress option from paramiko connection for now
It's not available on older versions of paramiko such as shipped in RHEL6
10 years ago
James Cammarata 12df9f2e31 Make hostvars more dynamic again to improve performance with large inventories
Fixes #12477
10 years ago
Abhijit Menon-Sen 82b33c381f We don't need even a token timeout here; just poll once
The process is already gone, so there's not going to be any new data
showing up on its stderr; we only want to make sure that we haven't
missed something that was already written. So polling once is enough.
10 years ago
Abhijit Menon-Sen 6e82df451a Clarify select() handling for ssh connections
This change is motivated by an ssh oddity: when ControlPersist is
enabled, the first (i.e. master) connection goes into the background; we
see EOF on its stdout and the process exits, but we never see EOF on its
stderr. So if we ran a command like this:

    ANSIBLE_SSH_PIPELINING=1 ansible -T 30 -vvv somehost -u someuser -m command -a whoami

We would first do select([stdout,stderr], timeout) and read the command
module output, then select([stdout,stderr], timeout) again and read EOF
on stdout, then select([stderr], timeout) AGAIN (though the process has
exited), and select() would wait for the full timeout before returning
rfd=[], and then we would exit. The use of a very short timeout in the
code masked the underlying problem (that we don't see EOF on stderr).

It's always preferable to call select() with a long timeout so that the
process doesn't use any CPU until one of the events it's interested in
happens (and then select will return independent of elapsed time).

(A long timeout value means "if nothing happens, sleep for up to <x>";
omitting the timeout value means "if nothing happens, sleep forever";
specifying a zero timeout means "don't sleep at all", i.e. poll for
events and return immediately.)

This commit uses a long timeout, but explicitly detects the condition
where we've seen EOF on stdout and the process has exited, but we have
not seen EOF on stderr. If and only if that happens, it reruns select()
with a short timeout (in practice it could just exit at that point, but
I chose to be extra cautious). As a result, we end up calling select()
far less often, and use less CPU while waiting, but don't sleep for a
long time waiting for something that will never happen.

Note that we don't omit the timeout to select() altogether because if
we're waiting for an escalation prompt, we DO want to give up with an
error after some time. We also don't set exceptfds, because we're not
actually acting on any notifications of exceptional conditions.
10 years ago
Toshio Kuratomi 03127dcfae remove the stdin return value from connection plugin exec_command() methods
The value was useless -- unused by the callers and always hardcoded to
the empty string.
10 years ago
James Cammarata 9d47eabfa4 Merge pull request #12506 from hyperized/devel
Add Weekday (0-6) as a number and add weeknumber (00-52)
10 years ago
Toshio Kuratomi 24b9e2e6d1 Update extras submodule ref 10 years ago
Gerben Geijteman 4c20964475 Add Weekday (0-6) as a number and add weeknumber (00-52) 10 years ago
Marius Gedminas 56f2a25bff Python 3: there's no 'unicode' 10 years ago
Marius Gedminas 6d4618f46f Python 3: there's no dict.iteritems() 10 years ago
Marius Gedminas 0624797375 Bugfix: if you define a custom __eq__, you must define a __hash__ too
Also, on Python 3 the stock object.__hash__ raises an error ("unhashable
type"), and we have code that uses Host instances as dict keys.
10 years ago
Marius Gedminas a2bc6b4b26 Bugfix: if you define __eq__, you should define __ne__ too 10 years ago
Marius Gedminas 5d29a2eabd Python 3: shlex.split() wants unicode
On Python 2, shlex.split() raises if you pass it a unicode object with
non-ASCII characters in it.  The Ansible codebase copes by explicitly
converting the string using to_bytes() before passing it to
shlex.split().

On Python 3, shlex.split() raises ('bytes' object has no attribute 'read')
if you pass a bytes object.  Oops.

This commit introduces a new wrapper function, shlex_split, that
transparently performs the to_bytes/to_unicode conversions only on
Python 2.

Currently I've only converted one call site (the one that was causing a
unit test to fail on Python 3).  If this approach is deemed suitable,
I'll convert them all.
10 years ago
Toshio Kuratomi 5d3d9cfe0d Convert to byte strings to avoid UnicodeErrors
Fixes #12488
10 years ago
Brian Coca de18bcb95f correct typo on error reporting
fixes #12495
10 years ago
Abhijit Menon-Sen 40f608a377 A bit more debugging output
We used to display input chunks earlier anyway, so this isn't making
things more verbose.
10 years ago
Abhijit Menon-Sen 9700d9c04f Fix typo in checking select results
It's possible for more than one fd to be set, so 'elif' is obviously not
the right thing to use.
10 years ago
James Cammarata 1164e83477 Remove unnecessary calls to save inventory restrictions since 81bf88b 10 years ago
Toshio Kuratomi 89a78ba16e Update submodule refs 10 years ago
James Cammarata 9e734df0ec Conditionally poll longer if we're still waiting for an auth prompt 10 years ago
Toshio Kuratomi 5f0f5363b6 Merge pull request #12487 from mgedmin/py3k
Fix one more failing test on Python 3
10 years ago
James Cammarata 2898e000a0 Don't use the connection timeout for the select poll timeout 10 years ago
Abhijit Menon-Sen 587054db2a Send initial data before calling select whenever possible
Without this, we could execute «ssh -q ...» and call select(), which
would timeout after the default 10s, and only then send initial data.
(This is a relic of the earlier change where we always ran ssh with
-vvv, so the situation where it would sit quietly never happened in
practice; but this would have been the right thing to do even then.)
10 years ago
James Cammarata c9a004227e Improve error catching from malformed playbook data
Fixes #12478
10 years ago
James Cammarata e8e1d9f6fb Apply --limit to inventory in adhoc commands
Fixes #12473
10 years ago
Marius Gedminas 95e655eb67 Python 3: there's no basestring
Fixes one failing test.

The long series of module_utils/basic.py fixes were all because
module_utils/basic is imported in ansible/inventory/script.py.
10 years ago
Marius Gedminas 2c4982b58d Python 3: there's no itertools.imap
Because the builtin map() acts like an iterator already.
10 years ago
Marius Gedminas 6708d56a21 Python 3: avoid long integer literals
Even Python 2.4 automatically promotes int to long.
10 years ago
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.
10 years ago
Marius Gedminas e71a986e16 Python 3: avoid octal constants in module_utils/basic.py 10 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.
10 years ago
James Cammarata 65630d2ce1 Fixing one more bug related to staticmethods in LookupBase 10 years ago