aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docker/base/Dockerfile.j222
-rwxr-xr-xkolla/cmd/build.py15
-rw-r--r--kolla/tests/test_build.py26
3 files changed, 41 insertions, 22 deletions
diff --git a/docker/base/Dockerfile.j2 b/docker/base/Dockerfile.j2
index f0284d293..4fe02e7e1 100644
--- a/docker/base/Dockerfile.j2
+++ b/docker/base/Dockerfile.j2
@@ -3,28 +3,6 @@ MAINTAINER {{ maintainer }}
LABEL kolla_version="{{ kolla_version }}"
-{# Early failure for bases and types #}
-{% if base_distro in ['fedora', 'centos', 'oraclelinux', 'rhel'] %}
- {% if install_type not in ['source', 'binary', 'rdo', 'rhel'] %}
-
-RUN echo 'ERROR: {{ install_type }} is unavailable for {{ base_distro }}' \
- && /bin/false
-
- {% endif %}
-{% elif base_distro in ['ubuntu', 'debian'] %}
- {% if install_type not in ['source','binary'] %}
-
-RUN echo 'ERROR: {{ install_type }} is unavailable for {{ base_distro }}' \
- && /bin/false
-
- {% endif %}
-{% else %}
-
-RUN echo 'ERROR: The specified distro has no Kolla images to build: "{{ base_distro }}"' \
- && /bin/false
-
-{% endif %}
-
{{ include_header }}
diff --git a/kolla/cmd/build.py b/kolla/cmd/build.py
index 1e51dde75..68babfa75 100755
--- a/kolla/cmd/build.py
+++ b/kolla/cmd/build.py
@@ -64,6 +64,10 @@ class KollaUnknownBuildTypeException(Exception):
pass
+class KollaMismatchBaseTypeException(Exception):
+ pass
+
+
class KollaRpmSetupUnknownConfig(Exception):
pass
@@ -322,6 +326,17 @@ class KollaWorker(object):
rpm_setup_config = filter(None, conf.rpm_setup_config)
self.rpm_setup = self.build_rpm_setup(rpm_setup_config)
+ rh_base = ['fedora', 'centos', 'oraclelinux', 'rhel']
+ rh_type = ['source', 'binary', 'rdo', 'rhos']
+ deb_base = ['ubuntu', 'debian']
+ deb_type = ['source', 'binary']
+
+ 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 KollaMismatchBaseTypeException(
+ '{} is unavailable for {}'.format(self.install_type, self.base)
+ )
+
if self.install_type == 'binary':
self.install_metatype = 'rdo'
elif self.install_type == 'source':
diff --git a/kolla/tests/test_build.py b/kolla/tests/test_build.py
index d1ace9ec8..634fa3abb 100644
--- a/kolla/tests/test_build.py
+++ b/kolla/tests/test_build.py
@@ -11,6 +11,7 @@
# limitations under the License.
import fixtures
+import itertools
import mock
import os
@@ -102,3 +103,28 @@ class WorkerThreadTest(base.TestCase):
path=FAKE_IMAGE['path'], tag=FAKE_IMAGE['fullname'],
nocache=False, rm=True, pull=True, forcerm=True,
buildargs=build_args)
+
+
+class KollaWorkerTest(base.TestCase):
+
+ def test_supported_base_type(self):
+ rh_base = ['fedora', 'centos', 'oraclelinux', 'rhel']
+ rh_type = ['source', 'binary', 'rdo', 'rhos']
+ deb_base = ['ubuntu', 'debian']
+ deb_type = ['source', 'binary']
+
+ for base_distro, install_type in itertools.chain(
+ itertools.product(rh_base, rh_type),
+ itertools.product(deb_base, deb_type)):
+ self.conf.set_override('base', base_distro)
+ self.conf.set_override('install_type', install_type)
+ # should no exception raised
+ build.KollaWorker(self.conf)
+
+ def test_unsupported_base_type(self):
+ for base_distro, install_type in itertools.product(
+ ['ubuntu', 'debian'], ['rdo', 'rhos']):
+ self.conf.set_override('base', base_distro)
+ self.conf.set_override('install_type', install_type)
+ self.assertRaises(build.KollaMismatchBaseTypeException,
+ build.KollaWorker, self.conf)