Feature filter replace_keys (#8446)
* Add filter replace_keys.
* Update examples and integration tests.
* Fix examples and copyright.
* Update documentation, examples and integration tests.
* Implement #8445. Add filter replace_keys
* Fix documentation formatting.
* Fix documentation.
* Fix type(target). Formatting improved.
* Instead of a dictionary, _keys_filter_target_dict returns a list
* No target testing in _keys_filter_params
* Interface changed _keys_filter_params(data, matching_parameter)
* If there are items with equal C(before) the B(first) one will be used.
* Update remove_keys. Interface changed _keys_filter_params(data, matching_parameter)
* The target can't be empty also in _keys_filter_target_dict
* Update plugins/filter/replace_keys.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/filter/replace_keys.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/filter/replace_keys.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Test attributes before and after are strings in the iteration of target.
* Update plugins/filter/replace_keys.py
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 1d61541951)
Co-authored-by: Vladimir Botka <vbotka@gmail.com>
* fix: Ensuring interpolation is disabled for ConfigParser
This PR disables interpolation of ConfigParser and adds test coverage for that.
* Adding changelog fragment
* Fixing missing extension of changelog fragment
* Adding issue link to changelog fragment
* Update changelogs/fragments/8183-from_ini_to_ini.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
New filters lists_union, lists_intersect, lists_difference and lists_symmetric_difference added.
Signed-off-by: Christoph Fiehe <c.fiehe@eurodata.de>
Co-authored-by: Christoph Fiehe <c.fiehe@eurodata.de>
* Adding a new filter: to_ini, which allows conversion of a dictionary to an INI formatted string
* Adding to_ini maintainers into BOTMETA
* Correcting filter suffix
* Moving filter to correct path
* Adding error handling; Removing quotes from examples; Fixing RETURN documentation
* Removing the last newline char; Adding error handling for an empty dict
* Adding integration tests for to_ini
* Fixing F-String usage
* Fixing formatting
* Fixing whitespace
* Moving import statements below documentation; Adding a more generic Exception handling; Removing unused imports
* Removing not needed set_fact and replacing it with using vars:
* Replacing MutableMapping with Mapping
* Adding a new filter: from_ini, which allows conversion of INI content to a dictionary
* Adding from_ini maintainers into BOTMETA
* Adding error handling; Removing quotes from examples; Fixing RETURN documentation
* Adding integration tests
* Moving imports below documentation; Adding a more general exception handling
* Add plugin parser functionality to JC Filter Plugin
The parse function was added in jc v1.18.0 which allows plugin parsers to be used. This change will try the new API if available, else fallback to the old API so there is no change in behavior.
* remove whitespace from blank line
* Add changelog fragment for JC plugin parser support
* add .yml extension to file name
* Formatting
* add period at end
* Clarification to use underscores instead of dashes in parser name
* Update plugins/filter/jc.py
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Felix Fontein <felix@fontein.de>
* feat: Add crc32 filter
Compute CRC32 checksum of a string and return its hex representation. Can be
use to create short checksums.
Signed-off-by: Julien Riou <julien@riou.xyz>
* Update license lines
* Improve string check of a crc32 value
Signed-off-by: Julien Riou <julien@riou.xyz>
Signed-off-by: Julien Riou <julien@riou.xyz>
Co-authored-by: Felix Fontein <felix@fontein.de>
* Move licenses to LICENSES/, run add-license.py, add LICENSES/MIT.txt.
* Replace 'Copyright:' with 'Copyright'
sed -i 's|Copyright:\(.*\)|Copyright\1|' $(rg -l 'Copyright:')
Co-authored-by: Maxwell G <gotmax@e.email>
* Add docs for ansible-core 2.13 use
local testing shows fine, adding here as example for other filters/tests
* Update plugins/filter/random_mac.py
* Improve docs.
* Remove wrong 'positional'.
Co-authored-by: Felix Fontein <felix@fontein.de>
* Add counter filter
* move counter filter doc to existing chapter
* Use existing typerror exception from Counter
* Match counter filter example task name and output
* Prepare for distutils.version being removed in Python 2.12.
* Fix copy'n'paste error.
* Re-add Loose prefix.
* Fix Python version typos.
* Improve formulation.
* Move message into own line.
* Fix casing, now that the object is no longer called Version.
* added utf-8 markers to all .py files in plugins/filter
* added utf-8 markers to all .py files in plugins/inventory
* added utf-8 markers to all .py files in plugins/lookup
* New filters hashids_encode and hashids_decode
* Adding changelog
* Correcting whitespace issue in vars file
* Attempt to fix integration test failures
* Correcting copyright
* Addressing initial review comments
* Updating decoded sequence return from tuple to list
* Correcting capitilization and spelling
* Added from_csv filter and integration tests
* Cleaning up whitespace
* Adding changelog fragment
* Updated changelog fragment name
* Removed temp fragment
* Refactoring csv functions Part 1
* Syncing refactored csv modules/filters
* Adding unit tests for csv Module_Util
* Updating changelog fragment
* Correcting whitespace in unit test
* Improving changelog fragment
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update changelogs/fragments/2037-add-from-csv-filter.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* Add version_sort filter to properly sort list of versions
* Fix all comments from Felix
- add changelog fragment
- fix test by removing runme.sh/yml and renaming to filter_version_sort
- use fully qualified name of filter in test case
* Remove wrong plugin.test changelog fragment
Ups...
* Properly name the file version_sort.py
* Update changelogs/fragments/1916-add-version-sort-filter.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Eric L <ewl+git@lavar.de>
Co-authored-by: Felix Fontein <felix@fontein.de>
jmespath library does not undestand custom string types
such as AnsibleUnicode, and AnsibleUnsafeText.
So user need to use ``to_json | from_json`` filter while using
functions like ``starts_with`` and ``contains`` etc.
This hack will allow user to get rid of this filter.
Fixes: #320
Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
* initial commit
* add contrib info
* remove nonfunctional \n in error messate
* add documentation and optional quiet and raw arguments
* add changelog fragment
* add aliases
* add initial test
* change folder name
* add pip install jc for tests
* simplify changelog since tests were failing
* add newline to end of file
* fix trailing whitespace in comment causing test failure
* use pip3 since tests are failing using python2.6 pip
* skip python 2.7 tests since jc only supports python 3
* use pip instead of pip3
* add python version requirement
* Adjust target directory so that ansible-test knows what to run when filters change.
* Divide by multiple instead of multiplying with product of 1/factor to improve numerical robustness.
* Allow to say what a year or month is (in days).
* Add changelog fragment announcing the time filters.
* Make sure unknown keyword args result in errors.
* Fix formatting screw-up.
* filter: add new time convert filters
The plugin include:
- to_seconds
- to_minutes
- to_hours
* refactor and extend
* more UX improvements
* Apply suggestions from code review
Co-authored-by: Felix Fontein <felix@fontein.de>
* even more UX improvments
* fix indentation
* fix for py3
* enable aix in ci
* simplify
* add to_months, use 360d as year.
* rearrange tests
* year back to 365 days
Co-authored-by: Felix Fontein <felix@fontein.de>