Commit graph

200 commits

Author SHA1 Message Date
Brian Coca
544b044129 stop trying to set permissions in check mode
fixes #4195
2016-12-08 11:24:44 -05:00
Ryan S. Brown
9336e0d070 Indent unarchive module documentation to fix parsing error. 2016-12-08 11:24:44 -05:00
tobixx
ed1d80b7d8 added read-/write-/executeable flags for invoking user (#4130) 2016-12-08 11:24:44 -05:00
James Cammarata
aa1e9e3d5f Add remote_src param for unarchive to deprecate copy param
From ansible/ansible#10218
2016-12-08 11:24:44 -05:00
Dag Wieers
017eeaea29 Fix a problem where the newly provided mode is a string (#3769)
* Fix a problem where the newly provided mode is a string

This fixes #3597

* Implement python3-compatible get_exception() handling
2016-12-08 11:24:42 -05:00
Dag Wieers
855ca9b204 Revert PR #3575 since it causes problems related to exclude patterns (#3767)
* Revert PR #3575 since it causes problems related to exclude patterns

By using a different method for getting archive filelists, and extracting we introduced new problems related to excluding based on gtar patterns.

As a result files that would be excluded by gtar, would still be in the filelist. Implementing our own gtar compatible pattern exclusion mechanism is near to impossible (believe me, we looked at it...). The best way is to look at the original problem and deal with that, and ensure that extraction and filelists are done with the exact same tool and exact same options.

The solution is to decode the octal unicode representation in gtar's output back to unicode. Since gtar has no problem extracting these files in LANG=C, we simply has to compensate for it.

This reverts #3575 and fixes #11348.

* Implement codecs.escape_decode() instead of decode("string_escape") for python3
2016-12-08 11:24:42 -05:00
Lukas Grossar
4a532fb60c also match on tabs in ini_file (fixes #106) (#4067)
also match on tabs in ini_file
2016-12-08 11:24:41 -05:00
Toshio Kuratomi
30399d94f6 A few more sanity checks for detecting unzip output that's not a file entry (#3982)
* A few more sanity checks for detecting unzip output that's not a file entry

Also note that there's a rounding error somewhere in the mtime
comparison code.

* Fix reference to sub-array
2016-12-08 11:24:40 -05:00
Keisuke Kamada
259c4b31fb Do not copy file if running on check mode 2016-12-08 11:24:38 -05:00
Brian Coca
1f6c3766b0 restored incorrectly removed docs, jinja2 override 2016-12-08 11:24:37 -05:00
neo
07c8804486 fix unarchive doesn't extract changed tar file #3901 2016-12-08 11:24:36 -05:00
Matt Fischer
a28b23db86 Update delete notes for Synrhconize docs (#3723)
The example for delete=yes does not specify recursive although it is
required. In addition, the wording for the delete option is confusing
about from where files are really deleted. This should clarify that.
2016-12-08 11:24:36 -05:00
Dag Wieers
c6fb3ceb85 Improve the unzip output scraping (#3819)
* Improve the unzip output scraping

Ensure we capture the complete file (also when it includes spaces).
Drop lines that do not conform (in length) to what we expect (e.g. header/footer).

This fixes #3813

* Fix how split() works
2016-12-08 11:24:36 -05:00
Brendan Jurd
c5fbda395b Fix grammar in docs for fetch 'fail_on_missing' (#3872) 2016-12-08 11:24:35 -05:00
Brian Coca
73bc9fd0e0 Revert "Add prefixing and suffixing fuctionality to assemble"
This reverts commit 4c386dba565109d971e88be961abe93d700939b3.
keeping in sync with main repo revert
2016-12-08 11:24:33 -05:00
Matthias Frey
d5fc44610b Fixed error in assemble module when validation failed. (#3814)
Error was: TypeError: fail_json() takes exactly 1 argument (2 given)
2016-12-08 11:24:33 -05:00
Jan Fader
3afbe28b8a fix for #3706 (#3778) 2016-12-08 11:24:32 -05:00
Dag Wieers
f7fcb81dd9 Add unpack results to error output, for debugging purposes on failure
This may help understand what is going on with #3631
2016-12-08 11:24:31 -05:00
Toshio Kuratomi
286a46e8b4 Python2.4's zipfile library cannot handle zip 64bit extensions which are needed for > 64K files (#3754)
Fallback to unzip if zipfile fails and hope that unzip can deal with it
(sites have an easier time upgrading the unzip utility than all of
python).

https://bugs.python.org/issue3997

Fixes #3560
2016-12-08 11:24:31 -05:00
Marcos Diez
366d52cf18 The documentation of lineinfile now makes reference to blockinfile (#3639) 2016-12-08 11:24:30 -05:00
Michael Scherer
f7b29ba8fd Convert the whole files/ directory to py3 syntax (#3685) 2016-12-08 11:24:29 -05:00
Michael Scherer
f423554e20 Testing the module on freebsd fail, since module is not assigned yet 2016-12-08 11:24:28 -05:00
Michael Scherer
98c729bfd7 Fix the argument for acl module (#3653) 2016-12-08 11:24:28 -05:00
Dag Wieers
c650f06b03 Fix small typo (#3642) 2016-12-08 11:24:28 -05:00
Veaceslav Mindru
8c6af73218 add vlidate_certs option for unarchive module (#2635) 2016-12-08 11:24:26 -05:00
Toshio Kuratomi
fa00c69ff2 bytearray isn't available in python2.4 (#3583)
* Detection of handler depends on the wrong handler failing to list the contents of the tarfile.

Use explicit compression types with the python tarfile library to
achieve that.

* bytearray isn't available in python2.4
2016-12-08 11:24:26 -05:00
Toshio Kuratomi
cd26cc8a0d Detection of handler depends on the wrong handler failing to list the contents of the tarfile. (#3584)
Use explicit compression types with the python tarfile library to
achieve that.
2016-12-08 11:24:26 -05:00
Virgil Dupras
930ea5dd55 unarchive: use Python's tarfile module for tar listing (#3575)
* unarchive: use Python's tarfile module for tar listing

fixes https://github.com/ansible/ansible/issues/11348

Depending on the current active locale, `tar`'s file listing can end up
spitting backslash-escaped characters. Unfortunately, when that happens,
we end up with double-escaped backslashes, giving us a wrong path,
making our action fail.

We could try un-double-escaping our paths, but that would be complicated
and, I think, error-prone. The easiest way forward seemed to simply use
the `tarfile` module.

Why use it only for listing? Because the `unarchive` option also
supports the `extra_opts` option, and that supporting this would require
us to mimick `tar`'s interface.

For listing files, however, I don't think that the loss of `extra_opts`
support causes problems (well, I hope so).

* unarchive: re-add xz decompression support

Following previous change to use Python's `tarfile` module for tar file
listing, we lost `xz` decompression support. This commits re-add it by
adding a special case in `TarXzArchive` that pre-decompresses the source
file.
2016-12-08 11:24:26 -05:00
Dag Wieers
356d9a272a Replace ansible_hostname with inventory_hostname (#3559)
This way these examples can be re-used using the ansible command (and don't require facts gathering).
2016-12-08 11:24:25 -05:00
Michael Scherer
001ceb8dc6 Remove old test on SELinux (#3510)
since all is done in modules_utils/basic.py, no need to make
the same test here, especially since that's unused later
2016-12-08 11:24:20 -05:00
Dag Wieers
a26188e55d Making unarchive idempotent (#3307)
* WIP: Making unarchive idempotent

Currently unarchive is not idempotent and has many rough edges and bugs.
The current release is a workable improvement on many fronts:

- zip support is now idempotent (but gtar lacks check-mode)
- New option `exclude` to exclude specific paths/files
- New option `keep_newer` to exclude newer files on target
- New option `extra_opts` to influence unzip/gtar (like synchronize module)

The following items are still ongoing:

- Implement CRC32 support for .zip files
- Re-implement the zip support using native zipfile module
- Re-implement the gtar support using native tarfile/gzip/bz2 modules (lzma external)
- Implement check-mode (works in gzip, but fails using gtar)
- Implement diff-mode (discuss an appropriate output model, like synchronize module)

The re-implementation of unzip/gtar support using native python modules will not only simplify the codebase, additional functionality can be implemented correctly and identically, which is currently not possible. (Other archives could be implemented using native modules equally, incl. options)

* Assorted fixes to zip support (during quality checks)

- Support both rw---- and rwx--- permstr
- Better file type support (more qa needed)
- Symlink support
- Include fix from #3229

* Implement zip diff-mode (itemized change) and avoid changes permissions every time (!)

This commit implements:
- rsync-compatible itemized-change output in diff-mode (using zip)
- no longer changing permissions unconditionally (when idempotent)

* Small fixes to itemized change output

* Fixes to user/group ownership changes

- The implementation of user/group ownership is a bit more complex for idempotency
- We report when a ZIP file incorrectly tags a directory as a file/link
- We only offer diff output when there is a change

* Fix the handling of includes and excludes for unzip

* Remove test output from output (confuses easily)

* Logic and performance improvements to ownership handling, and umask fix

* Handle special files (type '?')

* Make exceptions compatible with python 2.4

* Implement CRC32 support

* Revert some unintended/unknown changes ?

* Taking over maintenance as offered by current maintainer

* Fix support for white-spaces in filenames

* Remove/rename incorrect regex

* Ensure that fat executables end up with execute permission

* Remove check_result from output when unchanged

* When unarchiving as a user, or when owner/group/mode is supplied --diff is insufficient

Only way to be sure is to check request with what is on disk (as we do for zip).
Leave this up to set_fs_attributes_if_different() instead of inducing a (false) change

* By default, don't send confusing check_results in verbose output

This fixes #74.
2016-12-08 11:24:18 -05:00
yarick123
87fe4a2f0c ini_file: added option 'noextraspaces' to turn off inserting extra spaces around '=' symbol
* ini_file: added option 'noextraspaces' to turn off inserting extra spaces around '=' symbol

* ini_file: noextraspaces, python 2.4 compatibility

* ini_file: noextraspaces - yes/no => true/false

* ini_file: noextraspaces - added 'version_added' option

* ini_file: noextraspaces => no_extra_spaces
2016-12-08 11:24:18 -05:00
Mengdi Gao
165f48717a Improve doc accuracy of template module 2016-12-08 11:24:17 -05:00
peter.jang
f7fb5e31c2 added rsync protocol support (#1999)
* added rsync protocol support

* correction for example document(add example for push on delegate)

* use startswith method for safety
2016-12-08 11:24:16 -05:00
Bence Nagy
0fd89cfd44 Add prefixing and suffixing fuctionality to assemble 2016-12-08 11:24:14 -05:00
Brian Coca
90650256ef fixed exit json 2016-12-08 11:24:11 -05:00
Matt Martz
e4a88eeebe Fix synchronize docs to indicate the correct default for use_ssh_args 2016-12-08 11:24:11 -05:00
Brian Coca
9084e31979 fixes to assemble
now uses atomic move to avoid data corruption
correclty cleans up temp files in every case
returns backup_file info if needed
validate validate before temp file gets created
backup AFTER validate
2016-12-08 11:24:10 -05:00
Dag Wieers
20b7757032 Ensure that a download failure is properly raised before the read fails
Without this change, a download failure may bail out with the message:

    "Failure downloading http://foo/bar, 'NoneType' object has no attribute 'read'"

whereas with this fix, you'd get a proper error like:

    "Failure downloading http://foo/bar, Request failed: <urlopen error [Errno 113] No route to host>"

or one of the many other possible download errors that can occur.
2016-12-08 11:24:10 -05:00
Bert Van Vreckem
4a10eeb196 Also show stdout when validation fails. This fixes #2498 2016-12-08 11:24:09 -05:00
Toshio Kuratomi
390dbe5090 Change one param to be of type path 2016-12-08 11:24:08 -05:00
Toshio Kuratomi
ecafdeeaa5 Set some module parameters to type=path 2016-12-08 11:24:08 -05:00
Toshio Kuratomi
cea1125d02 Correct dest_port to be of type int 2016-12-08 11:24:08 -05:00
Toshio Kuratomi
249b9511a5 Set name to type path so that tilde and env vars are expanded 2016-12-08 11:24:08 -05:00
Brian Coca
a546775172 fixed typo, now correctly check isdir
fixes #3089
2016-12-08 11:24:07 -05:00
Brian Coca
69b0e39220 added missing checksum alias 2016-12-08 11:24:07 -05:00
Brian Coca
4ec0ccd5ac fixed option name mismatch, added aliases
also removed empty aliases
2016-12-08 11:24:06 -05:00
Brian Coca
b357f4dd72 added follow to specific modules that support it
was removed from common file docs
2016-12-08 11:24:06 -05:00
Jose Moreira
cc173b445e Fixed module doc typos 2016-12-08 11:24:06 -05:00
Brian Coca
bbfb957bc1 recursive copy is not available(yet) on remote_src 2016-12-08 11:24:06 -05:00