diff options
author | Christian Pointner <equinox@spreadspace.org> | 2021-05-15 21:00:42 +0200 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2021-05-15 21:00:42 +0200 |
commit | ae3f3e1ecd6e2ba860ed769c40a9a3e375dd11bc (patch) | |
tree | b0bc528fd8d3a198d7ab04cfddd9cfd22dc0dd8c /filter_plugins/toml.py | |
parent | cosmetic fix (diff) | |
parent | bump kubernetes version for most standalone kubelets (diff) |
Merge branch 'topic/k8s-containerd'
Diffstat (limited to 'filter_plugins/toml.py')
-rw-r--r-- | filter_plugins/toml.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/filter_plugins/toml.py b/filter_plugins/toml.py new file mode 100644 index 00000000..c169a3a6 --- /dev/null +++ b/filter_plugins/toml.py @@ -0,0 +1,52 @@ +# this is from: https://github.com/sivel/toiletwater/tree/master/plugins/filter +# +# (c) 2017, Matt Martz <matt@sivel.net> +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +import functools + +from ansible.plugins.inventory.toml import HAS_TOML, toml_dumps +try: + from ansible.plugins.inventory.toml import toml +except ImportError: + pass + +from ansible.errors import AnsibleFilterError +from ansible.module_utils._text import to_text +from ansible.module_utils.common._collections_compat import MutableMapping +from ansible.module_utils.six import string_types + + +def _check_toml(func): + @functools.wraps(func) + def inner(o): + if not HAS_TOML: + raise AnsibleFilterError('The %s filter plugin requires the python "toml" library' % func.__name__) + return func(o) + return inner + + +@_check_toml +def from_toml(o): + if not isinstance(o, string_types): + raise AnsibleFilterError('from_toml requires a string, got %s' % type(o)) + return toml.loads(to_text(o, errors='surrogate_or_strict')) + + +@_check_toml +def to_toml(o): + if not isinstance(o, MutableMapping): + raise AnsibleFilterError('to_toml requires a dict, got %s' % type(o)) + return to_text(toml_dumps(o), errors='surrogate_or_strict') + + +class FilterModule(object): + def filters(self): + return { + 'to_toml': to_toml, + 'from_toml': from_toml + } |