aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.ansible-lint1
-rw-r--r--docker/base/Dockerfile.j252
-rw-r--r--docker/base/copr-rabbitmq-erlang.repo11
-rw-r--r--docker/base/docker-ce.repo6
-rw-r--r--docker/base/grafana.repo8
-rw-r--r--docker/base/influxdb.repo6
-rw-r--r--docker/base/kolla_el10.repo10
-rw-r--r--docker/base/mariadb.repo7
-rw-r--r--docker/base/opensearch.repo19
-rw-r--r--docker/base/proxysql.repo7
-rw-r--r--docker/base/rabbitmq_rabbitmq-erlang.repo9
-rw-r--r--docker/base/rabbitmq_rabbitmq-server.repo9
-rw-r--r--docker/base/td.repo7
-rw-r--r--kolla/template/methods.py136
-rw-r--r--kolla/template/repos.yaml372
-rw-r--r--kolla/tests/test_methods.py191
-rw-r--r--releasenotes/notes/repos-yaml-rpm-support-01ff7f5fc3b9ecf2.yaml5
-rw-r--r--tests/templates/template_overrides.j213
18 files changed, 541 insertions, 328 deletions
diff --git a/.ansible-lint b/.ansible-lint
index a46703146..0e5122054 100644
--- a/.ansible-lint
+++ b/.ansible-lint
@@ -2,6 +2,7 @@
exclude_paths:
- .cache/ # implicit unless exclude_paths is defined in config
- zuul.d/
+ - kolla/template/repos.yaml
offline: true
parseable: true
profile: basic
diff --git a/docker/base/Dockerfile.j2 b/docker/base/Dockerfile.j2
index e0d95ff99..3ea1e5bc6 100644
--- a/docker/base/Dockerfile.j2
+++ b/docker/base/Dockerfile.j2
@@ -54,46 +54,12 @@ COPY dnf.conf /etc/dnf/dnf.conf
{% endblock %}
#### BEGIN REPO ENABLEMENT
-{% set base_yum_repo_files = [
- 'docker-ce.repo',
- 'grafana.repo',
- 'influxdb.repo',
- 'kolla_el10.repo',
- 'mariadb.repo',
- 'opensearch.repo',
- 'proxysql.repo',
- 'rabbitmq_rabbitmq-server.repo',
- 'td.repo',
-] %}
-
{% set base_yum_url_packages = [
] %}
{% set base_yum_repo_keys = [
] %}
-{% if base_arch == 'x86_64' %}
- {% set base_yum_repo_files = base_yum_repo_files + [
- 'rabbitmq_rabbitmq-erlang.repo',
- ] %}
-
-{% elif base_arch == 'aarch64' %}
- {% set base_yum_repo_files = base_yum_repo_files + [
- 'copr-rabbitmq-erlang.repo',
- ] %}
-
-{#
-SHA1 keys are not supported in RHEL9: https://github.com/rpm-software-management/rpm/issues/1977
- 'https://packages.erlang-solutions.com/rpm/erlang_solutions.asc',
- #}
- {% set base_yum_repo_keys = base_yum_repo_keys + [
- ] %}
-{% endif %}
-
-{%- for repo_file in base_yum_repo_files | customizable('yum_repo_files') %}
-COPY {{ repo_file }} /etc/yum.repos.d/{{ repo_file }}
-{%- endfor %}
-
{% block base_centos_repo_overrides_post_copy %}{% endblock %}
# Install what is needed for en_US.UTF-8
@@ -142,24 +108,9 @@ RUN rm -f /etc/rpm/macros.image-language-conf \
{% set base_centos_yum_repo_packages = base_centos_yum_repo_packages + [
'dnf-plugins-core'
] %}
-{% set base_centos_yum_repos_to_enable = [
-] %}
-
-{% set base_centos_yum_repos_to_disable = [
- 'centos-ceph-squid',
- 'centos-nfv-openvswitch',
- 'epel',
- 'influxdb',
- 'opensearch-3.x',
- 'opensearch-dashboards-3.x',
-] %}
RUN {{ macros.install_packages(base_centos_yum_repo_packages | customizable("centos_yum_repo_packages"), chain=True, clean=False) }}
-{%- for repo in base_centos_yum_repos_to_enable | customizable('centos_yum_repos_to_enable') %} && dnf config-manager --enable {{ repo }} {% endfor -%}
-
-{%- for repo in base_centos_yum_repos_to_disable | customizable('centos_yum_repos_to_disable') %} && dnf config-manager --disable {{ repo }} {% endfor -%}
-
{%- for key in base_centos_yum_repo_keys | customizable('centos_yum_repo_keys') %} && rpm --import {{ key }} {% endfor %} \
{% block base_centos_repo_overrides_post_yum %}{% endblock -%}
&& {{ macros.rpm_security_update(clean_package_cache) }}
@@ -203,8 +154,7 @@ RUN dnf config-manager --save --setopt=*.metalink="https://mirrors.fedoraproject
# Install base packages
{{ macros.enable_extra_repos(['epel']) }}
-{{ macros.install_packages( base_centos_packages | customizable("centos_packages") | customizable("centos_binary_packages") | customizable("centos_source_packages") ) }}
-{{ macros.disable_extra_repos(['epel']) }}
+{{ macros.install_packages(base_centos_packages | customizable("centos_packages") | customizable("centos_binary_packages") | customizable("centos_source_packages")) }}
{# endif for base_package_type rpm #}
{% elif base_package_type == 'deb' %}
diff --git a/docker/base/copr-rabbitmq-erlang.repo b/docker/base/copr-rabbitmq-erlang.repo
deleted file mode 100644
index fdfbf269a..000000000
--- a/docker/base/copr-rabbitmq-erlang.repo
+++ /dev/null
@@ -1,11 +0,0 @@
-# NOTE(hrw): this repository contains rebuild of Erlang package from RabbitMQ team
-# from https://github.com/rabbitmq/erlang-rpm/
-# Thanks to COPR we have aarch64 packages for Rocky Linux
-
-[copr-rabbitmq-erlang]
-name=openstack-kolla COPR with Erlang build for RabbitMQ
-baseurl=https://download.copr.fedorainfracloud.org/results/@openstack-kolla/rabbitmq-erlang-27/rhel-$releasever-aarch64/
-gpgcheck=1
-enabled=0
-gpgkey=https://download.copr.fedorainfracloud.org/results/@openstack-kolla/rabbitmq-erlang-27/pubkey.gpg
-repo_gpgcheck=0
diff --git a/docker/base/docker-ce.repo b/docker/base/docker-ce.repo
deleted file mode 100644
index 9698823b9..000000000
--- a/docker/base/docker-ce.repo
+++ /dev/null
@@ -1,6 +0,0 @@
-[docker-ce]
-name=Docker CE Stable - $basearch
-baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/stable
-enabled=0
-gpgcheck=1
-gpgkey=https://download.docker.com/linux/centos/gpg
diff --git a/docker/base/grafana.repo b/docker/base/grafana.repo
deleted file mode 100644
index 002ac8929..000000000
--- a/docker/base/grafana.repo
+++ /dev/null
@@ -1,8 +0,0 @@
-[grafana]
-name=grafana
-baseurl=https://rpm.grafana.com
-enabled=0
-gpgcheck=1
-gpgkey=https://rpm.grafana.com/gpg.key
-sslverify=1
-sslcacert=/etc/pki/tls/certs/ca-bundle.crt
diff --git a/docker/base/influxdb.repo b/docker/base/influxdb.repo
deleted file mode 100644
index ae63c20be..000000000
--- a/docker/base/influxdb.repo
+++ /dev/null
@@ -1,6 +0,0 @@
-[influxdb]
-name = InfluxDB Repository - RHEL $releasever
-baseurl = https://repos.influxdata.com/stable/$basearch/main
-enabled = 0
-gpgcheck = 1
-gpgkey = https://repos.influxdata.com/influxdata-archive.key
diff --git a/docker/base/kolla_el10.repo b/docker/base/kolla_el10.repo
deleted file mode 100644
index b1ffee675..000000000
--- a/docker/base/kolla_el10.repo
+++ /dev/null
@@ -1,10 +0,0 @@
-[kolla_el10]
-name=Copr repo for el10-missing owned by @openstack-kolla
-baseurl=https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/epel-10-$basearch/
-type=rpm-md
-skip_if_unavailable=True
-gpgcheck=1
-gpgkey=https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/pubkey.gpg
-repo_gpgcheck=0
-enabled=0
-enabled_metadata=1
diff --git a/docker/base/mariadb.repo b/docker/base/mariadb.repo
deleted file mode 100644
index 07d97ef20..000000000
--- a/docker/base/mariadb.repo
+++ /dev/null
@@ -1,7 +0,0 @@
-[mariadb]
-name = MariaDB Server
-baseurl = https://dlm.mariadb.com/repo/mariadb-server/10.11/yum/rhel/$releasever/$basearch
-gpgcheck = 1
-enabled = 0
-module_hotfixes = 1
-gpgkey = https://downloads.mariadb.com/MariaDB/RPM-GPG-KEY-MariaDB
diff --git a/docker/base/opensearch.repo b/docker/base/opensearch.repo
deleted file mode 100644
index 63caa75f8..000000000
--- a/docker/base/opensearch.repo
+++ /dev/null
@@ -1,19 +0,0 @@
-[opensearch-3.x]
-name=OpenSearch 3.x
-baseurl=https://artifacts.opensearch.org/releases/bundle/opensearch/3.x/yum
-enabled=0
-repo_gpgcheck=1
-gpgcheck=1
-gpgkey=https://artifacts.opensearch.org/publickeys/opensearch-release.pgp
-autorefresh=1
-type=rpm-md
-
-[opensearch-dashboards-3.x]
-name=OpenSearch Dashboards 3.x
-baseurl=https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/3.x/yum
-enabled=0
-repo_gpgcheck=1
-gpgcheck=1
-gpgkey=https://artifacts.opensearch.org/publickeys/opensearch-release.pgp
-autorefresh=1
-type=rpm-md
diff --git a/docker/base/proxysql.repo b/docker/base/proxysql.repo
deleted file mode 100644
index 1bd2c55c3..000000000
--- a/docker/base/proxysql.repo
+++ /dev/null
@@ -1,7 +0,0 @@
-[proxysql]
-name = ProxySQL
-# NOTE(mnasiadka): No EL10 packages yet
-baseurl = https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/almalinux/9
-gpgkey = https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/repo_pub_key
-gpgcheck = 1
-enabled = 0
diff --git a/docker/base/rabbitmq_rabbitmq-erlang.repo b/docker/base/rabbitmq_rabbitmq-erlang.repo
deleted file mode 100644
index 82b0441e0..000000000
--- a/docker/base/rabbitmq_rabbitmq-erlang.repo
+++ /dev/null
@@ -1,9 +0,0 @@
-[rabbitmq_rabbitmq-erlang]
-name=rabbitmq_rabbitmq-erlang
-# Use a set of mirrors maintained by the RabbitMQ core team.
-# The mirrors have significantly higher bandwidth quotas.
-baseurl=https://yum1.rabbitmq.com/erlang/el/9/$basearch
- https://yum2.rabbitmq.com/erlang/el/9/$basearch
-gpgcheck=1
-enabled=0
-gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key
diff --git a/docker/base/rabbitmq_rabbitmq-server.repo b/docker/base/rabbitmq_rabbitmq-server.repo
deleted file mode 100644
index 0680c11e1..000000000
--- a/docker/base/rabbitmq_rabbitmq-server.repo
+++ /dev/null
@@ -1,9 +0,0 @@
-[rabbitmq_rabbitmq-server]
-name=rabbitmq_rabbitmq-server
-baseurl=https://yum2.rabbitmq.com/rabbitmq/el/9/noarch
- https://yum1.rabbitmq.com/rabbitmq/el/9/noarch
-gpgcheck=1
-enabled=0
-# Cloudsmith's repository key and RabbitMQ package signing key
-gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key
- https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
diff --git a/docker/base/td.repo b/docker/base/td.repo
deleted file mode 100644
index 8212817fa..000000000
--- a/docker/base/td.repo
+++ /dev/null
@@ -1,7 +0,0 @@
-[fluent-package-lts]
-name=Fluentd Project
-# NOTE(mnasiadka): Use EL9 packages for now - 10 are not available yet
-baseurl=https://packages.treasuredata.com/lts/5/redhat/9/$basearch
-gpgcheck=1
-gpgkey=https://packages.treasuredata.com/GPG-KEY-td-agent
-enabled=0
diff --git a/kolla/template/methods.py b/kolla/template/methods.py
index e9edbfeb0..388d4858f 100644
--- a/kolla/template/methods.py
+++ b/kolla/template/methods.py
@@ -10,6 +10,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from kolla.image.utils import LOG
import os
import typing as t
@@ -17,6 +18,29 @@ import yaml
from jinja2 import pass_context
+APT_ARCH = " && echo 'Architectures: {arch}' \
+>>/etc/apt/sources.list.d/{repo}.sources"
+APT_REPO = "echo 'Uris: {url}' >/etc/apt/sources.list.d/{repo}.sources && \
+echo 'Components: {component}' >>/etc/apt/sources.list.d/{repo}.sources && \
+echo 'Types: deb' >>/etc/apt/sources.list.d/{repo}.sources && \
+echo 'Suites: {suite}' >>/etc/apt/sources.list.d/{repo}.sources && \
+echo 'Signed-By: /etc/kolla/apt-keys/{gpg_key}' \
+>>/etc/apt/sources.list.d/{repo}.sources"
+DNF_BASEURL = " && echo 'baseurl={baseurl}' >>/etc/yum.repos.d/{repo}.repo"
+DNF_DISABLE = "dnf config-manager --disable {name} || true"
+DNF_ENABLE = "dnf config-manager --enable {name} || true"
+DNF_GPGCHECK = " && echo 'gpgcheck={gpgcheck}' >>/etc/yum.repos.d/{repo}.repo"
+DNF_GPGKEY = " && echo 'gpgkey={gpgkey}' >>/etc/yum.repos.d/{repo}.repo"
+DNF_GPGKEY_ADD = " && echo ' {gpgkey}' >>/etc/yum.repos.d/{repo}.repo"
+DNF_METALINK = " && echo 'metalink={metalink}' >>/etc/yum.repos.d/{repo}.repo"
+DNF_MIRRORLIST = " && \
+echo 'mirrorlist={mirrorlist}' >>/etc/yum.repos.d/{repo}.repo"
+DNF_REPO = "echo '[{name}]' >/etc/yum.repos.d/{repo}.repo && \
+echo 'name={name}' >>/etc/yum.repos.d/{repo}.repo && \
+echo 'enabled=1' >>/etc/yum.repos.d/{repo}.repo"
+DNF_REPO_GPGCHECK = " && echo 'repo_gpgcheck={repo_gpgcheck}' \
+>>/etc/yum.repos.d/{repo}.repo"
+
def debian_package_install(packages, clean_package_cache=True):
"""Jinja utility method for building debian-based package install command.
@@ -81,13 +105,6 @@ def handle_repos(context, reponames, mode):
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
-
if not isinstance(reponames, list):
raise TypeError("First argument should be a list of repositories")
@@ -104,6 +121,7 @@ def handle_repos(context, reponames, mode):
base_package_type = context.get('base_package_type')
base_distro = context.get('base_distro')
base_arch = context.get('base_arch')
+ image_name = context.get('image_name')
commands = ''
@@ -113,40 +131,82 @@ def handle_repos(context, reponames, mode):
# NOTE(hrw): Fallback to distro list
repo_list = repo_data[base_distro]
- for repo in reponames:
+ for index, repo in enumerate(reponames):
try:
+ _repo = repo_list[repo]
if base_package_type == 'rpm':
- commands += ' %s %s' % (rpm_switch, repo_list[repo])
- elif base_package_type == 'deb':
if mode == 'enable':
- commands += f"""echo 'Uris: {repo_list[repo]['url']}' \
->/etc/apt/sources.list.d/{repo}.sources \
-&& echo 'Components: {repo_list[repo]['component']}' \
->>/etc/apt/sources.list.d/{repo}.sources \
-&& echo 'Types: deb' >>/etc/apt/sources.list.d/{repo}.sources \
-&& echo 'Suites: {repo_list[repo]['suite']}' \
->>/etc/apt/sources.list.d/{repo}.sources \
-&& echo 'Signed-By: /etc/kolla/apt-keys/{repo_list[repo]['gpg_key']}' \
->>/etc/apt/sources.list.d/{repo}.sources \
-&& """
- if repo_list[repo]['arch']:
- commands += f"""echo 'Architectures: \
-{repo_list[repo]['arch']}' \
->>/etc/apt/sources.list.d/{repo}.sources \
-&& """
- except KeyError:
- # NOTE(hrw): we ignore missing repositories for a given
- # distro/arch
- pass
-
- if base_package_type == 'rpm' and commands:
- # NOTE(hrw): if commands is empty then no repos are enabled
- # otherwise we need to add command to handle repositories
- # NOTE(hrw) dnf errors out if we enable unknown repo
- commands = 'dnf config-manager %s || true' % commands
- elif base_package_type == 'deb':
- # NOTE(hrw): Debian commands end with '&&'
- commands = commands[0:-4]
+ if not _repo.get('distro'):
+ commands += DNF_REPO.format(
+ name=_repo['name'],
+ repo=repo,
+ )
+ if _repo.get('gpgcheck'):
+ commands += DNF_GPGCHECK.format(
+ gpgcheck=_repo['gpgcheck'],
+ repo=repo)
+
+ if _repo.get('repo_gpgcheck'):
+ commands += DNF_REPO_GPGCHECK.format(
+ repo_gpgcheck=_repo['repo_gpgcheck'],
+ repo=repo)
+
+ # NOTE(mnasiadka): Support multiple gpgkeys
+ gpgkeys = _repo['gpgkey'].splitlines()
+ for _, gpgkey in enumerate(gpgkeys):
+ if _ == 0:
+ commands += DNF_GPGKEY.format(gpgkey=gpgkey,
+ repo=repo)
+ else:
+ commands += DNF_GPGKEY_ADD.format(
+ gpgkey=gpgkey,
+ repo=repo)
+ else:
+ commands += DNF_ENABLE.format(name=_repo['name'])
+
+ if 'baseurl' in _repo:
+ # NOTE(mnasiadka): Support multiple baseurls
+ baseurl = _repo['baseurl'].splitlines()
+ for url in baseurl:
+ commands += DNF_BASEURL.format(baseurl=url,
+ repo=repo)
+ elif 'metalink' in _repo:
+ commands += DNF_METALINK.format(
+ metalink=_repo['metalink'], repo=repo
+ )
+
+ elif 'mirrorlist' in _repo:
+ commands += DNF_MIRRORLIST.format(
+ mirrorlist=_repo['mirrorlist'], repo=repo
+ )
+
+ if index != len(reponames) - 1:
+ commands += " && "
+
+ elif mode == 'disable' and _repo.get('distro'):
+ commands += DNF_DISABLE.format(name=_repo['name'])
+
+ elif base_package_type == "deb":
+ if mode == "enable":
+ commands += APT_REPO.format(
+ component=_repo['component'],
+ gpg_key=_repo['gpg_key'],
+ suite=_repo['suite'],
+ url=_repo['url'],
+ repo=repo,
+ )
+
+ if 'arch' in _repo:
+ commands += APT_ARCH.format(
+ arch=_repo['arch'], repo=repo
+ )
+
+ if index != len(reponames) - 1:
+ commands += ' && '
+ except KeyError as e:
+ LOG.exception("Error enabling repository %s in image %s", e,
+ image_name)
+ raise
if commands:
commands = "RUN %s" % commands
diff --git a/kolla/template/repos.yaml b/kolla/template/repos.yaml
index f45ecb3aa..b7d82c704 100644
--- a/kolla/template/repos.yaml
+++ b/kolla/template/repos.yaml
@@ -1,43 +1,157 @@
---
centos:
- ceph: "centos-ceph-squid"
- crb: "crb"
- docker-ce: "docker-ce"
- epel: "epel"
- erlang: "rabbitmq_rabbitmq-erlang"
- extras: "extras"
- fluentd: "fluent-package-lts"
- grafana: "grafana"
- hacluster: "highavailability"
- influxdb: "influxdb"
- kolla_el10: "kolla_el10"
- mariadb: "mariadb"
- opensearch: "opensearch-3.x"
- opensearch-dashboards: "opensearch-dashboards-3.x"
- openvswitch: "centos-nfv-openvswitch"
- opstools: "centos-opstools"
- proxysql: "proxysql"
- rabbitmq: "rabbitmq_rabbitmq-server"
+ ceph:
+ gpgkey: "https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-Storage"
+ metalink: "https://mirrors.centos.org/metalink?repo=centos-storage-sig-ceph-squid-9-stream&arch=$basearch"
+ name: "centos-ceph-squid"
+ crb:
+ distro: True
+ name: "crb"
+ docker-ce:
+ gpgkey: "https://download.docker.com/linux/centos/gpg"
+ baseurl: "https://download.docker.com/linux/centos/$releasever/$basearch/stable"
+ name: "docker-ce"
+ epel:
+ gpgkey: "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-$releasever"
+ metalink: "https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir"
+ name: "epel"
+ erlang:
+ baseurl: |
+ https://yum1.rabbitmq.com/erlang/el/9/$basearch
+ https://yum2.rabbitmq.com/erlang/el/9/$basearch
+ gpgkey: "https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key"
+ name: "rabbitmq_rabbitmq-erlang"
+ extras:
+ distro: True
+ name: "extras"
+ fluentd:
+ baseurl: "https://packages.treasuredata.com/lts/5/redhat/9/$basearch"
+ gpgkey: "https://packages.treasuredata.com/GPG-KEY-td-agent"
+ name: "fluent-package-lts"
+ grafana:
+ baseurl: "https://rpm.grafana.com"
+ gpgkey: "https://rpm.grafana.com/gpg.key"
+ name: "grafana"
+ hacluster:
+ name: "highavailability"
+ distro: true
+ influxdb:
+ baseurl: "https://repos.influxdata.com/rhel/9/$basearch/stable"
+ gpgkey: "https://repos.influxdata.com/influxdata-archive_compat.key"
+ name: "influxdb"
+ kolla_el10:
+ baseurl: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/epel-10-$basearch/"
+ gpgkey: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/pubkey.gpg"
+ name: "kolla_el10"
+ mariadb:
+ baseurl: "https://dlm.mariadb.com/repo/mariadb-server/10.11/yum/rhel/$releasever/$basearch"
+ gpgkey: "https://downloads.mariadb.com/MariaDB/RPM-GPG-KEY-MariaDB"
+ name: "mariadb"
+ opensearch:
+ baseurl: "https://artifacts.opensearch.org/releases/bundle/opensearch/3.x/yum"
+ gpgkey: "https://artifacts.opensearch.org/publickeys/opensearch-release.pgp"
+ repo_gpgcheck: 1
+ name: "opensearch32.x"
+ opensearch-dashboards:
+ baseurl: "https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/3.x/yum"
+ gpgkey: "https://artifacts.opensearch.org/publickeys/opensearch-release.pgp"
+ repo_gpgcheck: 1
+ name: "opensearch-dashboards-3.x"
+ openvswitch:
+ gpgkey: "https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-NFV"
+ metalink: "https://mirrors.centos.org/metalink?repo=centos-nfv-sig-openvswitch-2-$stream&arch=$basearch&protocol=https,http"
+ name: "centos-nfv-openvswitch"
+ opstools:
+ distro: True
+ name: "opstools"
+ proxysql:
+ baseurl: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/almalinux/9"
+ gpgkey: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/repo_pub_key"
+ name: "proxysql"
+ rabbitmq:
+ baseurl: |
+ https://yum1.rabbitmq.com/rabbitmq/el/9/noarch
+ https://yum2.rabbitmq.com/rabbitmq/el/9/noarch
+ gpgkey: |
+ https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key
+ https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
+ name: "rabbitmq_rabbitmq-server"
centos-aarch64:
- ceph: "centos-ceph-squid"
- crb: "crb"
- docker-ce: "docker-ce"
- epel: "epel"
- erlang: "copr-rabbitmq-erlang"
- extras: "extras"
- fluentd: "fluent-package-lts"
- grafana: "grafana"
- hacluster: "highavailability"
- influxdb: "influxdb"
- kolla_el10: "kolla_el10"
- mariadb: "mariadb"
- opensearch: "opensearch-3.x"
- opensearch-dashboards: "opensearch-dashboards-3.x"
- openvswitch: "centos-nfv-openvswitch"
- opstools: "centos-opstools"
- proxysql: "proxysql"
- rabbitmq: "rabbitmq_rabbitmq-server"
+ ceph:
+ gpgkey: "https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-Storage"
+ metalink: "https://mirrors.centos.org/metalink?repo=centos-storage-sig-ceph-squid-9-stream&arch=$basearch"
+ name: "centos-ceph-squid"
+ crb:
+ distro: True
+ name: "crb"
+ docker-ce:
+ gpgkey: "https://download.docker.com/linux/centos/gpg"
+ baseurl: "https://download.docker.com/linux/centos/$releasever/$basearch/stable"
+ name: "docker-ce"
+ epel:
+ gpgkey: "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-$releasever"
+ metalink: "https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir"
+ name: "epel"
+ erlang:
+ baseurl: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/rabbitmq-erlang-27/rhel-$releasever-aarch64/"
+ gpgkey: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/rabbitmq-erlang-27/pubkey.gpg"
+ name: "copr-rabbitmq-erlang"
+ extras:
+ distro: True
+ name: "extras"
+ fluentd:
+ baseurl: "https://packages.treasuredata.com/lts/5/redhat/9/$basearch"
+ gpgkey: "https://packages.treasuredata.com/GPG-KEY-td-agent"
+ name: "fluent-package-lts"
+ grafana:
+ baseurl: "https://rpm.grafana.com"
+ gpgkey: "https://rpm.grafana.com/gpg.key"
+ name: "grafana"
+ hacluster:
+ name: "highavailability"
+ distro: true
+ influxdb:
+ baseurl: "https://repos.influxdata.com/rhel/9/$basearch/stable"
+ gpgkey: "https://repos.influxdata.com/influxdata-archive_compat.key"
+ name: "influxdb"
+ kolla_el10:
+ baseurl: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/epel-10-$basearch/"
+ gpgkey: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/pubkey.gpg"
+ name: "kolla_el10"
+ mariadb:
+ baseurl: "https://dlm.mariadb.com/repo/mariadb-server/10.11/yum/rhel/$releasever/$basearch"
+ gpgkey: "https://downloads.mariadb.com/MariaDB/RPM-GPG-KEY-MariaDB"
+ name: "mariadb"
+ opensearch:
+ baseurl: "https://artifacts.opensearch.org/releases/bundle/opensearch/3.x/yum"
+ gpgkey: "https://artifacts.opensearch.org/publickeys/opensearch-release.pgp"
+ repo_gpgcheck: 1
+ name: "opensearch32.x"
+ opensearch-dashboards:
+ baseurl: "https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/3.x/yum"
+ gpgkey: "https://artifacts.opensearch.org/publickeys/opensearch-release.pgp"
+ repo_gpgcheck: 1
+ name: "opensearch-dashboards-3.x"
+ openvswitch:
+ gpgkey: "https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-NFV"
+ metalink: "https://mirrors.centos.org/metalink?repo=centos-nfv-sig-openvswitch-2-$stream&arch=$basearch&protocol=https,http"
+ name: "centos-nfv-openvswitch"
+ opstools:
+ distro: True
+ name: "opstools"
+ proxysql:
+ baseurl: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/almalinux/9"
+ gpgkey: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/repo_pub_key"
+ name: "proxysql"
+ rabbitmq:
+ baseurl: |
+ https://yum1.rabbitmq.com/rabbitmq/el/9/noarch
+ https://yum2.rabbitmq.com/rabbitmq/el/9/noarch
+ gpgkey: |
+ https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key
+ https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
+ name: "rabbitmq_rabbitmq-server"
# NOTE(mnasiadka): For RabbitMQ Debuntu suite names is following:
# https://www.rabbitmq.com/install-debian.html#apt-cloudsmith
@@ -150,44 +264,158 @@ debian-aarch64:
gpg_key: "rabbitmq.gpg"
rocky:
- ceph: "centos-ceph-squid"
- crb: "crb"
- docker-ce: "docker-ce"
- epel: "epel"
- erlang: "rabbitmq_rabbitmq-erlang"
- extras: "extras"
- fluentd: "fluent-package-lts"
- grafana: "grafana"
- hacluster: "highavailability"
- influxdb: "influxdb"
- kolla_el10: "kolla_el10"
- mariadb: "mariadb"
- opensearch: "opensearch-3.x"
- opensearch-dashboards: "opensearch-dashboards-3.x"
- openvswitch: "centos-nfv-openvswitch"
- opstools: "centos-opstools"
- proxysql: "proxysql"
- rabbitmq: "rabbitmq_rabbitmq-server"
+ ceph:
+ gpgkey: "https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-Storage"
+ metalink: "https://mirrors.centos.org/metalink?repo=centos-storage-sig-ceph-squid-9-stream&arch=$basearch"
+ name: "centos-ceph-squid"
+ crb:
+ distro: True
+ name: "crb"
+ docker-ce:
+ gpgkey: "https://download.docker.com/linux/centos/gpg"
+ baseurl: "https://download.docker.com/linux/centos/$releasever/$basearch/stable"
+ name: "docker-ce"
+ epel:
+ gpgkey: "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-$releasever"
+ metalink: "https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir"
+ name: "epel"
+ erlang:
+ baseurl: |
+ https://yum1.rabbitmq.com/erlang/el/9/$basearch
+ https://yum2.rabbitmq.com/erlang/el/9/$basearch
+ gpgkey: "https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key"
+ name: "rabbitmq_rabbitmq-erlang"
+ extras:
+ distro: True
+ name: "extras"
+ fluentd:
+ baseurl: "https://packages.treasuredata.com/lts/5/redhat/9/$basearch"
+ gpgkey: "https://packages.treasuredata.com/GPG-KEY-td-agent"
+ name: "fluent-package-lts"
+ grafana:
+ baseurl: "https://rpm.grafana.com"
+ gpgkey: "https://rpm.grafana.com/gpg.key"
+ name: "grafana"
+ hacluster:
+ name: "highavailability"
+ distro: true
+ influxdb:
+ baseurl: "https://repos.influxdata.com/rhel/9/$basearch/stable"
+ gpgkey: "https://repos.influxdata.com/influxdata-archive_compat.key"
+ name: "influxdb"
+ kolla_el10:
+ baseurl: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/epel-10-$basearch/"
+ gpgkey: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/pubkey.gpg"
+ name: "kolla_el10"
+ mariadb:
+ baseurl: "https://dlm.mariadb.com/repo/mariadb-server/10.11/yum/rhel/$releasever/$basearch"
+ gpgkey: "https://downloads.mariadb.com/MariaDB/RPM-GPG-KEY-MariaDB"
+ name: "mariadb"
+ opensearch:
+ baseurl: "https://artifacts.opensearch.org/releases/bundle/opensearch/3.x/yum"
+ gpgkey: "https://artifacts.opensearch.org/publickeys/opensearch-release.pgp"
+ repo_gpgcheck: 1
+ name: "opensearch32.x"
+ opensearch-dashboards:
+ baseurl: "https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/3.x/yum"
+ gpgkey: "https://artifacts.opensearch.org/publickeys/opensearch-release.pgp"
+ repo_gpgcheck: 1
+ name: "opensearch-dashboards-3.x"
+ openvswitch:
+ gpgkey: "https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-NFV"
+ metalink: "https://mirrors.centos.org/metalink?repo=centos-nfv-sig-openvswitch-2-$stream&arch=$basearch&protocol=https,http"
+ name: "centos-nfv-openvswitch"
+ opstools:
+ distro: True
+ name: "opstools"
+ proxysql:
+ baseurl: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/almalinux/9"
+ gpgkey: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/repo_pub_key"
+ name: "proxysql"
+ rabbitmq:
+ baseurl: |
+ https://yum1.rabbitmq.com/rabbitmq/el/9/noarch
+ https://yum2.rabbitmq.com/rabbitmq/el/9/noarch
+ gpgkey: |
+ https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key
+ https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
+ name: "rabbitmq_rabbitmq-server"
rocky-aarch64:
- ceph: "centos-ceph-squid"
- crb: "crb"
- docker-ce: "docker-ce"
- epel: "epel"
- erlang: "copr-rabbitmq-erlang"
- extras: "extras"
- fluentd: "fluent-package-lts"
- grafana: "grafana"
- influxdb: "influxdb"
- kolla_el10: "kolla_el10"
- hacluster: "highavailability"
- mariadb: "mariadb"
- opensearch: "opensearch-3.x"
- opensearch-dashboards: "opensearch-dashboards-3.x"
- openvswitch: "centos-nfv-openvswitch"
- opstools: "centos-opstools"
- proxysql: "proxysql"
- rabbitmq: "rabbitmq_rabbitmq-server"
+ ceph:
+ gpgkey: "https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-Storage"
+ metalink: "https://mirrors.centos.org/metalink?repo=centos-storage-sig-ceph-squid-9-stream&arch=$basearch"
+ name: "centos-ceph-squid"
+ crb:
+ distro: True
+ name: "crb"
+ docker-ce:
+ gpgkey: "https://download.docker.com/linux/centos/gpg"
+ baseurl: "https://download.docker.com/linux/centos/$releasever/$basearch/stable"
+ name: "docker-ce"
+ epel:
+ gpgkey: "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-$releasever"
+ metalink: "https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir"
+ name: "epel"
+ erlang:
+ baseurl: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/rabbitmq-erlang-27/rhel-$releasever-aarch64/"
+ gpgkey: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/rabbitmq-erlang-27/pubkey.gpg"
+ name: "copr-rabbitmq-erlang"
+ extras:
+ distro: True
+ name: "extras"
+ fluentd:
+ baseurl: "https://packages.treasuredata.com/lts/5/redhat/9/$basearch"
+ gpgkey: "https://packages.treasuredata.com/GPG-KEY-td-agent"
+ name: "fluent-package-lts"
+ grafana:
+ baseurl: "https://rpm.grafana.com"
+ gpgkey: "https://rpm.grafana.com/gpg.key"
+ name: "grafana"
+ hacluster:
+ name: "highavailability"
+ distro: true
+ influxdb:
+ baseurl: "https://repos.influxdata.com/rhel/9/$basearch/stable"
+ gpgkey: "https://repos.influxdata.com/influxdata-archive_compat.key"
+ name: "influxdb"
+ kolla_el10:
+ baseurl: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/epel-10-$basearch/"
+ gpgkey: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/pubkey.gpg"
+ name: "kolla_el10"
+ mariadb:
+ baseurl: "https://dlm.mariadb.com/repo/mariadb-server/10.11/yum/rhel/$releasever/$basearch"
+ gpgkey: "https://downloads.mariadb.com/MariaDB/RPM-GPG-KEY-MariaDB"
+ name: "mariadb"
+ opensearch:
+ baseurl: "https://artifacts.opensearch.org/releases/bundle/opensearch/3.x/yum"
+ gpgkey: "https://artifacts.opensearch.org/publickeys/opensearch-release.pgp"
+ repo_gpgcheck: 1
+ name: "opensearch32.x"
+ opensearch-dashboards:
+ baseurl: "https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/3.x/yum"
+ gpgkey: "https://artifacts.opensearch.org/publickeys/opensearch-release.pgp"
+ repo_gpgcheck: 1
+ name: "opensearch-dashboards-3.x"
+ openvswitch:
+ gpgkey: "https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-NFV"
+ metalink: "https://mirrors.centos.org/metalink?repo=centos-nfv-sig-openvswitch-2-$stream&arch=$basearch&protocol=https,http"
+ name: "centos-nfv-openvswitch"
+ opstools:
+ distro: True
+ name: "opstools"
+ proxysql:
+ baseurl: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/almalinux/9"
+ gpgkey: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/repo_pub_key"
+ name: "proxysql"
+ rabbitmq:
+ baseurl: |
+ https://yum1.rabbitmq.com/rabbitmq/el/9/noarch
+ https://yum2.rabbitmq.com/rabbitmq/el/9/noarch
+ gpgkey: |
+ https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key
+ https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
+ name: "rabbitmq_rabbitmq-server"
ubuntu:
docker-ce:
diff --git a/kolla/tests/test_methods.py b/kolla/tests/test_methods.py
index 395dadd4e..6559c5d4d 100644
--- a/kolla/tests/test_methods.py
+++ b/kolla/tests/test_methods.py
@@ -22,50 +22,155 @@ class MethodsTest(base.TestCase):
expectCmd = 'apt-get -y install --no-install-recommends package2.deb'
self.assertEqual(expectCmd, result.split("&&")[1].strip())
- def test_enable_repos_centos(self):
+ def test_enable_repos_centos_baseurl(self):
template_vars = {
'base_arch': 'x86_64',
'base_distro': 'centos',
'base_package_type': 'rpm',
}
- result = methods.handle_repos(template_vars, ['grafana'], 'enable')
- expectCmd = 'RUN dnf config-manager --enable grafana || true'
+ result = methods.handle_repos(template_vars, ["grafana"], "enable")
+ expectCmd = "RUN echo '[grafana]' "
+ expectCmd += ">/etc/yum.repos.d/grafana.repo && "
+ expectCmd += "echo 'name=grafana' "
+ expectCmd += ">>/etc/yum.repos.d/grafana.repo && "
+ expectCmd += "echo 'enabled=1' "
+ expectCmd += ">>/etc/yum.repos.d/grafana.repo && "
+ expectCmd += "echo 'gpgkey=https://rpm.grafana.com/gpg.key' "
+ expectCmd += ">>/etc/yum.repos.d/grafana.repo && "
+ expectCmd += "echo 'baseurl=https://rpm.grafana.com' "
+ expectCmd += ">>/etc/yum.repos.d/grafana.repo"
self.assertEqual(expectCmd, result)
- def test_enable_repos_centos_missing_repo(self):
+ def test_enable_repos_centos_metalink(self):
template_vars = {
'base_arch': 'x86_64',
'base_distro': 'centos',
'base_package_type': 'rpm',
}
- result = methods.handle_repos(template_vars, ['missing_repo'],
- 'enable')
- expectCmd = ''
+ result = methods.handle_repos(template_vars, ["ceph"], "enable")
+ expectCmd = "RUN echo '[centos-ceph-squid]' "
+ expectCmd += ">/etc/yum.repos.d/ceph.repo && "
+ expectCmd += "echo 'name=centos-ceph-squid' "
+ expectCmd += ">>/etc/yum.repos.d/ceph.repo && "
+ expectCmd += "echo 'enabled=1' "
+ expectCmd += ">>/etc/yum.repos.d/ceph.repo && "
+ expectCmd += "echo 'gpgkey=https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-Storage' " # noqa: E501
+ expectCmd += ">>/etc/yum.repos.d/ceph.repo && "
+ expectCmd += "echo 'metalink=https://mirrors.centos.org/metalink?repo=centos-storage-sig-ceph-squid-9-stream&arch=$basearch' " # noqa: E501
+ expectCmd += ">>/etc/yum.repos.d/ceph.repo"
+ self.assertEqual(expectCmd, result)
+
+ def test_enable_repos_centos_arch(self):
+ template_vars = {
+ "base_arch": "aarch64",
+ "base_distro": "centos",
+ "base_package_type": "rpm",
+ }
+
+ result = methods.handle_repos(template_vars, ["grafana"], "enable")
+ expectCmd = "RUN echo '[grafana]' "
+ expectCmd += ">/etc/yum.repos.d/grafana.repo && "
+ expectCmd += "echo 'name=grafana' "
+ expectCmd += ">>/etc/yum.repos.d/grafana.repo && "
+ expectCmd += "echo 'enabled=1' "
+ expectCmd += ">>/etc/yum.repos.d/grafana.repo && "
+ expectCmd += "echo 'gpgkey=https://rpm.grafana.com/gpg.key' "
+ expectCmd += ">>/etc/yum.repos.d/grafana.repo && "
+ expectCmd += "echo 'baseurl=https://rpm.grafana.com' "
+ expectCmd += ">>/etc/yum.repos.d/grafana.repo"
self.assertEqual(expectCmd, result)
def test_enable_repos_centos_multiple(self):
template_vars = {
- 'base_arch': 'x86_64',
- 'base_distro': 'centos',
- 'base_package_type': 'rpm',
+ "base_arch": "x86_64",
+ "base_distro": "centos",
+ "base_package_type": "rpm",
+ }
+
+ result = methods.handle_repos(template_vars,
+ ["grafana", "rabbitmq"], "enable")
+ expectCmd = "RUN echo '[grafana]' "
+ expectCmd += ">/etc/yum.repos.d/grafana.repo && "
+ expectCmd += "echo 'name=grafana' "
+ expectCmd += ">>/etc/yum.repos.d/grafana.repo && "
+ expectCmd += "echo 'enabled=1' "
+ expectCmd += ">>/etc/yum.repos.d/grafana.repo && "
+ expectCmd += "echo 'gpgkey=https://rpm.grafana.com/gpg.key' "
+ expectCmd += ">>/etc/yum.repos.d/grafana.repo && "
+ expectCmd += "echo 'baseurl=https://rpm.grafana.com' "
+ expectCmd += ">>/etc/yum.repos.d/grafana.repo && "
+
+ expectCmd += "echo '[rabbitmq_rabbitmq-server]' "
+ expectCmd += ">/etc/yum.repos.d/rabbitmq.repo && "
+ expectCmd += "echo 'name=rabbitmq_rabbitmq-server' "
+ expectCmd += ">>/etc/yum.repos.d/rabbitmq.repo && "
+ expectCmd += "echo 'enabled=1' "
+ expectCmd += ">>/etc/yum.repos.d/rabbitmq.repo && "
+ expectCmd += "echo 'gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key' " # noqa
+ expectCmd += ">>/etc/yum.repos.d/rabbitmq.repo && "
+ expectCmd += "echo ' https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc' " # noqa
+ expectCmd += ">>/etc/yum.repos.d/rabbitmq.repo && "
+ expectCmd += "echo 'baseurl=https://yum1.rabbitmq.com/rabbitmq/el/9/noarch' " # noqa
+ expectCmd += ">>/etc/yum.repos.d/rabbitmq.repo && "
+ expectCmd += "echo 'baseurl=https://yum2.rabbitmq.com/rabbitmq/el/9/noarch' " # noqa
+ expectCmd += ">>/etc/yum.repos.d/rabbitmq.repo"
+ self.assertEqual(expectCmd, result)
+
+ def test_enable_repos_centos_distro_enable(self):
+ template_vars = {
+ "base_arch": "x86_64",
+ "base_distro": "centos",
+ "base_package_type": "rpm",
}
- result = methods.handle_repos(template_vars, ['grafana', 'ceph'],
- 'enable')
- expectCmd = 'RUN dnf config-manager --enable grafana '
- expectCmd += '--enable centos-ceph-squid || true'
+ result = methods.handle_repos(template_vars,
+ ['crb'], 'enable')
+ expectCmd = "RUN dnf config-manager --enable crb || true"
+ self.assertEqual(expectCmd, result)
+
+ def test_enable_repos_centos_distro_disable(self):
+ template_vars = {
+ "base_arch": "x86_64",
+ "base_distro": "centos",
+ "base_package_type": "rpm",
+ }
+
+ result = methods.handle_repos(template_vars, ['crb'], 'disable')
+ expectCmd = "RUN dnf config-manager --disable crb || true"
+ self.assertEqual(expectCmd, result)
+
+ def test_enable_repos_centos_distro_enable_multiple(self):
+ template_vars = {
+ "base_arch": "x86_64",
+ "base_distro": "centos",
+ "base_package_type": "rpm",
+ }
+
+ result = methods.handle_repos(template_vars,
+ ['crb', 'grafana'], 'enable')
+ expectCmd = "RUN dnf config-manager --enable crb || true && "
+ expectCmd += "echo '[grafana]' "
+ expectCmd += ">/etc/yum.repos.d/grafana.repo && "
+ expectCmd += "echo 'name=grafana' "
+ expectCmd += ">>/etc/yum.repos.d/grafana.repo && "
+ expectCmd += "echo 'enabled=1' "
+ expectCmd += ">>/etc/yum.repos.d/grafana.repo && "
+ expectCmd += "echo 'gpgkey=https://rpm.grafana.com/gpg.key' "
+ expectCmd += ">>/etc/yum.repos.d/grafana.repo && "
+ expectCmd += "echo 'baseurl=https://rpm.grafana.com' "
+ expectCmd += ">>/etc/yum.repos.d/grafana.repo"
self.assertEqual(expectCmd, result)
def test_enable_repos_debian(self):
template_vars = {
- 'base_arch': 'x86_64',
- 'base_distro': 'debian',
- 'base_package_type': 'deb'
+ "base_arch": "x86_64",
+ "base_distro": "debian",
+ "base_package_type": "deb",
}
- result = methods.handle_repos(template_vars, ['grafana'], 'enable')
+ result = methods.handle_repos(template_vars, ["grafana"], "enable")
expectCmd = "RUN echo 'Uris: https://apt.grafana.com' "
expectCmd += ">/etc/apt/sources.list.d/grafana.sources && "
expectCmd += "echo 'Components: main' "
@@ -82,10 +187,10 @@ class MethodsTest(base.TestCase):
template_vars = {
'base_arch': 'aarch64',
'base_distro': 'debian',
- 'base_package_type': 'deb'
+ 'base_package_type': 'deb',
}
- result = methods.handle_repos(template_vars, ['rabbitmq'], 'enable')
+ result = methods.handle_repos(template_vars, ["rabbitmq"], "enable")
expectCmd = "RUN echo 'Uris: https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian' " # noqa: E501
expectCmd += ">/etc/apt/sources.list.d/rabbitmq.sources && "
expectCmd += "echo 'Components: main' "
@@ -104,23 +209,21 @@ class MethodsTest(base.TestCase):
template_vars = {
'base_arch': 'x86_64',
'base_distro': 'debian',
- 'base_package_type': 'deb'
+ 'base_package_type': 'deb',
}
- result = methods.handle_repos(template_vars, ['missing_repo'],
- 'enable')
- expectCmd = ''
- self.assertEqual(expectCmd, result)
+ self.assertRaises(KeyError, methods.handle_repos, template_vars,
+ ['missing_repo'], 'enable')
def test_enable_repos_debian_multiple(self):
template_vars = {
'base_arch': 'x86_64',
'base_distro': 'debian',
- 'base_package_type': 'deb'
+ 'base_package_type': 'deb',
}
- result = methods.handle_repos(template_vars, ['grafana', 'rabbitmq'],
- 'enable')
+ result = methods.handle_repos(template_vars,
+ ['grafana', 'rabbitmq'], 'enable')
expectCmd = "RUN echo 'Uris: https://apt.grafana.com' "
expectCmd += ">/etc/apt/sources.list.d/grafana.sources && "
expectCmd += "echo 'Components: main' "
@@ -146,47 +249,23 @@ class MethodsTest(base.TestCase):
self.assertEqual(expectCmd, result)
- def test_disable_repos_centos(self):
- template_vars = {
- 'base_arch': 'x86_64',
- 'base_distro': 'centos',
- 'base_package_type': 'rpm',
- }
-
- result = methods.handle_repos(template_vars, ['grafana'], 'disable')
- expectCmd = 'RUN dnf config-manager --disable grafana || true'
- self.assertEqual(expectCmd, result)
-
- def test_disable_repos_centos_multiple(self):
- template_vars = {
- 'base_arch': 'x86_64',
- 'base_distro': 'centos',
- 'base_package_type': 'rpm',
- }
-
- result = methods.handle_repos(template_vars, ['grafana', 'ceph'],
- 'disable')
- expectCmd = 'RUN dnf config-manager --disable grafana '
- expectCmd += '--disable centos-ceph-squid || true'
- 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'
+ 'base_package_type': 'deb',
}
- result = methods.handle_repos(template_vars, ['grafana'], 'disable')
- expectCmd = ''
+ result = methods.handle_repos(template_vars, ["grafana"], "disable")
+ expectCmd = ""
self.assertEqual(expectCmd, result)
def test_handle_repos_string(self):
template_vars = {
'base_arch': 'x86_64',
'base_distro': 'debian',
- 'base_package_type': 'deb'
+ 'base_package_type': 'deb',
}
self.assertRaisesRegex(TypeError,
diff --git a/releasenotes/notes/repos-yaml-rpm-support-01ff7f5fc3b9ecf2.yaml b/releasenotes/notes/repos-yaml-rpm-support-01ff7f5fc3b9ecf2.yaml
new file mode 100644
index 000000000..b3815928f
--- /dev/null
+++ b/releasenotes/notes/repos-yaml-rpm-support-01ff7f5fc3b9ecf2.yaml
@@ -0,0 +1,5 @@
+---
+features:
+ - |
+ Adds support for configuring RPM distributions repositories
+ using ``repos.yaml`` functionality.
diff --git a/tests/templates/template_overrides.j2 b/tests/templates/template_overrides.j2
index 003e8005b..d9d89b3e0 100644
--- a/tests/templates/template_overrides.j2
+++ b/tests/templates/template_overrides.j2
@@ -65,18 +65,7 @@ RUN if [ -f /usr/etc/npmrc ]; then \
fi \
&& rm -f /etc/npmrc
-{% if base_distro in ['centos', 'rocky'] %}
-{# NOTE(hrw): Some images have two footer blocks.
- For example neutron-infobox-ipam-agent being
- child of neutron-server.
-#}
-RUN if [ -d /etc/yum.repos.d/not-for-ci/ ]; then \
- cd /etc/yum.repos.d/ && \
- rm ci-{{ base_distro }}.repo && \
- mv not-for-ci/*.repo . && \
- rm -rf not-for-ci; \
- fi;
-{% elif base_distro == "debian" %}
+{% if base_distro == "debian" %}
RUN sed -i -e "s|\[trusted=yes\] http://{{ nodepool_mirror_host }}|http://deb.debian.org|" \
-e "s|\[trusted=yes\] http://{{ nodepool_mirror_host }}|http://security.debian.org|" \
/etc/apt/sources.list