from __future__ import (absolute_import, division, print_function) __metaclass__ = type from functools import partial from ansible import errors from ansible.module_utils.common.text import formatters def dehumanize_zfs_properties(data): ''' zfs module sometimes wrongly indicates changed=true in check mode if sizes use human-readable format ''' try: from jinja2.runtime import Undefined if isinstance(data, Undefined): return data for prop, value in data.items(): if prop in ['quota', 'refquota', 'reservation', 'refreservation', 'recordsize', 'volsize']: data[prop] = str(formatters.human_to_bytes(value)) return data except Exception as e: raise errors.AnsibleFilterError("dehumanize_zfs_properties(): %s" % str(e)) class FilterModule(object): ''' zfs filters ''' filter_map = { 'dehumanize_zfs_properties': dehumanize_zfs_properties, } def filters(self): return self.filter_map