diff options
| author | Michal Arbet <michal.arbet@ultimum.io> | 2024-08-21 14:08:34 +0200 |
|---|---|---|
| committer | Michal Arbet <michal.arbet@ultimum.io> | 2024-09-19 12:22:16 +0200 |
| commit | 1cda1acc7fd22bc42917c723f14c6ee076098297 (patch) | |
| tree | f8d37bd7c857169ab6ffa38df81da45f60e1fcaa /docker | |
| parent | 015fd8d42a42a49243970c703fd513d3d5b2ce74 (diff) | |
| download | kolla-1cda1acc7fd22bc42917c723f14c6ee076098297.tar.gz kolla-1cda1acc7fd22bc42917c723f14c6ee076098297.zip | |
Switch to Dynamic Python Version Detection
This commit removes the hardcoded KOLLA_DISTRO_PYTHON_VERSION
and replaces it with dynamic Python version detection during
container images build. Dockerfiles and scripts now use general
python3 references, simplifying maintenance and ensuring
compatibility with future Python versions.
Test cases relying on distro_python_version were also cleaned up.
Change-Id: I891749598247a5e951ed4a873b16acfd0566f59c
Diffstat (limited to 'docker')
| -rw-r--r-- | docker/base/Dockerfile.j2 | 1 | ||||
| -rw-r--r-- | docker/horizon/Dockerfile.j2 | 2 | ||||
| -rw-r--r-- | docker/horizon/extend_start.sh | 2 | ||||
| -rw-r--r-- | docker/kolla-toolbox/Dockerfile.j2 | 32 | ||||
| -rw-r--r-- | docker/openstack-base/Dockerfile.j2 | 4 | ||||
| -rw-r--r-- | docker/skyline/skyline-apiserver/extend_start.sh | 2 |
6 files changed, 31 insertions, 12 deletions
diff --git a/docker/base/Dockerfile.j2 b/docker/base/Dockerfile.j2 index d220eba2c..b3662f893 100644 --- a/docker/base/Dockerfile.j2 +++ b/docker/base/Dockerfile.j2 @@ -23,7 +23,6 @@ LABEL kolla_version="{{ kolla_version }}" {% block base_header %}{% endblock %} ENV KOLLA_BASE_DISTRO={{ base_distro }} \ - KOLLA_DISTRO_PYTHON_VERSION={{ distro_python_version }} \ KOLLA_BASE_ARCH={{ base_arch }} diff --git a/docker/horizon/Dockerfile.j2 b/docker/horizon/Dockerfile.j2 index cec72a177..d9d6b32a5 100644 --- a/docker/horizon/Dockerfile.j2 +++ b/docker/horizon/Dockerfile.j2 @@ -66,7 +66,7 @@ RUN ln -s horizon-source/* horizon \ && if [ "$(ls /plugins)" ]; then \ {{ macros.install_pip(horizon_plugins_pip_packages) }}; \ fi \ - && for locale in /var/lib/kolla/venv/lib/python{{distro_python_version}}/site-packages/*/locale; do \ + && for locale in /var/lib/kolla/venv/lib/python3/site-packages/*/locale; do \ (cd ${locale%/*} && /var/lib/kolla/venv/bin/django-admin compilemessages) \ done \ && chmod 644 /usr/local/bin/kolla_extend_start diff --git a/docker/horizon/extend_start.sh b/docker/horizon/extend_start.sh index 5a71d6be1..63a40189d 100644 --- a/docker/horizon/extend_start.sh +++ b/docker/horizon/extend_start.sh @@ -5,7 +5,7 @@ set -o errexit FORCE_GENERATE="${FORCE_GENERATE:-no}" HASH_PATH=/var/lib/kolla/.settings.md5sum.txt -SITE_PACKAGES="/var/lib/kolla/venv/lib/python${KOLLA_DISTRO_PYTHON_VERSION}/site-packages" +SITE_PACKAGES="/var/lib/kolla/venv/lib/python3/site-packages" MANAGE_PY="/var/lib/kolla/venv/bin/python /var/lib/kolla/venv/bin/manage.py" diff --git a/docker/kolla-toolbox/Dockerfile.j2 b/docker/kolla-toolbox/Dockerfile.j2 index 7cdc760c8..7a60674af 100644 --- a/docker/kolla-toolbox/Dockerfile.j2 +++ b/docker/kolla-toolbox/Dockerfile.j2 @@ -6,10 +6,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build {% block kolla_toolbox_header %}{% endblock %} {% set venv_path='/opt/ansible' %} -{% if base_package_type == 'rpm' %} - {% set distro_python_version = '3.12' %} -{% endif %} -{% set os_client_config= venv_path + '/lib/python' + distro_python_version + '/site-packages/os_client_config/defaults.json' %} +{% set os_client_config= venv_path + '/lib/python3/site-packages/os_client_config/defaults.json' %} {% import "macros.j2" as macros with context %} @@ -63,11 +60,32 @@ COPY apt_preferences_rabbitmq.{{ base_distro }} /etc/apt/preferences.d/rabbitmq {% endif %} {{ macros.install_packages(kolla_toolbox_packages | customizable("packages")) }} +{# NOTE(kevko): + In all distros, there is always a /usr/bin/python3 -> python3.X. + However, this is disrupted for RHEL-based systems because, unlike + other distros, we upgrade Python above [1], but we forget to set + the default python3 to the new python3.X. As a result also, everything + outside of the virtual environment ends up running on Python 3.9. + + So, let's correctly set python3 -> python3.X since we had to install + it and now have default python3 points to the new version. + + [1] https://review.opendev.org/c/openstack/kolla/+/924245 +#} +{% if base_package_type == 'rpm' %} +RUN cd /usr/bin && \ + rm -f python3 && \ + ln -s python3.12 python3 +{% endif %} + {% block kolla_toolbox_upper_constraints %} RUN mkdir -p /requirements \ && curl -o /requirements/upper-constraints.txt ${UPPER_CONSTRAINTS_FILE:-https://releases.openstack.org/constraints/upper/{{ openstack_release }}} \ && {{ macros.upper_constraints_remove("openstacksdk") }} \ - && python{{ distro_python_version }} -m venv --system-site-packages {{ venv_path }} + && python3 -m venv --system-site-packages {{ venv_path }} \ + && KOLLA_DISTRO_PYTHON_VERSION=$(/usr/bin/python3 -c "import sys; print('{}.{}'.format(sys.version_info.major, sys.version_info.minor))") \ + && cd {{ venv_path }}/lib \ + && ln -s python${KOLLA_DISTRO_PYTHON_VERSION} {{ venv_path }}/lib/python3 {% endblock %} ENV PATH {{ venv_path }}/bin:$PATH @@ -86,8 +104,8 @@ ENV PATH {{ venv_path }}/bin:$PATH 'pyudev', ] %} -RUN {{ macros.install_pip(['pip', 'wheel', 'setuptools'], python_version=distro_python_version) }} \ - && {{ macros.install_pip((kolla_toolbox_pip_packages | customizable("pip_packages")), python_version=distro_python_version) }} \ +RUN {{ macros.install_pip(['pip', 'wheel', 'setuptools']) }} \ + && {{ macros.install_pip((kolla_toolbox_pip_packages | customizable("pip_packages"))) }} \ && mkdir -p /etc/ansible /usr/share/ansible \ && echo 'localhost ansible_connection=local ansible_python_interpreter={{ venv_path }}/bin/python' > /etc/ansible/hosts \ && sed -i 's| "identity_api_version": "2.0",| "identity_api_version": "3",|' {{ os_client_config }} diff --git a/docker/openstack-base/Dockerfile.j2 b/docker/openstack-base/Dockerfile.j2 index 1df4321e5..f6aebd6ca 100644 --- a/docker/openstack-base/Dockerfile.j2 +++ b/docker/openstack-base/Dockerfile.j2 @@ -195,7 +195,9 @@ RUN ln -s openstack-base-source/* /requirements \ #} && {{ macros.upper_constraints_remove("ovs") }} \ && mkdir -p /var/lib/kolla \ - && python3 -m venv --system-site-packages /var/lib/kolla/venv + && python3 -m venv --system-site-packages /var/lib/kolla/venv \ + && KOLLA_DISTRO_PYTHON_VERSION=$(/usr/bin/python3 -c "import sys; print('{}.{}'.format(sys.version_info.major, sys.version_info.minor))") \ + && ln -s python${KOLLA_DISTRO_PYTHON_VERSION} /var/lib/kolla/venv/lib/python3 {# Block used for overriding global version constraints. diff --git a/docker/skyline/skyline-apiserver/extend_start.sh b/docker/skyline/skyline-apiserver/extend_start.sh index e762106c0..e1802937b 100644 --- a/docker/skyline/skyline-apiserver/extend_start.sh +++ b/docker/skyline/skyline-apiserver/extend_start.sh @@ -3,7 +3,7 @@ # Bootstrap and exit if KOLLA_BOOTSTRAP variable is set. This catches all cases # of the KOLLA_BOOTSTRAP variable being set, including empty. if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then - SITE_PACKAGES="/var/lib/kolla/venv/lib/python${KOLLA_DISTRO_PYTHON_VERSION}/site-packages" + SITE_PACKAGES="/var/lib/kolla/venv/lib/python3/site-packages" pushd ${SITE_PACKAGES}/skyline_apiserver/db/alembic alembic upgrade head popd |
