diff options
| author | Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org> | 2020-01-02 09:56:10 +0100 |
|---|---|---|
| committer | Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org> | 2020-01-02 09:58:58 +0100 |
| commit | 2c2951b59b6e91c8f0ea6a82c1b3a9b16e1c02f7 (patch) | |
| tree | 65792c94c4cb996657aa60590b8066dc9703607a | |
| parent | 90babe35d0e075ad15904bb2263e1dd019f10532 (diff) | |
| download | kolla-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.j2 | 1 | ||||
| -rw-r--r-- | docker/collectd/Dockerfile.j2 | 4 | ||||
| -rw-r--r-- | docker/macros.j2 | 8 | ||||
| -rw-r--r-- | docker/qdrouterd/Dockerfile.j2 | 2 | ||||
| -rwxr-xr-x | kolla/image/build.py | 2 | ||||
| -rw-r--r-- | kolla/template/methods.py | 17 | ||||
| -rw-r--r-- | kolla/template/repos.yaml | 9 | ||||
| -rw-r--r-- | kolla/tests/test_methods.py | 56 |
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) |
