aboutsummaryrefslogtreecommitdiff
path: root/kolla
diff options
context:
space:
mode:
authorAlex Schultz <aschultz@redhat.com>2019-01-15 16:33:24 -0700
committerAlex Schultz <aschultz@redhat.com>2019-01-16 08:36:44 -0700
commitfca732b81e4eb5daa56da16e338bdd305a56d5bd (patch)
tree41f9da6416f41184abbc029ed69c2df2a0149afb /kolla
parent3410a6165af199992c0b06eaf603dd0dde72c4b0 (diff)
downloadkolla-fca732b81e4eb5daa56da16e338bdd305a56d5bd.tar.gz
kolla-fca732b81e4eb5daa56da16e338bdd305a56d5bd.zip
Add base_package_type
Currently in all the Dockerfile.j2 files, we are doing base distro if conditions for package names when installing via a binary. Rather than duplicating these base_distro in [<distros>], let's provide a single value for determining the binary installation method. This change adds a base_package_type which we can use to lookup if 'rpm' or if 'deb' rather than relying on specific distro names. Change-Id: I8a0c6c8fbc32a8cfa6932fddf28a449fceda3d49
Diffstat (limited to 'kolla')
-rwxr-xr-xkolla/common/config.py4
-rwxr-xr-xkolla/image/build.py9
-rw-r--r--kolla/tests/test_build.py18
3 files changed, 31 insertions, 0 deletions
diff --git a/kolla/common/config.py b/kolla/common/config.py
index e1c682b4f..5d1082f65 100755
--- a/kolla/common/config.py
+++ b/kolla/common/config.py
@@ -270,6 +270,10 @@ _BASE_OPTS = [
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.StrOpt('base_package_type', default=None,
+ help=('Set the package type of the distro. If not set then '
+ 'the packaging type is set to "rpm" if a RHEL based '
+ 'distro and "deb" if a Debian based distro.')),
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')),
diff --git a/kolla/image/build.py b/kolla/image/build.py
index 6cb1cb2da..4dd3daec7 100755
--- a/kolla/image/build.py
+++ b/kolla/image/build.py
@@ -697,6 +697,14 @@ class KollaWorker(object):
else:
self.distro_python3 = False
+ # Determine base packaging type for use in Dockerfiles.
+ if self.conf.base_package_type:
+ self.base_package_type = self.conf.base_package_type
+ elif self.base in rh_base:
+ self.base_package_type = 'rpm'
+ elif self.base in deb_base:
+ self.base_package_type = 'deb'
+
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(
@@ -886,6 +894,7 @@ class KollaWorker(object):
'base_image': self.conf.base_image,
'base_distro_tag': self.base_tag,
'base_arch': self.base_arch,
+ 'base_package_type': self.base_package_type,
'supported_distro_release': supported_distro_release,
'install_metatype': self.install_metatype,
'image_prefix': self.image_prefix,
diff --git a/kolla/tests/test_build.py b/kolla/tests/test_build.py
index c6a953003..6ed50fbf1 100644
--- a/kolla/tests/test_build.py
+++ b/kolla/tests/test_build.py
@@ -401,6 +401,24 @@ class KollaWorkerTest(base.TestCase):
kolla = build.KollaWorker(self.conf)
self.assertFalse(kolla.distro_python3)
+ def test_base_package_type(self):
+ """check base_package_type conf value is taken"""
+ self.conf.set_override('base_package_type', 'pip')
+ kolla = build.KollaWorker(self.conf)
+ self.assertEqual('pip', kolla.base_package_type)
+
+ def test_base_package_type_rhel(self):
+ """check base_package_type rpm for rhel"""
+ self.conf.set_override('base', 'rhel')
+ kolla = build.KollaWorker(self.conf)
+ self.assertEqual('rpm', kolla.base_package_type)
+
+ def test_base_package_type_debian(self):
+ """check base_package_type deb for debian"""
+ self.conf.set_override('base', 'debian')
+ kolla = build.KollaWorker(self.conf)
+ self.assertEqual('deb', kolla.base_package_type)
+
def test_pre_defined_exist_profile(self):
# default profile include the fake image: image-base
self.conf.set_override('profile', ['default'])