#!/usr/bin/python class FilterModule(object): '''Helper filters to make Ansible less unpleasant''' def filters(self): return { 'defaultattr': self.defaultattr, 'list2dict': self.list2dict, } def defaultattr(self, objects, attr, val=None): ''' Set a default value if the given attribute is not defined for an object. ''' yield from (obj | { attr: obj.get(attr, val) } for obj in objects) def list2dict(self, items, key): ''' Like items2dict but keep entire dictionaries as values. ''' return {item[key]: item for item in items}