Add distro_python3 option

As we add support for python3 on RHEL based systems, we need to add a
flag to key off of in the Dockerfiles to swap out the python3 package
names.  This change adds a distro_python3 configuration option that can
be defined to force python3 or python2 package names.  If this option
is not provided, we set this to True for RHEL 8 based distros and false
for other distros.

Change-Id: I4028991bad92c0e8e21066cc4173c06ce5eba393
Related-Blueprint: python3-support
This commit is contained in:
Alex Schultz 2019-01-15 15:56:21 -07:00
parent 9cc0c84e88
commit 3410a6165a
4 changed files with 41 additions and 0 deletions

View File

@ -266,6 +266,10 @@ _BASE_OPTS = [
cfg.StrOpt('maintainer',
default='Kolla Project (https://launchpad.net/kolla)',
help='Content of the maintainer label'),
cfg.BoolOpt('distro_python3', default=None,
help=('Enable this to force python3 packaging names. By '
'default this will try and determine the value of this '
'based on the base_distro and base_distro_tag.')),
cfg.ListOpt('rpm_setup_config', default=[DELOREAN, DELOREAN_DEPS],
help=('Comma separated list of .rpm or .repo file(s) '
'or URL(s) to install before building containers')),

View File

@ -689,6 +689,14 @@ class KollaWorker(object):
deb_base = ['ubuntu', 'debian']
deb_type = ['source', 'binary']
if self.conf.distro_python3 is not None:
self.distro_python3 = self.conf.distro_python3
elif self.base in rh_base and self.base_tag in ['8']:
# RHEL 8+ is python3
self.distro_python3 = True
else:
self.distro_python3 = False
if not ((self.base in rh_base and self.install_type in rh_type) or
(self.base in deb_base and self.install_type in deb_type)):
raise exception.KollaMismatchBaseTypeException(
@ -888,6 +896,7 @@ class KollaWorker(object):
'kolla_version': kolla_version,
'image_name': image_name,
'users': self.get_users(),
'distro_python3': self.distro_python3,
'rpm_setup': self.rpm_setup,
'build_date': build_date}
env = jinja2.Environment( # nosec: not used to render HTML

View File

@ -381,6 +381,26 @@ class KollaWorkerTest(base.TestCase):
kolla = build.KollaWorker(self.conf)
self.assertEqual(2, len(kolla.rpm_setup))
def test_build_distro_python3(self):
"""check distro_python3 conf value is taken"""
self.conf.set_override('distro_python3', True)
kolla = build.KollaWorker(self.conf)
self.assertTrue(kolla.distro_python3)
def test_build_distro_python3_rhel8(self):
"""check distro_python3 true for rhel8"""
self.conf.set_override('base', 'rhel')
self.conf.set_override('base_tag', '8')
kolla = build.KollaWorker(self.conf)
self.assertTrue(kolla.distro_python3)
def test_build_distro_python3_non_rhel8(self):
"""check distro_python3 false for non-rhel8"""
self.conf.set_override('base', 'rhel')
self.conf.set_override('base_tag', '7')
kolla = build.KollaWorker(self.conf)
self.assertFalse(kolla.distro_python3)
def test_pre_defined_exist_profile(self):
# default profile include the fake image: image-base
self.conf.set_override('profile', ['default'])

View File

@ -0,0 +1,8 @@
---
features:
- |
Added a `distro_python3` configuration option for the kolla-build.conf
that will switch the package names to assume the python3 name. By default,
this will be True if a RHEL 8 based distro and False for any other distro.
If a value of True or False is provided in the configuration, this will
override the derived value.