# -*- coding: utf-8 -*- ''' Module for defining new filter for sorting host names/alias by FQDN first and alphabetically ''' from jinja2 import Undefined def __virtual__(): return 'linux_hosts' def fqdn_sort_fn(n1, n2): l1 = n1.split('.') l2 = n2.split('.') if len(l1) > len(l2): return -1 if len(l1) < len(l2): return 1 for i1, i2 in zip(l1, l2): if i1 < i2: return -1 if i1 > i2: return 1 return 0 def fqdn_sort_filter(iterable): if iterable is None or isinstance(iterable, Undefined): return iterable # Do effective custom sorting of iterable here return sorted(set(iterable), cmp=fqdn_sort_fn)