From b824f11c7e3794289ef3093b0e2fc8b9e74c2ef5 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Fri, 7 May 2021 01:38:36 +0200 Subject: renew containerd role --- filter_plugins/config-parser.py | 28 ------------------- filter_plugins/ini.py | 59 +++++++++++++++++++++++++++++++++++++++++ filter_plugins/toml.py | 52 ++++++++++++++++++++++++++++++++++++ 3 files changed, 111 insertions(+), 28 deletions(-) delete mode 100644 filter_plugins/config-parser.py create mode 100644 filter_plugins/ini.py create mode 100644 filter_plugins/toml.py (limited to 'filter_plugins') diff --git a/filter_plugins/config-parser.py b/filter_plugins/config-parser.py deleted file mode 100644 index c052a7ec..00000000 --- a/filter_plugins/config-parser.py +++ /dev/null @@ -1,28 +0,0 @@ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from functools import partial - -from ansible import errors - - -def from_ini(data): - try: - import configparser - config = configparser.ConfigParser() - config.optionxform = lambda option: option - config.read_string(data) - return {s: dict(config.items(s)) for s in config.sections()} - except Exception as e: - raise errors.AnsibleFilterError("from_ini(): %s" % str(e)) - - -class FilterModule(object): - - ''' config parser filters ''' - filter_map = { - 'from_ini': from_ini, - } - - def filters(self): - return self.filter_map diff --git a/filter_plugins/ini.py b/filter_plugins/ini.py new file mode 100644 index 00000000..f4f596bc --- /dev/null +++ b/filter_plugins/ini.py @@ -0,0 +1,59 @@ +# this is from: https://github.com/sivel/toiletwater/tree/master/plugins/filter +# +# (c) 2017, Matt Martz +# 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 copy + + +from functools import partial + +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 +from ansible.module_utils.six.moves import configparser, StringIO + + +def from_ini(o): + if not isinstance(o, string_types): + raise AnsibleFilterError('from_ini requires a string, got %s' % type(o)) + parser = configparser.RawConfigParser() + parser.optionxform = partial(to_text, errors='surrogate_or_strict') + parser.readfp(StringIO(o)) + d = dict(parser._sections) + for k in d: + d[k] = dict(d[k]) + d[k].pop('__name__', None) + if parser._defaults: + d['DEFAULT'] = dict(parser._defaults) + return d + + +def to_ini(o): + if not isinstance(o, MutableMapping): + raise AnsibleFilterError('to_ini requires a dict, got %s' % type(o)) + data = copy.deepcopy(o) + defaults = configparser.RawConfigParser(data.pop('DEFAULT', {})) + parser = configparser.RawConfigParser() + parser.optionxform = partial(to_text, errors='surrogate_or_strict') + for section, items in data.items(): + parser.add_section(section) + for k, v in items.items(): + parser.set(section, k, v) + out = StringIO() + defaults.write(out) + parser.write(out) + return out.getvalue().rstrip() + + +class FilterModule(object): + def filters(self): + return { + 'to_ini': to_ini, + 'from_ini': from_ini + } 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 +# 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 + } -- cgit v1.2.3