diff --git a/docker/elasticsearch/elasticsearch/Dockerfile.j2 b/docker/elasticsearch/elasticsearch/Dockerfile.j2 index d09a0d8175..5633ce6d32 100644 --- a/docker/elasticsearch/elasticsearch/Dockerfile.j2 +++ b/docker/elasticsearch/elasticsearch/Dockerfile.j2 @@ -12,8 +12,12 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build {{ macros.enable_extra_repos(['elasticsearch']) }} {% if base_package_type == 'rpm' %} + +# NOTE(hrw): post-install script of elasticsearch fails when trying to +# install elasticsearch and java together. +{{ macros.install_packages(['java-11-openjdk-headless']) }} + {% set elasticsearch_packages = [ - 'java-11-openjdk-headless', 'elasticsearch-oss', ] %} diff --git a/docker/masakari/masakari-monitors/Dockerfile.j2 b/docker/masakari/masakari-monitors/Dockerfile.j2 index 50fb62aa94..a516d01a5d 100644 --- a/docker/masakari/masakari-monitors/Dockerfile.j2 +++ b/docker/masakari/masakari-monitors/Dockerfile.j2 @@ -19,7 +19,7 @@ RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \ {% if base_package_type == 'rpm' %} {% set masakari_monitors_packages = [ - 'libvirt-devel', + 'python3-libvirt', 'pacemaker-cli', 'tcpdump', ] %} @@ -27,7 +27,7 @@ RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \ {% elif base_package_type == 'deb' %} {% set masakari_monitors_packages = [ - 'libvirt-dev', + 'python3-libvirt', 'pacemaker-cli-utils', 'tcpdump', ] %} @@ -42,8 +42,10 @@ ADD masakari-monitors-archive /masakari-monitors-source '/masakari-monitors' ] %} +# NOTE(hrw): distros may provide other version of libvirt RUN ln -s masakari-monitors-source/* masakari-monitors \ - {% if distro_package_manager == 'dnf' %}&& sed -i -e 's/libvirt-python===.*/libvirt-python===6.10.0/' /requirements/upper-constraints.txt {% endif %}\ + && sed -i -e "/^libvirt-python/d" /requirements/upper-constraints.txt \ + && sed -i -e "/^libvirt-python/d" /masakari-monitors/requirements.txt \ && {{ macros.install_pip(masakari_monitors_pip_packages | customizable("pip_packages")) }} \ && mkdir -p /etc/masakari-monitors \ && chown -R masakari: /etc/masakari-monitors diff --git a/kolla/template/filters.py b/kolla/template/filters.py index 49708ee3fc..f2fbc6e145 100644 --- a/kolla/template/filters.py +++ b/kolla/template/filters.py @@ -12,11 +12,16 @@ # See the License for the specific language governing permissions and # limitations under the License. -from jinja2 import contextfilter +# NOTE: jinja2 3.1.0 dropped contextfilter in favour of pass_context. +try: + from jinja2 import pass_context +except ImportError: + from jinja2 import contextfilter as pass_context + from jinja2 import Undefined -@contextfilter +@pass_context def customizable(context, val_list, call_type): # NOTE(mgoddard): Don't try to customise undefined values. There are cases # where this might happen, for example using a generic template overrides diff --git a/kolla/template/methods.py b/kolla/template/methods.py index 19fcf4e22f..ba187158df 100644 --- a/kolla/template/methods.py +++ b/kolla/template/methods.py @@ -15,7 +15,11 @@ import os import yaml -from jinja2 import contextfunction +# NOTE: jinja2 3.1.0 dropped contextfunction in favour of pass_context. +try: + from jinja2 import pass_context +except ImportError: + from jinja2 import contextfunction as pass_context def debian_package_install(packages, clean_package_cache=True): @@ -71,7 +75,7 @@ def debian_package_install(packages, clean_package_cache=True): return ' && '.join(cmds) -@contextfunction +@pass_context def handle_repos(context, reponames, mode): """NOTE(hrw): we need to handle CentOS, Debian and Ubuntu with one macro. diff --git a/releasenotes/notes/jinja2-pass-context-3f3febcd944e3a51.yaml b/releasenotes/notes/jinja2-pass-context-3f3febcd944e3a51.yaml new file mode 100644 index 0000000000..3a7ecc729c --- /dev/null +++ b/releasenotes/notes/jinja2-pass-context-3f3febcd944e3a51.yaml @@ -0,0 +1,4 @@ +--- +fixes: + - | + Fixes an issue seen when using Jinja2 3.1.0.