From 1e98ae0956ddffbec44ce0eac5f9a3e1fa45f434 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Wed, 8 May 2024 23:50:15 +0200 Subject: some more fixes for ubuntu-installer --- filter_plugins/os-version.py | 83 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 filter_plugins/os-version.py (limited to 'filter_plugins') diff --git a/filter_plugins/os-version.py b/filter_plugins/os-version.py new file mode 100644 index 00000000..4c5c3a29 --- /dev/null +++ b/filter_plugins/os-version.py @@ -0,0 +1,83 @@ +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 -- cgit v1.2.3