community.general/lib/ansible
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
..
cli Transform vault_pass into text when we read it in from the user or a file. (#18699) 2016-12-01 23:42:43 -08:00
compat Move py34 mock_open compat to compat/test/mock (#17157) 2016-08-19 18:11:24 -04:00
config Making the switch to v2 2015-05-03 21:47:26 -05:00
errors Add error info if tabs are found in the yaml (#18343) 2016-11-08 11:43:08 -05:00
executor unified boolean function 2016-11-29 12:34:30 -05:00
galaxy For container enabled role, display warning only when not ANSIBLE_CONTAINER (#18717) 2016-12-02 10:08:10 -05:00
inventory Properly sort groups by name as well as depth when getting vars 2016-11-18 22:57:52 -06:00
module_utils module_utils: ovirt: Add support to fetch nested object's attributes (#18666) 2016-12-05 15:23:42 -05:00
modules Making unarchive idempotent (#3307) 2016-12-08 11:24:18 -05:00
parsing Remove method that isn't used here. (#18713) 2016-12-02 00:30:41 -08:00
playbook smart quotes, die die die. 2016-12-05 14:15:43 -08:00
plugins add back reverted change to network_cli (#18761) 2016-12-05 21:42:09 -05:00
template always template when called from template (#18490) 2016-11-15 15:16:46 -05:00
utils module_utils: ovirt: Add support to fetch nested object's attributes (#18666) 2016-12-05 15:23:42 -05:00
vars ansible_playbook_python (#18530) 2016-11-23 16:30:46 -05:00
__init__.py Fix ziploader for the cornercase of ansible invoking ansible. 2016-04-29 08:47:49 -07:00
constants.py Document the get_config function 2016-12-05 13:03:14 -08:00
release.py Bumping devel version to 2.3.0 2016-10-03 11:46:31 -05:00
test-requirements.txt Making the switch to v2 2015-05-03 21:47:26 -05:00