aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcin Juszkiewicz <marcin.juszkiewicz@linaro.org>2020-01-02 09:56:10 +0100
committerMarcin Juszkiewicz <marcin.juszkiewicz@linaro.org>2020-01-02 09:58:58 +0100
commit2c2951b59b6e91c8f0ea6a82c1b3a9b16e1c02f7 (patch)
tree65792c94c4cb996657aa60590b8066dc9703607a
parent90babe35d0e075ad15904bb2263e1dd019f10532 (diff)
downloadkolla-2c2951b59b6e91c8f0ea6a82c1b3a9b16e1c02f7.tar.gz
kolla-2c2951b59b6e91c8f0ea6a82c1b3a9b16e1c02f7.zip
centos: disable EPEL by default
Our images use 'scsi-target-utils' from EPEL and then can be built without it. So let's disable this repository right after installing package from it. Images can enable EPEL with 'enable_extra_repos' macro. Also added 'disable_extra_repos' macro as we have some images in a need. Change-Id: Id70474e7602b531b63fdc11ae690fd9ed33def74
-rw-r--r--docker/base/Dockerfile.j21
-rw-r--r--docker/collectd/Dockerfile.j24
-rw-r--r--docker/macros.j28
-rw-r--r--docker/qdrouterd/Dockerfile.j22
-rwxr-xr-xkolla/image/build.py2
-rw-r--r--kolla/template/methods.py17
-rw-r--r--kolla/template/repos.yaml9
-rw-r--r--kolla/tests/test_methods.py56
8 files changed, 81 insertions, 18 deletions
diff --git a/docker/base/Dockerfile.j2 b/docker/base/Dockerfile.j2
index 48522109d..dadfa8e9e 100644
--- a/docker/base/Dockerfile.j2
+++ b/docker/base/Dockerfile.j2
@@ -265,6 +265,7 @@ RUN yum-config-manager --enable rhel-7-server-optional-rpms \
# Install base packages
{{ macros.install_packages( base_centos_packages | customizable("centos_packages") | customizable("centos_binary_packages") | customizable("centos_source_packages") ) }}
+{{ macros.disable_extra_repos('epel') }}
{# endif for base_package_type rpm #}
{% elif base_package_type == 'deb' %}
diff --git a/docker/collectd/Dockerfile.j2 b/docker/collectd/Dockerfile.j2
index a3cc0747b..2f251c5fc 100644
--- a/docker/collectd/Dockerfile.j2
+++ b/docker/collectd/Dockerfile.j2
@@ -88,10 +88,6 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% endif %}
{% endif %}
- {% if distro_package_manager == 'yum' %}
-# make sure, collectd is pulled from centos-opstools
-RUN yum-config-manager --disable epel
- {% endif %}
{% endif %}
{{ macros.install_packages(collectd_packages | customizable("packages")) }}
diff --git a/docker/macros.j2 b/docker/macros.j2
index 8c698d278..67e65af8a 100644
--- a/docker/macros.j2
+++ b/docker/macros.j2
@@ -94,6 +94,12 @@ RUN usermod --append --home {{ homedir }} --groups kolla {{ name }} \
{% macro enable_extra_repos(repos) %}
-{{ enable_repos(repos) }}
+{{ handle_repos(repos, 'enable') }}
+
+{% endmacro %}
+
+{% macro disable_extra_repos(repos) %}
+
+{{ handle_repos(repos, 'disable') }}
{% endmacro %}
diff --git a/docker/qdrouterd/Dockerfile.j2 b/docker/qdrouterd/Dockerfile.j2
index 049bc5da1..a7885895c 100644
--- a/docker/qdrouterd/Dockerfile.j2
+++ b/docker/qdrouterd/Dockerfile.j2
@@ -20,7 +20,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if base_distro in ['centos'] %}
# make sure qpid is pulled from centos-openstack-RELEASE (RDO) repo
-RUN {% if distro_package_manager == 'dnf' %}dnf config-manager{% else %}yum-config-manager{% endif %} --disable epel centos-release-opstools extras
+{{ macros.disable_extra_repos(['extras', 'opstools']) }}
{% endif %}
{{ macros.install_packages(qdrouterd_packages | customizable("packages")) }}
diff --git a/kolla/image/build.py b/kolla/image/build.py
index a5db92984..e5a96fbe5 100755
--- a/kolla/image/build.py
+++ b/kolla/image/build.py
@@ -917,7 +917,7 @@ class KollaWorker(object):
return {
'debian_package_install': jinja_methods.debian_package_install,
- 'enable_repos': jinja_methods.enable_repos,
+ 'handle_repos': jinja_methods.handle_repos,
}
def get_users(self):
diff --git a/kolla/template/methods.py b/kolla/template/methods.py
index c4c34125d..73e9d515a 100644
--- a/kolla/template/methods.py
+++ b/kolla/template/methods.py
@@ -72,7 +72,7 @@ def debian_package_install(packages, clean_package_cache=True):
@contextfunction
-def enable_repos(context, reponames):
+def handle_repos(context, reponames, mode):
"""NOTE(hrw): we need to handle CentOS, Debian and Ubuntu with one macro.
Repo names have to be simple names mapped to proper ones. So 'ceph' ==
@@ -80,6 +80,14 @@ def enable_repos(context, reponames):
something else for Debian.
Distro/arch are not required to have all entries - we ignore missing ones.
"""
+
+ if mode == 'enable':
+ rpm_switch = '--enable'
+ elif mode == 'disable':
+ rpm_switch = '--disable'
+ else:
+ raise KeyError
+
repofile = os.path.dirname(os.path.realpath(__file__)) + '/repos.yaml'
with open(repofile, 'r') as repos_file:
repo_data = {}
@@ -102,10 +110,11 @@ def enable_repos(context, reponames):
for repo in reponames:
try:
if base_package_type == 'rpm':
- commands += ' --enable %s' % repo_list[repo]
+ commands += ' %s %s' % (rpm_switch, repo_list[repo])
elif base_package_type == 'deb':
- commands += 'echo "%s" ' % repo_list[repo]
- commands += '>/etc/apt/sources.list.d/%s.list && ' % repo
+ if mode == 'enable':
+ commands += 'echo "%s" ' % repo_list[repo]
+ commands += '>/etc/apt/sources.list.d/%s.list && ' % repo
except KeyError:
# NOTE(hrw): we ignore missing repositories for a given
# distro/arch
diff --git a/kolla/template/repos.yaml b/kolla/template/repos.yaml
index 90b1bbd2b..c0e6cdfca 100644
--- a/kolla/template/repos.yaml
+++ b/kolla/template/repos.yaml
@@ -2,27 +2,36 @@
centos:
ceph: "centos-ceph-nautilus"
elasticsearch: "elasticsearch-kibana-logstash-5.x"
+ epel: "epel"
+ extras: "extras"
grafana: "grafana"
hacluster: "network_ha-clustering_Stable"
influxdb: "influxdb"
kibana: "elasticsearch-kibana-logstash-5.x"
nfs-ganesha: "centos-nfs-ganesha28"
opendaylight: "opendaylight"
+ opstools: "centos-release-opstools"
rabbitmq: "rabbitmq_rabbitmq-server"
td-agent: "treasuredata"
centos-aarch64:
ceph: "centos-ceph-nautilus"
elasticsearch: "elasticsearch-kibana-logstash-5.x"
+ epel: "epel"
+ extras: "extras"
grafana: "grafana"
nfs-ganesha: "centos-nfs-ganesha28"
opendaylight: "opendaylight"
+ opstools: "centos-release-opstools"
rabbitmq: "rabbitmq_rabbitmq-server"
centos-ppc64le:
ceph: "centos-ceph-nautilus"
elasticsearch: "elasticsearch-kibana-logstash-5.x"
+ epel: "epel"
+ extras: "extras"
nfs-ganesha: "centos-nfs-ganesha28"
+ opstools: "centos-release-opstools"
rabbitmq: "rabbitmq_rabbitmq-server"
# NOTE(hrw): empty dict to avoid TypeError
diff --git a/kolla/tests/test_methods.py b/kolla/tests/test_methods.py
index 2a27060a9..d2f6eff9d 100644
--- a/kolla/tests/test_methods.py
+++ b/kolla/tests/test_methods.py
@@ -30,7 +30,7 @@ class MethodsTest(base.TestCase):
'distro_package_manager': 'yum'
}
- result = methods.enable_repos(template_vars, ['grafana'])
+ result = methods.handle_repos(template_vars, ['grafana'], 'enable')
expectCmd = ''
self.assertEqual(expectCmd, result)
@@ -42,7 +42,7 @@ class MethodsTest(base.TestCase):
'distro_package_manager': 'yum'
}
- result = methods.enable_repos(template_vars, ['grafana'])
+ result = methods.handle_repos(template_vars, ['grafana'], 'enable')
expectCmd = 'RUN yum-config-manager --enable grafana'
self.assertEqual(expectCmd, result)
@@ -54,7 +54,8 @@ class MethodsTest(base.TestCase):
'distro_package_manager': 'yum'
}
- result = methods.enable_repos(template_vars, ['missing_repo'])
+ result = methods.handle_repos(template_vars, ['missing_repo'],
+ 'enable')
expectCmd = ''
self.assertEqual(expectCmd, result)
@@ -66,7 +67,8 @@ class MethodsTest(base.TestCase):
'distro_package_manager': 'yum'
}
- result = methods.enable_repos(template_vars, ['grafana', 'ceph'])
+ result = methods.handle_repos(template_vars, ['grafana', 'ceph'],
+ 'enable')
expectCmd = 'RUN yum-config-manager --enable grafana '
expectCmd += '--enable centos-ceph-nautilus'
self.assertEqual(expectCmd, result)
@@ -78,7 +80,7 @@ class MethodsTest(base.TestCase):
'base_package_type': 'deb'
}
- result = methods.enable_repos(template_vars, ['grafana'])
+ result = methods.handle_repos(template_vars, ['grafana'], 'enable')
expectCmd = 'RUN echo "deb https://packages.grafana.com/oss/deb '
expectCmd += 'stable main" >/etc/apt/sources.list.d/grafana.list'
self.assertEqual(expectCmd, result)
@@ -90,7 +92,8 @@ class MethodsTest(base.TestCase):
'base_package_type': 'deb'
}
- result = methods.enable_repos(template_vars, ['missing_repo'])
+ result = methods.handle_repos(template_vars, ['missing_repo'],
+ 'enable')
expectCmd = ''
self.assertEqual(expectCmd, result)
@@ -101,10 +104,49 @@ class MethodsTest(base.TestCase):
'base_package_type': 'deb'
}
- result = methods.enable_repos(template_vars, ['grafana', 'kibana'])
+ result = methods.handle_repos(template_vars, ['grafana', 'kibana'],
+ 'enable')
expectCmd = 'RUN echo "deb https://packages.grafana.com/oss/deb '
expectCmd += 'stable main" >/etc/apt/sources.list.d/grafana.list && '
expectCmd += 'echo "deb [arch=amd64] '
expectCmd += 'https://artifacts.elastic.co/packages/5.x/apt stable '
expectCmd += 'main" >/etc/apt/sources.list.d/kibana.list'
self.assertEqual(expectCmd, result)
+
+ def test_disable_repos_centos(self):
+ template_vars = {
+ 'base_arch': 'x86_64',
+ 'base_distro': 'centos',
+ 'base_package_type': 'rpm',
+ 'distro_package_manager': 'yum'
+ }
+
+ result = methods.handle_repos(template_vars, ['grafana'], 'disable')
+ expectCmd = 'RUN yum-config-manager --disable grafana'
+ self.assertEqual(expectCmd, result)
+
+ def test_disable_repos_centos_multiple(self):
+ template_vars = {
+ 'base_arch': 'x86_64',
+ 'base_distro': 'centos',
+ 'base_package_type': 'rpm',
+ 'distro_package_manager': 'yum'
+ }
+
+ result = methods.handle_repos(template_vars, ['grafana', 'ceph'],
+ 'disable')
+ expectCmd = 'RUN yum-config-manager --disable grafana '
+ expectCmd += '--disable centos-ceph-nautilus'
+ self.assertEqual(expectCmd, result)
+
+ # NOTE(hrw): there is no disabling of repos for Debian/Ubuntu
+ def test_disable_repos_debian(self):
+ template_vars = {
+ 'base_arch': 'x86_64',
+ 'base_distro': 'debian',
+ 'base_package_type': 'deb'
+ }
+
+ result = methods.handle_repos(template_vars, ['grafana'], 'disable')
+ expectCmd = ''
+ self.assertEqual(expectCmd, result)