aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/source/admin/image-building.rst2
-rw-r--r--docker/aodh/aodh-base/Dockerfile.j227
-rw-r--r--docker/barbican/barbican-api/Dockerfile.j212
-rw-r--r--docker/barbican/barbican-base/Dockerfile.j25
-rw-r--r--docker/base/Dockerfile.j212
-rw-r--r--docker/ceilometer/ceilometer-base/Dockerfile.j215
-rw-r--r--docker/cinder/cinder-api/Dockerfile.j217
-rw-r--r--docker/cinder/cinder-base/Dockerfile.j212
-rw-r--r--docker/cinder/cinder-volume/Dockerfile.j211
-rw-r--r--docker/cloudkitty/cloudkitty-api/Dockerfile.j214
-rw-r--r--docker/collectd/Dockerfile.j235
-rw-r--r--docker/designate/designate-base/Dockerfile.j213
-rw-r--r--docker/designate/designate-sink/Dockerfile.j211
-rw-r--r--docker/freezer/freezer-api/Dockerfile.j26
-rw-r--r--docker/glance/glance-base/Dockerfile.j212
-rw-r--r--docker/gnocchi/gnocchi-base/Dockerfile.j223
-rw-r--r--docker/heat/heat-base/Dockerfile.j214
-rw-r--r--docker/heat/heat-engine/Dockerfile.j215
-rw-r--r--docker/horizon/Dockerfile.j227
-rw-r--r--docker/ironic/ironic-api/Dockerfile.j212
-rw-r--r--docker/ironic/ironic-conductor/Dockerfile.j228
-rw-r--r--docker/ironic/ironic-pxe/Dockerfile.j26
-rw-r--r--docker/iscsid/Dockerfile.j211
-rw-r--r--docker/keystone/keystone-base/Dockerfile.j227
-rw-r--r--docker/keystone/keystone/Dockerfile.j213
-rw-r--r--docker/macros.j24
-rw-r--r--docker/manila/manila-api/Dockerfile.j212
-rw-r--r--docker/mistral/mistral-api/Dockerfile.j212
-rw-r--r--docker/monasca/monasca-base/Dockerfile.j26
-rw-r--r--docker/networking-baremetal/ironic-neutron-agent/Dockerfile.j211
-rw-r--r--docker/neutron/neutron-base/Dockerfile.j214
-rw-r--r--docker/neutron/neutron-metadata-agent-ovn/Dockerfile.j26
-rw-r--r--docker/neutron/neutron-server-opendaylight/Dockerfile.j215
-rw-r--r--docker/neutron/neutron-server-ovn/Dockerfile.j29
-rw-r--r--docker/neutron/neutron-server/Dockerfile.j212
-rw-r--r--docker/nova/nova-api/Dockerfile.j214
-rw-r--r--docker/nova/nova-base/Dockerfile.j212
-rw-r--r--docker/nova/nova-compute/Dockerfile.j217
-rw-r--r--docker/nova/nova-placement-api/Dockerfile.j212
-rw-r--r--docker/nova/nova-spicehtml5proxy/Dockerfile.j211
-rw-r--r--docker/novajoin/novajoin-base/Dockerfile.j26
-rw-r--r--docker/octavia/octavia-api/Dockerfile.j221
-rw-r--r--docker/openstack-base/Dockerfile.j291
-rw-r--r--docker/openvswitch/openvswitch-base/Dockerfile.j213
-rw-r--r--docker/panko/panko-api/Dockerfile.j214
-rw-r--r--docker/panko/panko-base/Dockerfile.j224
-rw-r--r--docker/placement/placement-api/Dockerfile.j212
-rw-r--r--docker/rally/Dockerfile.j211
-rw-r--r--docker/sensu/sensu-client/Dockerfile.j211
-rw-r--r--docker/swift/swift-proxy-server/Dockerfile.j210
-rw-r--r--docker/tacker/tacker-base/Dockerfile.j210
-rw-r--r--docker/telegraf/Dockerfile.j210
-rw-r--r--docker/tripleoclient/Dockerfile.j225
-rw-r--r--docker/vitrage/vitrage-api/Dockerfile.j214
-rw-r--r--docker/vitrage/vitrage-base/Dockerfile.j212
-rw-r--r--docker/zaqar/zaqar-base/Dockerfile.j221
-rw-r--r--docker/zun/zun-base/Dockerfile.j211
-rw-r--r--releasenotes/notes/rhel-python3-support-1078f829dc42c4d6.yaml6
58 files changed, 755 insertions, 114 deletions
diff --git a/doc/source/admin/image-building.rst b/doc/source/admin/image-building.rst
index 3ce4eabc4..d1f249ebd 100644
--- a/doc/source/admin/image-building.rst
+++ b/doc/source/admin/image-building.rst
@@ -286,7 +286,7 @@ as part of a binary install type build:
* ``openstack-dashboard``
* ``httpd``
-* ``mod_wsgi``
+* ``python2-mod_wsgi`` or ``python3-mod_wsgi``
* ``mod_ssl``
* ``gettext``
diff --git a/docker/aodh/aodh-base/Dockerfile.j2 b/docker/aodh/aodh-base/Dockerfile.j2
index a54cbd76b..6c5d7f571 100644
--- a/docker/aodh/aodh-base/Dockerfile.j2
+++ b/docker/aodh/aodh-base/Dockerfile.j2
@@ -10,17 +10,28 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if install_type == 'binary' %}
{% if base_package_type == 'rpm' %}
+ {# NOTE(aschultz): added api because the common package doesn't include the wsgi file. I think this needs fixing #}
{% set aodh_base_packages = [
'httpd',
'mod_ssl',
+ 'openstack-aodh-api',
+ 'openstack-aodh-common'
+ ] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set aodh_base_packages = aodh_base_packages + [
+ 'python3-ldappool',
+ 'python3-mod_wsgi'
+ ] %}
+ {% else %}
+ {% set aodh_base_packages = aodh_base_packages + [
'mod_wsgi',
- 'openstack-aodh-common',
'python2-ldappool'
] %}
+ {% endif %}
{{ macros.install_packages(aodh_base_packages | customizable("packages")) }}
RUN mkdir -p /var/www/cgi-bin/aodh \
- && cp -a /usr/lib/python2.7/site-packages/aodh/api/app.wsgi /var/www/cgi-bin/aodh/ \
+ && cp -a /usr/bin/aodh-api /var/www/cgi-bin/aodh/ \
&& sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
&& sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf
{% elif base_package_type == 'deb' %}
@@ -44,10 +55,20 @@ RUN mkdir -p /var/www/cgi-bin/aodh \
{% set aodh_base_packages = [
'httpd',
- 'mod_wsgi',
'mod_ssl',
+ ] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set aodh_base_packages = aodh_base_packages + [
+ 'python3-ldappool',
+ 'python3-mod_wsgi'
+ ] %}
+ {% else %}
+ {% set aodh_base_packages = aodh_base_packages + [
+ 'mod_wsgi',
'python2-ldappool'
] %}
+ {% endif %}
+
{{ macros.install_packages(aodh_base_packages | customizable("packages")) }}
RUN mkdir -p /var/www/cgi-bin/aodh \
diff --git a/docker/barbican/barbican-api/Dockerfile.j2 b/docker/barbican/barbican-api/Dockerfile.j2
index fce0e001b..e25e6fb05 100644
--- a/docker/barbican/barbican-api/Dockerfile.j2
+++ b/docker/barbican/barbican-api/Dockerfile.j2
@@ -10,10 +10,20 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% set barbican_api_packages = [
'httpd',
'mod_ssl',
+ 'openstack-barbican-api'
+ ] %}
+
+ {% if distro_python_version.startswith('3') %}
+ {% set barbican_api_packages = barbican_api_packages + [
+ 'python3-mod_wsgi',
+ 'uwsgi-plugin-python3'
+ ] %}
+ {% else %}
+ {% set barbican_api_packages = barbican_api_packages + [
'mod_wsgi',
- 'openstack-barbican-api',
'uwsgi-plugin-python'
] %}
+ {% endif %}
{{ macros.install_packages(barbican_api_packages | customizable("packages")) }}
diff --git a/docker/barbican/barbican-base/Dockerfile.j2 b/docker/barbican/barbican-base/Dockerfile.j2
index 15ce1559a..4d6843d65 100644
--- a/docker/barbican/barbican-base/Dockerfile.j2
+++ b/docker/barbican/barbican-base/Dockerfile.j2
@@ -18,7 +18,12 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% elif install_type == 'source' %}
{% if base_package_type == 'rpm' %}
+ {% if distro_python_version.startswith('3') %}
+ {% set barbican_base_packages = ['uwsgi-plugin-python3'] %}
+ {% else %}
{% set barbican_base_packages = ['uwsgi-plugin-python'] %}
+ {% endif %}
+
{% elif base_package_type == 'deb' %}
{% set barbican_base_packages = ['uwsgi-plugin-python'] %}
{% endif %}
diff --git a/docker/base/Dockerfile.j2 b/docker/base/Dockerfile.j2
index 98e8ff132..5eeec4e09 100644
--- a/docker/base/Dockerfile.j2
+++ b/docker/base/Dockerfile.j2
@@ -227,15 +227,25 @@ RUN yum -y install \
{% block base_redhat_binary_versionlock %}{% endblock %}
{% if install_type == 'binary' %}
{% set base_centos_binary_packages = [
+ 'findutils',
'iproute',
'iscsi-initiator-utils',
'lvm2',
- 'python',
'scsi-target-utils',
'socat',
'sudo',
'which'
] %}
+{% if distro_python_version.startswith('3') %}
+{% set base_centos_binary_packages = base_centos_binary_packages + [
+ 'python3'
+] %}
+{% else %}
+{% set base_centos_binary_packages = base_centos_binary_packages + [
+ 'python'
+] %}
+{% endif %}
+
# Install base packages
{{ macros.install_packages( base_centos_binary_packages | customizable("centos_binary_packages")) }}
{% endif %}
diff --git a/docker/ceilometer/ceilometer-base/Dockerfile.j2 b/docker/ceilometer/ceilometer-base/Dockerfile.j2
index 8182ba045..4b004c945 100644
--- a/docker/ceilometer/ceilometer-base/Dockerfile.j2
+++ b/docker/ceilometer/ceilometer-base/Dockerfile.j2
@@ -10,12 +10,23 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if install_type == 'binary' %}
{% if base_package_type == 'rpm' %}
{% set ceilometer_base_packages = [
- 'openstack-ceilometer-common',
- 'python-panko',
+ 'openstack-ceilometer-common'
+ ] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set ceilometer_base_packages = ceilometer_base_packages + [
+ 'python3-gnocchiclient',
+ 'python3-oslo-db',
+ 'python3-panko',
+ 'python3-tooz'
+ ] %}
+ {% else %}
+ {% set ceilometer_base_packages = ceilometer_base_packages + [
'python-gnocchiclient',
'python-oslo-db',
+ 'python-panko',
'python-tooz'
] %}
+ {% endif %}
{% elif base_package_type == 'deb' %}
{% set ceilometer_base_packages = [
'ceilometer-common',
diff --git a/docker/cinder/cinder-api/Dockerfile.j2 b/docker/cinder/cinder-api/Dockerfile.j2
index ddc493d5b..442e02bde 100644
--- a/docker/cinder/cinder-api/Dockerfile.j2
+++ b/docker/cinder/cinder-api/Dockerfile.j2
@@ -10,9 +10,19 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% set cinder_api_packages = [
'httpd',
'mod_ssl',
+ ] %}
+
+ {% if distro_python_version.startswith('3') %}
+ {% set cinder_api_packages = cinder_api_packages + [
+ 'python3-keystone',
+ 'python3-mod_wsgi'
+ ] %}
+ {% else %}
+ {% set cinder_api_packages = cinder_api_packages + [
'mod_wsgi',
'python-keystone'
] %}
+ {% endif %}
{{ macros.install_packages(cinder_api_packages | customizable("packages")) }}
RUN mkdir -p /var/www/cgi-bin/cinder \
&& cp -a /usr/bin/cinder-wsgi /var/www/cgi-bin/cinder/cinder-wsgi \
@@ -37,8 +47,13 @@ RUN mkdir -p /var/www/cgi-bin/cinder \
{% set cinder_api_packages = [
'httpd',
'mod_ssl',
- 'mod_wsgi'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set cinder_api_packages = cinder_api_packages + ['python3-mod_wsgi'] %}
+ {% else %}
+ {% set cinder_api_packages = cinder_api_packages + ['mod_wsgi'] %}
+ {% endif %}
+
{{ macros.install_packages(cinder_api_packages | customizable("packages")) }}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
&& sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf
diff --git a/docker/cinder/cinder-base/Dockerfile.j2 b/docker/cinder/cinder-base/Dockerfile.j2
index d8becd4f6..ba9d638f4 100644
--- a/docker/cinder/cinder-base/Dockerfile.j2
+++ b/docker/cinder/cinder-base/Dockerfile.j2
@@ -13,10 +13,20 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'ceph-common',
'lvm2',
'cryptsetup',
- 'openstack-cinder',
+ 'openstack-cinder'
+ ] %}
+
+ {% if distro_python_version.startswith('3') %}
+ {% set cinder_base_packages = cinder_base_packages + [
+ 'python3-automaton',
+ 'python3-oslo-vmware'
+ ] %}
+ {% else %}
+ {% set cinder_base_packages = cinder_base_packages + [
'python-automaton',
'python-oslo-vmware'
] %}
+ {% endif %}
{% elif base_package_type == 'deb' %}
{% set cinder_base_packages = [
'ceph-common',
diff --git a/docker/cinder/cinder-volume/Dockerfile.j2 b/docker/cinder/cinder-volume/Dockerfile.j2
index dc505e5eb..88d7b9be7 100644
--- a/docker/cinder/cinder-volume/Dockerfile.j2
+++ b/docker/cinder/cinder-volume/Dockerfile.j2
@@ -9,11 +9,20 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% set cinder_volume_packages = [
'nfs-utils',
'nvmetcli',
- 'python-rtslib',
'scsi-target-utils',
'sysfsutils',
'targetcli'
] %}
+
+ {% if distro_python_version.startswith('3') %}
+ {% set cinder_volume_packages = cinder_volume_packages + [
+ 'python3-rtslib',
+ ] %}
+ {% else %}
+ {% set cinder_volume_packages = cinder_volume_packages + [
+ 'python-rtslib',
+ ] %}
+ {% endif %}
{{ macros.install_packages(cinder_volume_packages | customizable("packages")) }}
{% block cinder_volume_redhat_setup %}
diff --git a/docker/cloudkitty/cloudkitty-api/Dockerfile.j2 b/docker/cloudkitty/cloudkitty-api/Dockerfile.j2
index 148ce9871..95656dbc7 100644
--- a/docker/cloudkitty/cloudkitty-api/Dockerfile.j2
+++ b/docker/cloudkitty/cloudkitty-api/Dockerfile.j2
@@ -11,9 +11,13 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% set cloudkitty_api_packages = [
'httpd',
'mod_ssl',
- 'mod_wsgi',
- 'openstack-cloudkitty-api',
+ 'openstack-cloudkitty-api'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set cloudkitty_api_packages = cloudkitty_api_packages + ['python3-mod_wsgi'] %}
+ {% else %}
+ {% set cloudkitty_api_packages = cloudkitty_api_packages + ['mod_wsgi'] %}
+ {% endif %}
{{ macros.install_packages(cloudkitty_api_packages | customizable("packages")) }}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
&& sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf
@@ -31,8 +35,12 @@ RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \
{% set cloudkitty_api_packages = [
'httpd',
'mod_ssl',
- 'mod_wsgi'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set cloudkitty_api_packages = cloudkitty_api_packages + ['python3-mod_wsgi'] %}
+ {% else %}
+ {% set cloudkitty_api_packages = cloudkitty_api_packages + ['mod_wsgi'] %}
+ {% endif %}
{{ macros.install_packages(cloudkitty_api_packages | customizable("packages")) }}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
&& sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf
diff --git a/docker/collectd/Dockerfile.j2 b/docker/collectd/Dockerfile.j2
index 072b038fe..6747edd1f 100644
--- a/docker/collectd/Dockerfile.j2
+++ b/docker/collectd/Dockerfile.j2
@@ -13,12 +13,10 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if base_package_type == 'rpm' %}
{% set collectd_packages = collectd_packages + [
- 'collectd-amqp1',
'collectd-apache',
'collectd-bind',
'collectd-ceph',
'collectd-chrony',
- 'collectd-connectivity',
'collectd-curl',
'collectd-curl_json',
'collectd-curl_xml',
@@ -33,25 +31,39 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'collectd-mysql',
'collectd-netlink',
'collectd-openldap',
- 'collectd-ovs-events',
- 'collectd-ovs-stats',
'collectd-ping',
- 'collectd-procevent',
'collectd-python',
'collectd-sensors',
'collectd-smart',
'collectd-snmp',
- 'collectd-snmp-agent',
- 'collectd-sysevent',
'collectd-utils',
'collectd-virt',
'collectd-write_http',
'collectd-write_kafka',
- 'collectd-write_prometheus',
+ 'collectd-write_prometheus'
+ ] %}
+
+ {% if distro_python_version.startswith('3') %}
+ {# TODO(aschultz): there are some missing packages here #}
+ {% set collectd_packages = collectd_packages + [
+ 'collectd-ovs_events',
+ 'collectd-ovs_stats',
+ 'collectd-snmp_agent',
+ ] %}
+ {% else %}
+ {% set collectd_packages = collectd_packages + [
+ 'collectd-amqp1',
+ 'collectd-connectivity',
+ 'collectd-ovs-events',
+ 'collectd-ovs-stats',
+ 'collectd-procevent',
+ 'collectd-snmp-agent',
+ 'collectd-sysevent',
'python-collectd-gnocchi',
'python2-collectd-rabbitmq-monitoring',
'python2-sqlalchemy-collectd'
] %}
+ {% endif %}
{% if base_arch in ['x86_64', 'ppc64le'] %}
{% set collectd_packages = collectd_packages + [
@@ -60,11 +72,18 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% endif %}
{% if base_arch =='x86_64' %}
+ {% if distro_python_version.startswith('3') %}
+ {# NOTE(aschultz): there are some missing packages here #}
+ {% set collectd_packages = collectd_packages + [
+ 'collectd-hugepages',
+ ] %}
+ {% else %}
{% set collectd_packages = collectd_packages + [
'collectd-hugepages',
'collectd-rdt',
'collectd-turbostat'
] %}
+ {% endif %}
{% endif %}
# make sure, collectd is pulled from centos-opstools
diff --git a/docker/designate/designate-base/Dockerfile.j2 b/docker/designate/designate-base/Dockerfile.j2
index 49fd8dfe4..86d3c3eb1 100644
--- a/docker/designate/designate-base/Dockerfile.j2
+++ b/docker/designate/designate-base/Dockerfile.j2
@@ -10,11 +10,22 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if install_type == 'binary' %}
{% if base_package_type == 'rpm' %}
{% set designate_base_packages = [
- 'openstack-designate-common',
+ 'openstack-designate-common'
+ ] %}
+
+ {% if distro_python_version.startswith('3') %}
+ {% set designate_base_packages = designate_base_packages + [
+ 'python3-oslo-reports',
+ 'python3-suds',
+ 'python3-tooz'
+ ] %}
+ {% else %}
+ {% set designate_base_packages = designate_base_packages + [
'python-tooz',
'python2-oslo-reports',
'python2-suds'
] %}
+ {% endif %}
{{ macros.install_packages(designate_base_packages | customizable("packages")) }}
{% elif base_package_type == 'deb' %}
diff --git a/docker/designate/designate-sink/Dockerfile.j2 b/docker/designate/designate-sink/Dockerfile.j2
index 0afbd1604..ea194c4db 100644
--- a/docker/designate/designate-sink/Dockerfile.j2
+++ b/docker/designate/designate-sink/Dockerfile.j2
@@ -8,9 +8,18 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if install_type == 'binary' %}
{% if base_package_type == 'rpm' %}
{% set designate_sink_packages = [
- 'openstack-designate-sink',
+ 'openstack-designate-sink'
+ ] %}
+
+ {% if distro_python_version.startswith('3') %}
+ {% set designate_sink_packages = designate_sink_packages + [
+ 'python3-designateclient'
+ ] %}
+ {% else %}
+ {% set designate_sink_packages = designate_sink_packages + [
'python-designateclient'
] %}
+ {% endif %}
{% elif base_package_type == 'deb' %}
{% set designate_sink_packages = [
'designate-sink',
diff --git a/docker/freezer/freezer-api/Dockerfile.j2 b/docker/freezer/freezer-api/Dockerfile.j2
index 964de809e..9bef6e1c7 100644
--- a/docker/freezer/freezer-api/Dockerfile.j2
+++ b/docker/freezer/freezer-api/Dockerfile.j2
@@ -16,8 +16,12 @@ RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \
{% set freezer_api_packages = [
'httpd',
'mod_ssl',
- 'mod_wsgi'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set freezer_api_packages = freezer_api_packages + ['python3-mod_wsgi'] %}
+ {% else %}
+ {% set freezer_api_packages = freezer_api_packages + ['mod_wsgi'] %}
+ {% endif %}
{{ macros.install_packages(freezer_api_packages | customizable("packages")) }}
diff --git a/docker/glance/glance-base/Dockerfile.j2 b/docker/glance/glance-base/Dockerfile.j2
index 06f8947c9..4c8dca9bb 100644
--- a/docker/glance/glance-base/Dockerfile.j2
+++ b/docker/glance/glance-base/Dockerfile.j2
@@ -10,11 +10,21 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if install_type == 'binary' %}
{% if base_package_type == 'rpm' %}
{% set glance_base_packages = [
- 'openstack-glance',
+ 'openstack-glance'
+ ] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set glance_base_packages = glance_base_packages + [
+ 'python3-oslo-vmware',
+ 'python3-rados',
+ 'python3-rbd'
+ ] %}
+ {% else %}
+ {% set glance_base_packages = glance_base_packages + [
'python-oslo-vmware',
'python-rados',
'python-rbd'
] %}
+ {% endif %}
{% elif base_package_type == 'deb' %}
{% set glance_base_packages = [
'glance',
diff --git a/docker/gnocchi/gnocchi-base/Dockerfile.j2 b/docker/gnocchi/gnocchi-base/Dockerfile.j2
index 1d3432bc8..457698260 100644
--- a/docker/gnocchi/gnocchi-base/Dockerfile.j2
+++ b/docker/gnocchi/gnocchi-base/Dockerfile.j2
@@ -10,15 +10,24 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if install_type == 'binary' %}
{% if base_package_type == 'rpm' %}
- {% set gnocchi_base_packages = [
+ {% set gnocchi_base_packages = [
'gnocchi-common',
'httpd',
'mod_ssl',
+ ] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set gnocchi_base_packages = gnocchi_base_packages + [
+ 'python3-cradox',
+ 'python3-ldappool',
+ 'python3-mod_wsgi'
+ ] %}
+ {% else %}
+ {% set gnocchi_base_packages = gnocchi_base_packages + [
'mod_wsgi',
'python2-ldappool',
'python2-cradox'
] %}
-
+ {% endif %}
{{ macros.install_packages(gnocchi_base_packages | customizable("packages")) }}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
&& sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf
@@ -52,9 +61,19 @@ RUN {{ macros.install_pip(gnocchi_base_pip_packages | customizable("pip_packages
'httpd',
'librados2-devel',
'mod_ssl',
+ ] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set gnocchi_base_packages = gnocchi_base_packages + [
+ 'python3-ldappool',
+ 'python3-mod_wsgi'
+ ] %}
+ {% else %}
+ {% set gnocchi_base_packages = gnocchi_base_packages + [
'mod_wsgi',
'python2-ldappool'
] %}
+ {% endif %}
+
# on x86-64 pip grabs precompiled numpy/scipy - on aarch64/ppc64le
# it needs to be built
diff --git a/docker/heat/heat-base/Dockerfile.j2 b/docker/heat/heat-base/Dockerfile.j2
index a5e2405ac..2a73abbfd 100644
--- a/docker/heat/heat-base/Dockerfile.j2
+++ b/docker/heat/heat-base/Dockerfile.j2
@@ -13,9 +13,14 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% set heat_base_packages = [
'httpd',
'mod_ssl',
- 'mod_wsgi',
'openstack-heat-common'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set heat_base_packages = heat_base_packages + ['python3-mod_wsgi'] %}
+ {% else %}
+ {% set heat_base_packages = heat_base_packages + ['mod_wsgi'] %}
+ {% endif %}
+
{{ macros.install_packages(heat_base_packages | customizable("packages")) }}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
&& sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf
@@ -36,8 +41,13 @@ RUN echo > /etc/apache2/ports.conf
{% set heat_base_packages = [
'httpd',
'mod_ssl',
- 'mod_wsgi'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set heat_base_packages = heat_base_packages + ['python3-mod_wsgi'] %}
+ {% else %}
+ {% set heat_base_packages = heat_base_packages + ['mod_wsgi'] %}
+ {% endif %}
+
{{ macros.install_packages(heat_base_packages | customizable("packages")) }}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
&& sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf
diff --git a/docker/heat/heat-engine/Dockerfile.j2 b/docker/heat/heat-engine/Dockerfile.j2
index 56e7b5144..524bf2fc3 100644
--- a/docker/heat/heat-engine/Dockerfile.j2
+++ b/docker/heat/heat-engine/Dockerfile.j2
@@ -7,11 +7,20 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if install_type == 'binary' %}
{% if base_package_type == 'rpm' %}
- {% set heat_engine_packages = [
- 'python-barbicanclient',
- 'python-zaqarclient',
+ {% set heat_engine_packages = [
'openstack-heat-engine'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set heat_engine_packages = heat_engine_packages + [
+ 'python3-barbicanclient',
+ 'python3-zaqarclient'
+ ] %}
+ {% else %}
+ {% set heat_engine_packages = heat_engine_packages + [
+ 'python-barbicanclient',
+ 'python-zaqarclient'
+ ] %}
+ {% endif %}
{% elif base_package_type == 'deb' %}
{% set heat_engine_packages = ['heat-engine'] %}
{% endif %}
diff --git a/docker/horizon/Dockerfile.j2 b/docker/horizon/Dockerfile.j2
index f2f341202..f69ed479c 100644
--- a/docker/horizon/Dockerfile.j2
+++ b/docker/horizon/Dockerfile.j2
@@ -9,11 +9,15 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if install_type == 'binary' %}
{% if base_package_type == 'rpm' %}
+ {% if distro_python_version.startswith('3') %}
+ {% set horizon_python = 'python3' %}
+ {% else %}
+ {% set horizon_python = 'python2' %}
+ {% endif %}
{% set horizon_packages = [
'gettext',
'httpd',
'mod_ssl',
- 'mod_wsgi',
'openstack-cloudkitty-ui',
'openstack-dashboard',
'openstack-designate-ui',
@@ -29,22 +33,27 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'openstack-trove-ui',
'openstack-vitrage-ui'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set horizon_packages = horizon_packages + ['python3-mod_wsgi'] %}
+ {% else %}
+ {% set horizon_packages = horizon_packages + ['mod_wsgi'] %}
+ {% endif %}
{{ macros.install_packages(horizon_packages | customizable("packages")) }}
{% block horizon_redhat_binary_setup %}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
&& sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf \
- && ln -s /usr/share/openstack-dashboard/openstack_dashboard /usr/lib/python2.7/site-packages/openstack_dashboard \
- && ln -s /usr/share/openstack-dashboard/static /usr/lib/python2.7/site-packages/static \
+ && ln -s /usr/share/openstack-dashboard/openstack_dashboard /usr/lib/python{{ distro_python_version }}/site-packages/openstack_dashboard \
+ && ln -s /usr/share/openstack-dashboard/static /usr/lib/python{{ distro_python_version }}/site-packages/static \
&& chown -R horizon: /etc/openstack-dashboard /usr/share/openstack-dashboard \
&& chown -R apache: /usr/share/openstack-dashboard/static \
&& sed -i "s|WEBROOT = '/dashboard/'|WEBROOT = '/'|" /etc/openstack-dashboard/local_settings \
&& cp /usr/share/openstack-dashboard/manage.py /usr/bin/manage.py \
&& rm -f /usr/share/openstack-dashboard/openstack_dashboard/local/enabled/?[^_]*.py* \
- && rm -f /usr/lib/python2.7/site-packages/openstack_dashboard/local/enabled/?[^_]*.py* \
- && for locale in /usr/lib/python2.7/site-packages/*/locale; do \
- (cd ${locale%/*} && /usr/bin/python /usr/bin/manage.py compilemessages) \
+ && rm -f /usr/lib/python{{ distro_python_version }}/site-packages/openstack_dashboard/local/enabled/?[^_]*.py* \
+ && for locale in /usr/lib/python{{ distro_python_version }}/site-packages/*/locale; do \
+ (cd ${locale%/*} && /usr/bin/{{ horizon_python }} /usr/bin/manage.py compilemessages) \
done
{% endblock %}
@@ -87,8 +96,12 @@ RUN echo > /etc/apache2/ports.conf \
'gettext',
'httpd',
'mod_ssl',
- 'mod_wsgi'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set horizon_packages = horizon_packages + ['python3-mod_wsgi'] %}
+ {% else %}
+ {% set horizon_packages = horizon_packages + ['mod_wsgi'] %}
+ {% endif %}
{{ macros.install_packages(horizon_packages | customizable("packages")) }}
diff --git a/docker/ironic/ironic-api/Dockerfile.j2 b/docker/ironic/ironic-api/Dockerfile.j2
index f7d391cb2..bd8667192 100644
--- a/docker/ironic/ironic-api/Dockerfile.j2
+++ b/docker/ironic/ironic-api/Dockerfile.j2
@@ -10,9 +10,13 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% set ironic_api_packages = [
'httpd',
'mod_ssl',
- 'mod_wsgi',
'openstack-ironic-api'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set ironic_api_packages = ironic_api_packages + ['python3-mod_wsgi'] %}
+ {% else %}
+ {% set ironic_api_packages = ironic_api_packages + ['mod_wsgi'] %}
+ {% endif %}
{% elif base_package_type == 'deb' %}
{% set ironic_api_packages = [
'apache2',
@@ -26,8 +30,12 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% set ironic_api_packages = [
'httpd',
'mod_ssl',
- 'mod_wsgi'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set ironic_api_packages = ironic_api_packages + ['python3-mod_wsgi'] %}
+ {% else %}
+ {% set ironic_api_packages = ironic_api_packages + ['mod_wsgi'] %}
+ {% endif %}
{% elif base_package_type == 'deb' %}
{% set ironic_api_packages = [
'apache2',
diff --git a/docker/ironic/ironic-conductor/Dockerfile.j2 b/docker/ironic/ironic-conductor/Dockerfile.j2
index 720eb4bfd..811a8102d 100644
--- a/docker/ironic/ironic-conductor/Dockerfile.j2
+++ b/docker/ironic/ironic-conductor/Dockerfile.j2
@@ -18,19 +18,35 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'openstack-ironic-staging-drivers',
'parted',
'psmisc',
+ 'shellinabox',
+ 'util-linux',
+ 'xfsprogs'
+ ] %}
+
+ {% if distro_python_version.startswith('3') %}
+ {% set ironic_conductor_packages = ironic_conductor_packages + [
+ 'ansible-python3',
+ 'python3-dracclient',
+ 'python3-ironic-inspector-client',
+ 'python3-proliantutils',
+ 'python3-pysnmp',
+ 'python3-scciclient',
+ 'python3-sushy',
+ 'python3-systemd'
+ ] %}
+ {% else %}
+ {% set ironic_conductor_packages = ironic_conductor_packages + [
'pysnmp',
- 'python2-ImcSdk',
+ 'python-UcsSdk',
'python-dracclient',
'python-ironic-inspector-client',
'python-proliantutils',
'python-scciclient',
'python-sushy',
- 'python-UcsSdk',
- 'shellinabox',
- 'systemd-python',
- 'util-linux',
- 'xfsprogs',
+ 'python2-ImcSdk',
+ 'systemd-python'
] %}
+ {% endif %}
{% if base_distro in ['centos', 'oraclelinux'] %}
{% set ironic_conductor_packages = ironic_conductor_packages + [
'qemu-img-ev'
diff --git a/docker/ironic/ironic-pxe/Dockerfile.j2 b/docker/ironic/ironic-pxe/Dockerfile.j2
index 3b6937917..00a7e77ec 100644
--- a/docker/ironic/ironic-pxe/Dockerfile.j2
+++ b/docker/ironic/ironic-pxe/Dockerfile.j2
@@ -10,9 +10,13 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'httpd',
'ipxe-bootimgs',
'mod_ssl',
- 'mod_wsgi',
'tftp-server'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set ironic_pxe_packages = ironic_pxe_packages + ['python3-mod_wsgi'] %}
+ {% else %}
+ {% set ironic_pxe_packages = ironic_pxe_packages + ['mod_wsgi'] %}
+ {% endif %}
{% if base_arch == 'x86_64' %}
{% set ironic_pxe_packages = ironic_pxe_packages + [
diff --git a/docker/iscsid/Dockerfile.j2 b/docker/iscsid/Dockerfile.j2
index 174ee2f11..d4b692d1a 100644
--- a/docker/iscsid/Dockerfile.j2
+++ b/docker/iscsid/Dockerfile.j2
@@ -8,10 +8,19 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if base_package_type == 'rpm' %}
{% set iscsid_packages = [
'iscsi-initiator-utils',
- 'python-rtslib',
'targetcli'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set iscsid_packages = iscsid_packages + [
+ 'python3-rtslib'
+ ] %}
+ {% else %}
+ {% set iscsid_packages = iscsid_packages + [
+ 'python-rtslib'
+ ] %}
+ {% endif %}
+
{% elif base_package_type == 'deb' %}
{% set iscsid_packages = [
'open-iscsi',
diff --git a/docker/keystone/keystone-base/Dockerfile.j2 b/docker/keystone/keystone-base/Dockerfile.j2
index a9160478a..85d98a834 100644
--- a/docker/keystone/keystone-base/Dockerfile.j2
+++ b/docker/keystone/keystone-base/Dockerfile.j2
@@ -14,11 +14,22 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'mod_auth_mellon',
'mod_auth_openidc',
'mod_ssl',
+ 'openstack-keystone'
+ ] %}
+
+ {% if distro_python_version.startswith('3') %}
+ {% set keystone_base_packages = keystone_base_packages + [
+ 'python3-keystoneclient',
+ 'python3-ldappool',
+ 'python3-mod_wsgi'
+ ] %}
+ {% else %}
+ {% set keystone_base_packages = keystone_base_packages + [
'mod_wsgi',
- 'openstack-keystone',
- 'python2-ldappool',
- 'python-keystoneclient'
+ 'python-keystoneclient',
+ 'python2-ldappool'
] %}
+ {% endif %}
{{ macros.install_packages(keystone_base_packages | customizable("packages")) }}
RUN mkdir -p /var/www/cgi-bin/keystone \
@@ -52,9 +63,19 @@ RUN mkdir -p /var/www/cgi-bin/keystone \
'mod_auth_mellon',
'mod_auth_openidc',
'mod_ssl',
+ ] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set keystone_base_packages = keystone_base_packages + [
+ 'python3-ldappool',
+ 'python3-mod_wsgi'
+ ] %}
+ {% else %}
+ {% set keystone_base_packages = keystone_base_packages + [
'mod_wsgi',
'python2-ldappool'
] %}
+ {% endif %}
+
{{ macros.install_packages(keystone_base_packages | customizable("packages")) }}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
&& sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf
diff --git a/docker/keystone/keystone/Dockerfile.j2 b/docker/keystone/keystone/Dockerfile.j2
index bbcea3c63..2dbe71ad0 100644
--- a/docker/keystone/keystone/Dockerfile.j2
+++ b/docker/keystone/keystone/Dockerfile.j2
@@ -13,9 +13,18 @@ RUN chmod 755 /usr/local/bin/kolla_extend_start /usr/local/bin/kolla_keystone_bo
# TODO: oraclelinux fails to install these packages. Should be added when this is fixed.
{% if base_package_type == 'rpm' and base_distro != 'oraclelinux' %}
{% set keystone_packages = [
- 'mod_auth_gssapi',
- 'python-requests-kerberos',
+ 'mod_auth_gssapi'
+ ] %}
+
+ {% if distro_python_version.startswith('3') %}
+ {% set keystone_packages = keystone_packages + [
+ 'python3-requests-kerberos'
+ ] %}
+ {% else %}
+ {% set keystone_packages = keystone_packages + [
+ 'python-requests-kerberos'
] %}
+ {% endif %}
{% elif base_package_type == 'deb' %}
{% set keystone_packages = [
'libapache2-mod-auth-gssapi',
diff --git a/docker/macros.j2 b/docker/macros.j2
index 419fa0f4f..ee1ff93c4 100644
--- a/docker/macros.j2
+++ b/docker/macros.j2
@@ -1,8 +1,8 @@
{% macro install_packages(packages) -%}
{% if packages is defined and packages|length > 0 -%}
- {% if base_distro in ['centos', 'oraclelinux', 'rhel'] -%}
+ {% if base_package_type == 'rpm' -%}
RUN yum -y install {{ packages | join(' ') }} && yum clean all && rm -rf /var/cache/yum
- {%- elif base_distro in ['debian', 'ubuntu'] -%}
+ {%- elif base_package_type == 'deb' -%}
{#-
debian_package_install is a utility method to build up an appropriate
set of commands to install packages in a debian-based environment that
diff --git a/docker/manila/manila-api/Dockerfile.j2 b/docker/manila/manila-api/Dockerfile.j2
index c95d6eaee..8e6f30080 100644
--- a/docker/manila/manila-api/Dockerfile.j2
+++ b/docker/manila/manila-api/Dockerfile.j2
@@ -10,8 +10,12 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% set manila_api_packages = [
'httpd',
'mod_ssl',
- 'mod_wsgi'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set manila_api_packages = manila_api_packages + ['python3-mod_wsgi' ] %}
+ {% else %}
+ {% set manila_api_packages = manila_api_packages + ['mod_wsgi' ] %}
+ {% endif %}
{{ macros.install_packages(manila_api_packages | customizable("packages")) }}
RUN mkdir -p /var/www/cgi-bin/manila \
&& cp -a /usr/bin/manila-wsgi /var/www/cgi-bin/manila/manila-wsgi \
@@ -37,8 +41,12 @@ RUN mkdir -p /var/www/cgi-bin/manila \
{% set manila_api_packages = [
'httpd',
'mod_ssl',
- 'mod_wsgi'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set manila_api_packages = manila_api_packages + ['python3-mod_wsgi' ] %}
+ {% else %}
+ {% set manila_api_packages = manila_api_packages + ['mod_wsgi' ] %}
+ {% endif %}
{{ macros.install_packages(manila_api_packages | customizable("packages")) }}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
&& sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf
diff --git a/docker/mistral/mistral-api/Dockerfile.j2 b/docker/mistral/mistral-api/Dockerfile.j2
index d890e84a0..809dc3814 100644
--- a/docker/mistral/mistral-api/Dockerfile.j2
+++ b/docker/mistral/mistral-api/Dockerfile.j2
@@ -10,9 +10,13 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% set mistral_api_packages = [
'httpd',
'mod_ssl',
- 'mod_wsgi',
'openstack-mistral-api'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set mistral_api_packages = mistral_api_packages + ['python3-mod_wsgi'] %}
+ {% else %}
+ {% set mistral_api_packages = mistral_api_packages + ['mod_wsgi'] %}
+ {% endif %}
{{ macros.install_packages(mistral_api_packages | customizable("packages")) }}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
&& sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf
@@ -32,8 +36,12 @@ RUN echo > /etc/apache2/ports.conf
{% set mistral_api_packages = [
'httpd',
'mod_ssl',
- 'mod_wsgi'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set mistral_api_packages = mistral_api_packages + ['python3-mod_wsgi'] %}
+ {% else %}
+ {% set mistral_api_packages = mistral_api_packages + ['mod_wsgi'] %}
+ {% endif %}
{{ macros.install_packages(mistral_api_packages | customizable("packages")) }}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
&& sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf
diff --git a/docker/monasca/monasca-base/Dockerfile.j2 b/docker/monasca/monasca-base/Dockerfile.j2
index 6adc1a91b..37baeade8 100644
--- a/docker/monasca/monasca-base/Dockerfile.j2
+++ b/docker/monasca/monasca-base/Dockerfile.j2
@@ -18,8 +18,12 @@ RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \
{% set monasca_base_packages = [
'httpd',
'mod_ssl',
- 'mod_wsgi'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set monasca_base_packages = monasca_base_packages + ['python3-mod_wsgi'] %}
+ {% else %}
+ {% set monasca_base_packages = monasca_base_packages + ['mod_wsgi'] %}
+ {% endif %}
{{ macros.install_packages(monasca_base_packages | customizable("packages")) }}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
diff --git a/docker/networking-baremetal/ironic-neutron-agent/Dockerfile.j2 b/docker/networking-baremetal/ironic-neutron-agent/Dockerfile.j2
index 977e01b8d..179e41b09 100644
--- a/docker/networking-baremetal/ironic-neutron-agent/Dockerfile.j2
+++ b/docker/networking-baremetal/ironic-neutron-agent/Dockerfile.j2
@@ -9,11 +9,18 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if base_package_type == 'rpm' %}
+ {% if distro_python_version.startswith('3') %}
{% set ironic_neutron_agent_packages = [
- 'python-networking-baremetal',
- 'python-ironic-neutron-agent'
+ 'python3-ironic-neutron-agent',
+ 'python3-networking-baremetal'
+ ] %}
+ {% else %}
+ {% set ironic_neutron_agent_packages = [
+ 'python-ironic-neutron-agent',
+ 'python-networking-baremetal'
] %}
+ {% endif %}
{% elif base_package_type == 'deb' %}
RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \
diff --git a/docker/neutron/neutron-base/Dockerfile.j2 b/docker/neutron/neutron-base/Dockerfile.j2
index 2b7be6256..b4d4f81da 100644
--- a/docker/neutron/neutron-base/Dockerfile.j2
+++ b/docker/neutron/neutron-base/Dockerfile.j2
@@ -22,13 +22,25 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'openstack-neutron-fwaas',
'openstack-neutron-lbaas',
'openstack-neutron-ml2',
- 'openvswitch',
+ 'openvswitch'
+ ] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set neutron_base_packages = neutron_base_packages + [
+ 'python3-networking-sfc',
+ 'python3-networking-vmware-nsx',
+ 'python3-networking-baremetal',
+ 'python3-openvswitch',
+ 'python3-oslo-vmware'
+ ] %}
+ {% else %}
+ {% set neutron_base_packages = neutron_base_packages + [
'python-networking-sfc',
'python-networking-vmware-nsx',
'python2-networking-baremetal',
'python2-openvswitch',
'python2-oslo-vmware'
] %}
+ {% endif %}
{% elif base_package_type == 'deb' %}
diff --git a/docker/neutron/neutron-metadata-agent-ovn/Dockerfile.j2 b/docker/neutron/neutron-metadata-agent-ovn/Dockerfile.j2
index b5daf3165..edfcc73d5 100644
--- a/docker/neutron/neutron-metadata-agent-ovn/Dockerfile.j2
+++ b/docker/neutron/neutron-metadata-agent-ovn/Dockerfile.j2
@@ -8,9 +8,15 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if install_type == 'binary' %}
{% if base_package_type == 'rpm' %}
+ {% if distro_python_version.startswith('3') %}
+ {% set neutron_metadata_agent_ovn_packages = [
+ 'python3-networking-ovn-metadata-agent'
+ ] %}
+ {% else %}
{% set neutron_metadata_agent_ovn_packages = [
'python-networking-ovn-metadata-agent'
] %}
+ {% endif %}
{% elif base_package_type == 'deb' %}
{% set neutron_metadata_agent_ovn_packages = [
'python3-networking-ovn'
diff --git a/docker/neutron/neutron-server-opendaylight/Dockerfile.j2 b/docker/neutron/neutron-server-opendaylight/Dockerfile.j2
index 8cabc0a3c..287274a5e 100644
--- a/docker/neutron/neutron-server-opendaylight/Dockerfile.j2
+++ b/docker/neutron/neutron-server-opendaylight/Dockerfile.j2
@@ -9,17 +9,26 @@ USER root
{% if install_type == 'binary' %}
{% if base_package_type == 'rpm' %}
+ {% if distro_python_version.startswith('3') %}
+ {% set neutron_server_opendaylight_packages = [
+ 'python3-networking-bgpvpn',
+ 'python3-networking-bgpvpn-heat',
+ 'python3-networking-l2gw',
+ 'python3-networking-odl'
+ ] %}
+ {% else %}
{% set neutron_server_opendaylight_packages = [
- 'python-networking-odl',
'python-networking-bgpvpn',
+ 'python-networking-bgpvpn-heat',
'python-networking-l2gw',
- 'python-networking-bgpvpn-heat'
+ 'python-networking-odl'
] %}
+ {% endif %}
{% elif base_package_type == 'deb' %}
{% set neutron_server_opendaylight_packages = [
- 'python3-networking-odl',
'python3-networking-bgpvpn',
'python3-networking-l2gw',
+ 'python3-networking-odl'
] %}
{% endif %}
diff --git a/docker/neutron/neutron-server-ovn/Dockerfile.j2 b/docker/neutron/neutron-server-ovn/Dockerfile.j2
index 24525ff46..6e2b10cb0 100644
--- a/docker/neutron/neutron-server-ovn/Dockerfile.j2
+++ b/docker/neutron/neutron-server-ovn/Dockerfile.j2
@@ -9,9 +9,16 @@ USER root
{% if install_type == 'binary' %}
{% if base_package_type == 'rpm' %}
+ {% if distro_python_version.startswith('3') %}
{% set neutron_server_ovn_packages = [
- 'python-networking-ovn',
+ 'python3-networking-ovn'
] %}
+ {% else %}
+ {% set neutron_server_ovn_packages = [
+ 'python-networking-ovn'
+ ] %}
+ {% endif %}
+
{% elif base_package_type == 'deb' %}
{% set neutron_server_ovn_packages = [
'python3-networking-ovn',
diff --git a/docker/neutron/neutron-server/Dockerfile.j2 b/docker/neutron/neutron-server/Dockerfile.j2
index 0ec432045..6404a79d9 100644
--- a/docker/neutron/neutron-server/Dockerfile.j2
+++ b/docker/neutron/neutron-server/Dockerfile.j2
@@ -7,12 +7,20 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if install_type == 'binary' %}
{% if base_package_type == 'rpm' %}
-
{% set neutron_server_packages = [
'openstack-neutron-vpnaas',
- 'python-networking-generic-switch',
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set neutron_server_packages = neutron_server_packages + [
+ 'python3-networking-generic-switch'
+ ] %}
+ {% else %}
+ {% set neutron_server_packages = neutron_server_packages + [
+ 'python-networking-generic-switch'
+ ] %}
+ {% endif %}
+
{% elif base_package_type == 'deb' %}
{% set neutron_server_packages = [
diff --git a/docker/nova/nova-api/Dockerfile.j2 b/docker/nova/nova-api/Dockerfile.j2
index 2bd2a0cfb..9024d9387 100644
--- a/docker/nova/nova-api/Dockerfile.j2
+++ b/docker/nova/nova-api/Dockerfile.j2
@@ -11,9 +11,14 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% set nova_api_packages = [
'httpd',
'mod_ssl',
- 'mod_wsgi',
'openstack-nova-api'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set nova_api_packages = nova_api_packages + ['python3-mod_wsgi'] %}
+ {% else %}
+ {% set nova_api_packages = nova_api_packages + ['mod_wsgi'] %}
+ {% endif %}
+
{{ macros.install_packages(nova_api_packages | customizable("packages")) }}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
&& sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf
@@ -38,8 +43,13 @@ RUN echo > /etc/apache2/ports.conf
{% set nova_api_packages = [
'httpd',
'mod_ssl',
- 'mod_wsgi'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set nova_api_packages = nova_api_packages + ['python3-mod_wsgi'] %}
+ {% else %}
+ {% set nova_api_packages = nova_api_packages + ['mod_wsgi'] %}
+ {% endif %}
+
{{ macros.install_packages(nova_api_packages | customizable("packages")) }}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
&& sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf
diff --git a/docker/nova/nova-base/Dockerfile.j2 b/docker/nova/nova-base/Dockerfile.j2
index cfbb5e5bb..f64664f65 100644
--- a/docker/nova/nova-base/Dockerfile.j2
+++ b/docker/nova/nova-base/Dockerfile.j2
@@ -12,10 +12,20 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% set nova_base_packages = [
'openstack-nova-common',
- 'openvswitch',
+ 'openvswitch'
+ ] %}
+
+ {% if distro_python_version.startswith('3') %}
+ {% set nova_base_packages = nova_base_packages + [
+ 'python3-cinderclient',
+ 'python3-keystoneclient'
+ ] %}
+ {% else %}
+ {% set nova_base_packages = nova_base_packages + [
'python-cinderclient',
'python-keystoneclient'
] %}
+ {% endif %}
{% if base_arch == 'x86_64' %}
{% if base_distro in ['centos', 'oraclelinux', 'rhel'] and base_distro_tag.startswith('7') %}
diff --git a/docker/nova/nova-compute/Dockerfile.j2 b/docker/nova/nova-compute/Dockerfile.j2
index 03741d034..8f58e2b74 100644
--- a/docker/nova/nova-compute/Dockerfile.j2
+++ b/docker/nova/nova-compute/Dockerfile.j2
@@ -19,13 +19,24 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'openstack-nova-compute',
'openvswitch',
'parted',
- 'python-libguestfs',
- 'python-oslo-vmware',
- 'python-rtslib',
'sysfsutils',
'targetcli'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set nova_compute_packages = nova_compute_packages + [
+ 'python3-libguestfs',
+ 'python3-oslo-vmware',
+ 'python3-rtslib'
+ ] %}
+ {% else %}
+ {% set nova_compute_packages = nova_compute_packages + [
+ 'python-libguestfs',
+ 'python-oslo-vmware',
+ 'python-rtslib'
+ ] %}
+ {% endif %}
+
{{ macros.install_packages(nova_compute_packages | customizable("packages")) }}
{% elif base_package_type == 'deb' %}
diff --git a/docker/nova/nova-placement-api/Dockerfile.j2 b/docker/nova/nova-placement-api/Dockerfile.j2
index ef76e4fb9..5c37e0a23 100644
--- a/docker/nova/nova-placement-api/Dockerfile.j2
+++ b/docker/nova/nova-placement-api/Dockerfile.j2
@@ -11,9 +11,13 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% set nova_placement_api_packages = [
'httpd',
'mod_ssl',
- 'mod_wsgi',
'openstack-nova-placement-api'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set nova_placement_api_packages = nova_placement_api_packages + ['python3-mod_wsgi'] %}
+ {% else %}
+ {% set nova_placement_api_packages = nova_placement_api_packages + ['mod_wsgi'] %}
+ {% endif %}
{{ macros.install_packages(nova_placement_api_packages | customizable("packages")) }}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
@@ -37,8 +41,12 @@ RUN truncate -s 0 /etc/apache2/ports.conf
{% set nova_placement_api_packages = [
'httpd',
'mod_ssl',
- 'mod_wsgi'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set nova_placement_api_packages = nova_placement_api_packages + ['python3-mod_wsgi'] %}
+ {% else %}
+ {% set nova_placement_api_packages = nova_placement_api_packages + ['mod_wsgi'] %}
+ {% endif %}
{{ macros.install_packages(nova_placement_api_packages | customizable("packages")) }}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
diff --git a/docker/nova/nova-spicehtml5proxy/Dockerfile.j2 b/docker/nova/nova-spicehtml5proxy/Dockerfile.j2
index 8003ac9b7..57b439766 100644
--- a/docker/nova/nova-spicehtml5proxy/Dockerfile.j2
+++ b/docker/nova/nova-spicehtml5proxy/Dockerfile.j2
@@ -9,11 +9,20 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if base_package_type == 'rpm' %}
{% set nova_spicehtml5proxy_packages = [
- 'numpy',
'openstack-nova-spicehtml5proxy',
'spice-html5'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set nova_spicehtml5proxy_packages = nova_spicehtml5proxy_packages + [
+ 'python3-numpy',
+ ] %}
+ {% else %}
+ {% set nova_spicehtml5proxy_packages = nova_spicehtml5proxy_packages + [
+ 'numpy',
+ ] %}
+ {% endif %}
+
{% elif base_package_type == 'deb' %}
{% set nova_spicehtml5proxy_packages = [
diff --git a/docker/novajoin/novajoin-base/Dockerfile.j2 b/docker/novajoin/novajoin-base/Dockerfile.j2
index 3495d0ef9..6c382574a 100644
--- a/docker/novajoin/novajoin-base/Dockerfile.j2
+++ b/docker/novajoin/novajoin-base/Dockerfile.j2
@@ -10,9 +10,15 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if install_type == 'binary' %}
{% if base_package_type == 'rpm' %}
+ {% if distro_python_version.startswith('3') %}
+ {% set novajoin_base_packages = [
+ 'python3-novajoin'
+ ] %}
+ {% else %}
{% set novajoin_base_packages = [
'python-novajoin'
] %}
+ {% endif %}
{% else %}
RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \
diff --git a/docker/octavia/octavia-api/Dockerfile.j2 b/docker/octavia/octavia-api/Dockerfile.j2
index 6c1666c55..cebdd2e54 100644
--- a/docker/octavia/octavia-api/Dockerfile.j2
+++ b/docker/octavia/octavia-api/Dockerfile.j2
@@ -10,9 +10,17 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% set octavia_api_packages = [
'openstack-octavia-api',
'httpd',
- 'mod_ssl',
+ 'mod_ssl'
+ ] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set octavia_api_packages = octavia_api_packages + [
+ 'python3-mod_wsgi'
+ ] %}
+ {% else %}
+ {% set octavia_api_packages = octavia_api_packages + [
'mod_wsgi'
] %}
+ {% endif %}
{% elif base_package_type == 'deb' %}
RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \
&& /bin/false
@@ -23,9 +31,18 @@ RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \
{% if base_package_type == 'rpm' %}
{% set octavia_api_packages = [
'httpd',
- 'mod_ssl',
+ 'mod_ssl'
+ ] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set octavia_api_packages = octavia_api_packages + [
+ 'python3-mod_wsgi'
+ ] %}
+ {% else %}
+ {% set octavia_api_packages = octavia_api_packages + [
'mod_wsgi'
] %}
+ {% endif %}
+
{% elif base_package_type == 'deb' %}
{% set octavia_api_packages = [
'apache2',
diff --git a/docker/openstack-base/Dockerfile.j2 b/docker/openstack-base/Dockerfile.j2
index 4f6627197..493cbd8ce 100644
--- a/docker/openstack-base/Dockerfile.j2
+++ b/docker/openstack-base/Dockerfile.j2
@@ -15,8 +15,92 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'libxslt',
'libyaml',
'mailcap',
- 'MySQL-python',
'openssl',
+ 'systemd-sysv',
+ 'tcp_wrappers-libs'
+ ] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set openstack_base_packages = openstack_base_packages + [
+ 'procps-ng',
+ 'python3-PyYAML',
+ 'python3-alembic',
+ 'python3-anyjson',
+ 'python3-aodhclient',
+ 'python3-barbicanclient',
+ 'python3-cachetools',
+ 'python3-cloudkittyclient',
+ 'python3-congressclient',
+ 'python3-contextlib2',
+ 'python3-cryptography',
+ 'python3-designateclient',
+ 'python3-elasticsearch',
+ 'python3-eventlet',
+ 'python3-extras',
+ 'python3-glanceclient',
+ 'python3-gnocchiclient',
+ 'python3-heatclient',
+ 'python3-httplib2',
+ 'python3-ironicclient',
+ 'python3-iso8601',
+ 'python3-kazoo',
+ 'python3-keystoneauth1',
+ 'python3-keystoneclient',
+ 'python3-keystonemiddleware',
+ 'python3-logutils',
+ 'python3-lxml',
+ 'python3-magnumclient',
+ 'python3-manilaclient',
+ 'python3-migrate',
+ 'python3-mimeparse',
+ 'python3-mistralclient',
+ 'python3-muranoclient',
+ 'python3-mysql',
+ 'python3-neutronclient',
+ 'python3-novaclient',
+ 'python3-openstackclient',
+ 'python3-oslo-cache',
+ 'python3-oslo-concurrency',
+ 'python3-oslo-config',
+ 'python3-oslo-context',
+ 'python3-oslo-db',
+ 'python3-oslo-i18n',
+ 'python3-oslo-log',
+ 'python3-oslo-messaging',
+ 'python3-oslo-middleware',
+ 'python3-oslo-policy',
+ 'python3-oslo-reports',
+ 'python3-oslo-rootwrap',
+ 'python3-oslo-serialization',
+ 'python3-oslo-service',
+ 'python3-oslo-utils',
+ 'python3-oslo-versionedobjects',
+ 'python3-osprofiler',
+ 'python3-paramiko',
+ 'python3-paste-deploy',
+ 'python3-pbr',
+ 'python3-pika',
+ 'python3-posix_ipc',
+ 'python3-prettytable',
+ 'python3-psycopg2',
+ 'python3-pyasn1',
+ 'python3-redis',
+ 'python3-retrying',
+ 'python3-routes',
+ 'python3-saharaclient',
+ 'python3-sqlalchemy',
+ 'python3-sqlparse',
+ 'python3-swiftclient',
+ 'python3-sysv_ipc',
+ 'python3-tooz',
+ 'python3-troveclient',
+ 'python3-vitrageclient',
+ 'python3-webob',
+ 'python3-zaqarclient',
+ 'util-linux-user'
+ ] %}
+ {% else %}
+ {% set openstack_base_packages = openstack_base_packages + [
+ 'MySQL-python',
'python2-cryptography',
'python2-eventlet',
'python2-iso8601',
@@ -91,10 +175,9 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'python2-webob',
'python-zaqarclient',
'PyYAML',
- 'systemd-sysv',
- 'sysvinit-tools',
- 'tcp_wrappers-libs'
+ 'sysvinit-tools'
] %}
+ {% endif %}
{% elif base_package_type == 'deb' %}
diff --git a/docker/openvswitch/openvswitch-base/Dockerfile.j2 b/docker/openvswitch/openvswitch-base/Dockerfile.j2
index 1b0a7c66c..439eb12ac 100644
--- a/docker/openvswitch/openvswitch-base/Dockerfile.j2
+++ b/docker/openvswitch/openvswitch-base/Dockerfile.j2
@@ -10,11 +10,20 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if base_package_type == 'rpm' %}
{% set openvswitch_base_packages = [
'openvswitch',
- 'python-netifaces',
- 'python-openvswitch',
'tcpdump'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set openvswitch_base_packages = openvswitch_base_packages + [
+ 'python3-netifaces',
+ 'python3-openvswitch'
+ ] %}
+ {% else %}
+ {% set openvswitch_base_packages = openvswitch_base_packages + [
+ 'python-netifaces',
+ 'python-openvswitch'
+ ] %}
+ {% endif %}
{% elif base_package_type == 'deb' %}
{% set openvswitch_base_packages = [
'openvswitch-switch',
diff --git a/docker/panko/panko-api/Dockerfile.j2 b/docker/panko/panko-api/Dockerfile.j2
index 9e3a06167..ca0db74ee 100644
--- a/docker/panko/panko-api/Dockerfile.j2
+++ b/docker/panko/panko-api/Dockerfile.j2
@@ -7,11 +7,19 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if install_type == 'binary' %}
{% if base_package_type == 'rpm' %}
- {% set panko_api_packages = [
- 'openstack-panko-api',
- 'python-pymongo'
+ {% set panko_api_packages = [
+ 'openstack-panko-api'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set panko_api_packages = panko_api_packages + [
+ 'python3-pymongo'
+ ] %}
+ {% else %}
+ {% set panko_api_packages = panko_api_packages + [
+ 'python-pymongo'
+ ] %}
+ {% endif %}
{% elif base_package_type == 'deb' %}
{% set panko_api_packages = [
'panko-api',
diff --git a/docker/panko/panko-base/Dockerfile.j2 b/docker/panko/panko-base/Dockerfile.j2
index 1c8757f30..8111c616c 100644
--- a/docker/panko/panko-base/Dockerfile.j2
+++ b/docker/panko/panko-base/Dockerfile.j2
@@ -10,14 +10,23 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if install_type == 'binary' %}
{% if base_package_type == 'rpm' %}
- {% set panko_base_packages = [
+ {% set panko_base_packages = [
'httpd',
'mod_ssl',
+ 'openstack-panko-common'
+ ] %}
+
+ {% if distro_python_version.startswith('3') %}
+ {% set panko_base_packages = panko_base_packages + [
+ 'python3-ldappool',
+ 'python3-mod_wsgi'
+ ] %}
+ {% else %}
+ {% set panko_base_packages = panko_base_packages + [
'mod_wsgi',
- 'openstack-panko-common',
'python2-ldappool'
] %}
-
+ {% endif %}
{{ macros.install_packages(panko_base_packages | customizable("packages")) }}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
&& sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf
@@ -35,9 +44,18 @@ RUN echo > /etc/apache2/ports.conf
{% set panko_base_packages = [
'httpd',
'mod_ssl',
+ ] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set panko_base_packages = panko_base_packages + [
+ 'python3-ldappool',
+ 'python3-mod_wsgi'
+ ] %}
+ {% else %}
+ {% set panko_base_packages = panko_base_packages + [
'mod_wsgi',
'python2-ldappool'
] %}
+ {% endif %}
{{ macros.install_packages(panko_base_packages | customizable("packages")) }}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
&& sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf
diff --git a/docker/placement/placement-api/Dockerfile.j2 b/docker/placement/placement-api/Dockerfile.j2
index b573a36d7..468428453 100644
--- a/docker/placement/placement-api/Dockerfile.j2
+++ b/docker/placement/placement-api/Dockerfile.j2
@@ -11,9 +11,13 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% set placement_api_packages = [
'httpd',
'mod_ssl',
- 'mod_wsgi',
'openstack-placement-api'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set placement_api_packages = placement_api_packages + ['python3-mod_wsgi'] %}
+ {% else %}
+ {% set placement_api_packages = placement_api_packages + ['mod_wsgi'] %}
+ {% endif %}
{{ macros.install_packages(placement_api_packages | customizable("packages")) }}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
@@ -37,8 +41,12 @@ RUN truncate -s 0 /etc/apache2/ports.conf
{% set placement_api_packages = [
'httpd',
'mod_ssl',
- 'mod_wsgi'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set placement_api_packages = placement_api_packages + ['python3-mod_wsgi'] %}
+ {% else %}
+ {% set placement_api_packages = placement_api_packages + ['mod_wsgi'] %}
+ {% endif %}
{{ macros.install_packages(placement_api_packages | customizable("packages")) }}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
diff --git a/docker/rally/Dockerfile.j2 b/docker/rally/Dockerfile.j2
index 2b6b6f8f0..a192a8382 100644
--- a/docker/rally/Dockerfile.j2
+++ b/docker/rally/Dockerfile.j2
@@ -11,9 +11,18 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if base_package_type == 'rpm' %}
{% set rally_packages = [
- 'openstack-rally',
+ 'openstack-rally'
+ ] %}
+
+ {% if distro_python_version.startswith('3') %}
+ {% set rally_packages = rally_packages + [
+ 'python3-os-testr'
+ ] %}
+ {% else %}
+ {% set rally_packages = rally_packages + [
'python-os-testr'
] %}
+ {% endif %}
{% elif base_package_type == 'deb' %}
{% set rally_packages = [
'python-os-testr',
diff --git a/docker/sensu/sensu-client/Dockerfile.j2 b/docker/sensu/sensu-client/Dockerfile.j2
index dae01dcaa..2a3689c25 100644
--- a/docker/sensu/sensu-client/Dockerfile.j2
+++ b/docker/sensu/sensu-client/Dockerfile.j2
@@ -15,9 +15,18 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'mariadb',
'ntp',
'osops-tools-monitoring-oschecks',
- 'python-pymongo',
'ruby-devel'
] %}
+
+ {% if distro_python_version.startswith('3') %}
+ {% set sensu_client_packages = sensu_client_packages + [
+ 'python3-pymongo'
+ ] %}
+ {% else %}
+ {% set sensu_client_packages = sensu_client_packages + [
+ 'python-pymongo'
+ ] %}
+ {% endif %}
{% elif base_package_type == 'deb' %}
{% set sensu_client_packages = [
'build-essential',
diff --git a/docker/swift/swift-proxy-server/Dockerfile.j2 b/docker/swift/swift-proxy-server/Dockerfile.j2
index 4cfe18d2b..1ff9ac591 100644
--- a/docker/swift/swift-proxy-server/Dockerfile.j2
+++ b/docker/swift/swift-proxy-server/Dockerfile.j2
@@ -8,9 +8,17 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if install_type == 'binary' %}
{% if base_package_type == 'rpm' %}
{% set swift_proxy_server_packages = [
- 'openstack-swift-proxy',
+ 'openstack-swift-proxy'
+ ] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set swift_proxy_server_packages = swift_proxy_server_packages + [
+ 'python3-ceilometermiddleware'
+ ] %}
+ {% else %}
+ {% set swift_proxy_server_packages = swift_proxy_server_packages + [
'python-ceilometermiddleware'
] %}
+ {% endif %}
{% elif base_package_type == 'deb' %}
{% set swift_proxy_server_packages = [
'swift-proxy',
diff --git a/docker/tacker/tacker-base/Dockerfile.j2 b/docker/tacker/tacker-base/Dockerfile.j2
index 5a3a8c870..5f3e2e1de 100644
--- a/docker/tacker/tacker-base/Dockerfile.j2
+++ b/docker/tacker/tacker-base/Dockerfile.j2
@@ -11,9 +11,17 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if base_package_type == 'rpm' %}
{% set tacker_base_packages = [
- 'openstack-tacker-common',
+ 'openstack-tacker-common'
+ ] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set tacker_base_packages = tacker_base_packages + [
+ 'python3-networking-sfc'
+ ] %}
+ {% else %}
+ {% set tacker_base_packages = tacker_base_packages + [
'python-networking-sfc'
] %}
+ {% endif %}
{% elif base_package_type == 'deb' %}
diff --git a/docker/telegraf/Dockerfile.j2 b/docker/telegraf/Dockerfile.j2
index ded397ae1..4af2a7e33 100644
--- a/docker/telegraf/Dockerfile.j2
+++ b/docker/telegraf/Dockerfile.j2
@@ -15,9 +15,17 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if base_package_type == 'rpm' %}
{% set telegraf_packages = telegraf_packages + [
- 'collectd',
+ 'collectd'
+ ] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set telegraf_packages = telegraf_packages + [
+ 'python3-pip'
+ ] %}
+ {% else %}
+ {% set telegraf_packages = telegraf_packages + [
'python2-pip'
] %}
+ {% endif %}
{% elif base_package_type == 'deb' %}
{% set telegraf_packages = telegraf_packages + [
'collectd-core',
diff --git a/docker/tripleoclient/Dockerfile.j2 b/docker/tripleoclient/Dockerfile.j2
index f4ad80d00..b47eff638 100644
--- a/docker/tripleoclient/Dockerfile.j2
+++ b/docker/tripleoclient/Dockerfile.j2
@@ -7,18 +7,27 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if install_type == 'binary' %}
{% if base_package_type == 'rpm' %}
-
{% set tripleoclient_packages = [
- 'python-ipaddr',
- 'python-openstackclient',
- 'python-tripleoclient',
- 'puppet-tripleo',
- 'openstack-tripleo-validations',
'e2fsprogs',
- 'xfsprogs',
+ 'git',
'openssh-clients',
- 'git'
+ 'openstack-tripleo-validations',
+ 'puppet-tripleo',
+ 'xfsprogs'
+ ] %}
+
+ {% if distro_python_version.startswith('3') %}
+ {% set tripleoclient_packages = tripleoclient_packages + [
+ 'python3-openstackclient',
+ 'python3-tripleoclient'
+ ] %}
+ {% else %}
+ {% set tripleoclient_packages = tripleoclient_packages + [
+ 'python-ipaddr',
+ 'python-openstackclient',
+ 'python-tripleoclient'
] %}
+ {% endif %}
{{ macros.install_packages(tripleoclient_packages | customizable("packages")) }}
diff --git a/docker/vitrage/vitrage-api/Dockerfile.j2 b/docker/vitrage/vitrage-api/Dockerfile.j2
index e9b9a9fe9..169f75fdf 100644
--- a/docker/vitrage/vitrage-api/Dockerfile.j2
+++ b/docker/vitrage/vitrage-api/Dockerfile.j2
@@ -11,12 +11,22 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% set vitrage_api_packages = [
'httpd',
- 'mod_wsgi',
'mod_ssl',
- 'python2-ldappool',
'openstack-vitrage-api'
] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set vitrage_api_packages = vitrage_api_packages + [
+ 'python3-ldappool',
+ 'python3-mod_wsgi'
+ ] %}
+ {% else %}
+ {% set vitrage_api_packages = vitrage_api_packages + [
+ 'mod_wsgi',
+ 'python2-ldappool'
+ ] %}
+ {% endif %}
+
{{ macros.install_packages(vitrage_api_packages | customizable("packages")) }}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
&& sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf
diff --git a/docker/vitrage/vitrage-base/Dockerfile.j2 b/docker/vitrage/vitrage-base/Dockerfile.j2
index fb9acf2dd..2e60607e0 100644
--- a/docker/vitrage/vitrage-base/Dockerfile.j2
+++ b/docker/vitrage/vitrage-base/Dockerfile.j2
@@ -33,10 +33,20 @@ RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \
{% set vitrage_base_packages = [
'httpd',
- 'mod_wsgi',
'mod_ssl',
+ ] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set vitrage_base_packages = vitrage_base_packages + [
+ 'python3-ldappool',
+ 'python3-mod_wsgi'
+ ] %}
+ {% else %}
+ {% set vitrage_base_packages = vitrage_base_packages + [
+ 'mod_wsgi',
'python2-ldappool'
] %}
+ {% endif %}
+
{{ macros.install_packages(vitrage_base_packages | customizable("packages")) }}
RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
diff --git a/docker/zaqar/zaqar-base/Dockerfile.j2 b/docker/zaqar/zaqar-base/Dockerfile.j2
index c75f7f39a..d8f42752d 100644
--- a/docker/zaqar/zaqar-base/Dockerfile.j2
+++ b/docker/zaqar/zaqar-base/Dockerfile.j2
@@ -14,14 +14,24 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'openstack-zaqar',
'httpd',
'mod_ssl',
+ ] %}
+
+ {% if distro_python_version.startswith('3') %}
+ {% set zaqar_base_packages = zaqar_base_packages + [
+ 'python3-ldappool',
+ 'python3-mod_wsgi'
+ ] %}
+ {% else %}
+ {% set zaqar_base_packages = zaqar_base_packages + [
'mod_wsgi',
'python2-ldappool'
] %}
+ {% endif %}
{{ macros.install_packages(zaqar_base_packages | customizable("packages")) }} \
&& mkdir -p /var/www/cgi-bin/zaqar \
&& chown -R zaqar: /var/www/cgi-bin/zaqar \
- && cp -a /usr/lib/python2.7/site-packages/zaqar/transport/wsgi/app.py /var/www/cgi-bin/zaqar/ \
+ && cp -a /usr/lib/python{{ distro_python_version }}/site-packages/zaqar/transport/wsgi/app.py /var/www/cgi-bin/zaqar/ \
&& sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
&& sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf
@@ -46,9 +56,18 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% set zaqar_base_packages = [
'httpd',
'mod_ssl',
+ ] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set zaqar_base_packages = zaqar_base_packages + [
+ 'python3-ldappool',
+ 'python3-mod_wsgi'
+ ] %}
+ {% else %}
+ {% set zaqar_base_packages = zaqar_base_packages + [
'mod_wsgi',
'python2-ldappool'
] %}
+ {% endif %}
{{ macros.install_packages(zaqar_base_packages | customizable("packages")) }} \
&& sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
diff --git a/docker/zun/zun-base/Dockerfile.j2 b/docker/zun/zun-base/Dockerfile.j2
index f60ddb1b9..4bb10bcd3 100644
--- a/docker/zun/zun-base/Dockerfile.j2
+++ b/docker/zun/zun-base/Dockerfile.j2
@@ -18,11 +18,20 @@ RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \
{% set zun_base_packages = [
'httpd',
- 'mod_wsgi',
'mod_ssl',
'numactl',
+ ] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set zun_base_packages = zun_base_packages + [
+ 'python3-ldappool',
+ 'python3-mod_wsgi'
+ ] %}
+ {% else %}
+ {% set zun_base_packages = zun_base_packages + [
+ 'mod_wsgi',
'python2-ldappool'
] %}
+ {% endif %}
{{ macros.install_packages(zun_base_packages | customizable("packages")) }}
RUN mkdir -p /var/www/cgi-bin/zun \
diff --git a/releasenotes/notes/rhel-python3-support-1078f829dc42c4d6.yaml b/releasenotes/notes/rhel-python3-support-1078f829dc42c4d6.yaml
new file mode 100644
index 000000000..4c27f1a83
--- /dev/null
+++ b/releasenotes/notes/rhel-python3-support-1078f829dc42c4d6.yaml
@@ -0,0 +1,6 @@
+---
+features:
+ - |
+ Added initial support for python3 packages for RHEL systems provided by
+ RDO. To enable the use of the python3 packages, set distro_python3 to True
+ and use a python 3.6 RHEL compatible base.