from __future__ import (absolute_import, division, print_function) __metaclass__ = type from ansible import errors _ubuntu_release_names_ = { "focal": 2004, "groovy": 2010, "hisrute": 2104, "impish": 2110, "jammy": 2204, "kinetic": 2210, "lunar": 2304, "mantic": 2310, "noble": 2404, "oracular": 2410, } _debian_release_names_ = { "buster": 10, "bullseye": 11, "bookworm": 12, "trixie": 13, "forky": 14, } def ubuntu_release_after(a, b): try: av = _ubuntu_release_names_[a] bv = _ubuntu_release_names_[b] return (av > bv) except KeyError as e: raise errors.AnsibleFilterError("unknown ubuntu release: %s" % str(e)) except Exception as e: raise errors.AnsibleFilterError("ubuntu_release_after(): %s" % str(e)) def ubuntu_release_before(a, b): try: av = _ubuntu_release_names_[a] bv = _ubuntu_release_names_[b] return (av < bv) except KeyError as e: raise errors.AnsibleFilterError("unknown ubuntu release: %s" % str(e)) except Exception as e: raise errors.AnsibleFilterError("ubuntu_release_before(): %s" % str(e)) def debian_release_after(a, b): try: av = _debian_release_names_[a] bv = _debian_release_names_[b] return (av > bv) except KeyError as e: raise errors.AnsibleFilterError("unknown debian release: %s" % str(e)) except Exception as e: raise errors.AnsibleFilterError("debian_release_after(): %s" % str(e)) def debian_release_before(a, b): try: av = _debian_release_names_[a] bv = _debian_release_names_[b] return (av < bv) except KeyError as e: raise errors.AnsibleFilterError("unknown debian release: %s" % str(e)) except Exception as e: raise errors.AnsibleFilterError("debian_release_before(): %s" % str(e)) class FilterModule(object): ''' os version compare ''' filter_map = { 'ubuntu_release_after': ubuntu_release_after, 'ubuntu_release_before': ubuntu_release_before, 'debian_release_after': debian_release_after, 'debian_release_before': debian_release_before, } def filters(self): return self.filter_map