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 /kolla | |
| 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
Diffstat (limited to 'kolla')
| -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 |
4 files changed, 72 insertions, 12 deletions
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) |
